panfrost: Implement rasterizer discard
D'aww, look how cute that is now that scoreboarding is setup. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
26c5a145a7
commit
cd5d618b5c
|
@ -1338,12 +1338,22 @@ panfrost_queue_draw(struct panfrost_context *ctx)
|
||||||
/* Handle dirty flags now */
|
/* Handle dirty flags now */
|
||||||
panfrost_emit_for_draw(ctx, true);
|
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 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);
|
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);
|
panfrost_scoreboard_queue_fused_job_prepend(batch, vertex, tiler);
|
||||||
else
|
else
|
||||||
panfrost_scoreboard_queue_fused_job(batch, vertex, tiler);
|
panfrost_scoreboard_queue_fused_job(batch, vertex, tiler);
|
||||||
|
|
Loading…
Reference in New Issue