[libdrm,3/9] panfrost/midgard: Figure out job requirements in pan_job.c

Submitted by Rohan Garg on June 12, 2019, 11:24 a.m.

Details

Message ID 20190612112439.7483-4-rohan.garg@collabora.com
State New
Headers show
Series "panfrost/midgard: Refactor pan_context" ( rev: 1 ) in Mesa

Not browsing as part of any series.

Commit Message

Rohan Garg June 12, 2019, 11:24 a.m.
Requirements for a job should be figured out in pan_job.c
---
 src/gallium/drivers/panfrost/pan_context.c |  8 +-------
 src/gallium/drivers/panfrost/pan_job.c     | 11 +++++++++++
 src/gallium/drivers/panfrost/pan_job.h     |  4 ++++
 3 files changed, 16 insertions(+), 7 deletions(-)

Patch hide | download patch | download mbox

diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index d6a54f9a9f5..4c53b2d58f5 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -921,13 +921,7 @@  panfrost_emit_for_draw(struct panfrost_context *ctx, bool with_vertex_data)
                 SET_BIT(ctx->fragment_shader_core.unknown2_4, MALI_NO_MSAA, !msaa);
         }
 
-        /* Enable job requirements at draw-time */
-
-        if (msaa)
-                job->requirements |= PAN_REQ_MSAA;
-
-        if (ctx->depth_stencil->depth.writemask)
-                job->requirements |= PAN_REQ_DEPTH_WRITE;
+        panfrost_job_set_requirements(ctx, job);
 
         if (ctx->occlusion_query) {
                 ctx->payload_tiler.gl_enables |= MALI_OCCLUSION_QUERY | MALI_OCCLUSION_PRECISE;
diff --git a/src/gallium/drivers/panfrost/pan_job.c b/src/gallium/drivers/panfrost/pan_job.c
index 333c9f1f147..0083ca6499e 100644
--- a/src/gallium/drivers/panfrost/pan_job.c
+++ b/src/gallium/drivers/panfrost/pan_job.c
@@ -164,6 +164,17 @@  panfrost_job_submit(struct panfrost_context *ctx, struct panfrost_job *job)
         ctx->tiler_job_count = 0;
 }
 
+void
+panfrost_job_set_requirements(struct panfrost_context *ctx,
+                         struct panfrost_job *job)
+{
+        if (ctx->rasterizer->base.multisample)
+                job->requirements |= PAN_REQ_MSAA;
+
+        if (ctx->depth_stencil->depth.writemask)
+                job->requirements |= PAN_REQ_DEPTH_WRITE;
+}
+
 void
 panfrost_flush_jobs_reading_resource(struct panfrost_context *panfrost,
                                 struct pipe_resource *prsc)
diff --git a/src/gallium/drivers/panfrost/pan_job.h b/src/gallium/drivers/panfrost/pan_job.h
index afc9ac4e58f..cbfd6cb0c7f 100644
--- a/src/gallium/drivers/panfrost/pan_job.h
+++ b/src/gallium/drivers/panfrost/pan_job.h
@@ -90,4 +90,8 @@  panfrost_flush_jobs_reading_resource(struct panfrost_context *panfrost,
 
 void
 panfrost_job_submit(struct panfrost_context *ctx, struct panfrost_job *job);
+
+void
+panfrost_job_set_requirements(struct panfrost_context *ctx,
+                         struct panfrost_job *job);
 #endif