From f5412409dbc8f3324c36f0ceaf488850d381ca89 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 9 Dec 2021 19:05:28 -0500 Subject: [PATCH] panfrost: Extract panfrost_batch_skip_rasterization Signed-off-by: Alyssa Rosenzweig Part-of: --- src/gallium/drivers/panfrost/pan_cmdstream.c | 2 +- src/gallium/drivers/panfrost/pan_job.c | 14 ++++++++++++++ src/gallium/drivers/panfrost/pan_job.h | 3 +++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index e3602619516..7c6f7c5adf3 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -2325,7 +2325,7 @@ panfrost_emit_vertex_tiler_jobs(struct panfrost_batch *batch, batch->indirect_draw_job_id : 0, 0, vertex_job, false); - if (ctx->rasterizer->base.rasterizer_discard || batch->scissor_culls_everything) + if (panfrost_batch_skip_rasterization(batch)) return; panfrost_add_job(&batch->pool.base, &batch->scoreboard, diff --git a/src/gallium/drivers/panfrost/pan_job.c b/src/gallium/drivers/panfrost/pan_job.c index ebf42cbfc82..d0a4516879f 100644 --- a/src/gallium/drivers/panfrost/pan_job.c +++ b/src/gallium/drivers/panfrost/pan_job.c @@ -901,3 +901,17 @@ panfrost_batch_union_scissor(struct panfrost_batch *batch, batch->maxx = MAX2(batch->maxx, maxx); batch->maxy = MAX2(batch->maxy, maxy); } + +/** + * Checks if rasterization should be skipped. If not, a TILER job must be + * created for each draw, or the IDVS flow must be used. + */ +bool +panfrost_batch_skip_rasterization(struct panfrost_batch *batch) +{ + struct panfrost_context *ctx = batch->ctx; + struct pipe_rasterizer_state *rast = (void *) ctx->rasterizer; + + return (rast->rasterizer_discard || + batch->scissor_culls_everything); +} diff --git a/src/gallium/drivers/panfrost/pan_job.h b/src/gallium/drivers/panfrost/pan_job.h index 32ba7be754e..03f6337f9e4 100644 --- a/src/gallium/drivers/panfrost/pan_job.h +++ b/src/gallium/drivers/panfrost/pan_job.h @@ -195,4 +195,7 @@ panfrost_batch_union_scissor(struct panfrost_batch *batch, unsigned minx, unsigned miny, unsigned maxx, unsigned maxy); +bool +panfrost_batch_skip_rasterization(struct panfrost_batch *batch); + #endif