From: Alyssa Rosenzweig Date: Thu, 20 Jun 2019 22:25:17 +0000 (-0700) Subject: panfrost: Implement rasterizer discard X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cd5d618b5ccf1ff847de4d0203830f9ad81862c7;p=mesa.git panfrost: Implement rasterizer discard D'aww, look how cute that is now that scoreboarding is setup. Signed-off-by: Alyssa Rosenzweig --- diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index 6257ffe2ac4..a803a8b68cb 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -1338,12 +1338,22 @@ panfrost_queue_draw(struct panfrost_context *ctx) /* Handle dirty flags now */ panfrost_emit_for_draw(ctx, true); + /* If rasterizer discard is enable, only submit the vertex */ + + bool rasterizer_discard = ctx->rasterizer + && ctx->rasterizer->base.rasterizer_discard; + struct panfrost_transfer vertex = panfrost_vertex_tiler_job(ctx, false); - struct panfrost_transfer tiler = panfrost_vertex_tiler_job(ctx, true); + struct panfrost_transfer tiler; + + if (!rasterizer_discard) + tiler = panfrost_vertex_tiler_job(ctx, true); struct panfrost_job *batch = panfrost_get_job_for_fbo(ctx); - if (ctx->wallpaper_batch) + if (rasterizer_discard) + panfrost_scoreboard_queue_vertex_job(batch, vertex, FALSE); + else if (ctx->wallpaper_batch) panfrost_scoreboard_queue_fused_job_prepend(batch, vertex, tiler); else panfrost_scoreboard_queue_fused_job(batch, vertex, tiler);