Mesa (master): panfrost: Draw the wallpaper when only depth/stencil bufs are cleared
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Oct 8 08:22:53 UTC 2019
Module: Mesa
Branch: master
Commit: 71eda74f7c8c9536f231bc7dc92f3ddfae83ad00
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=71eda74f7c8c9536f231bc7dc92f3ddfae83ad00
Author: Boris Brezillon <boris.brezillon at collabora.com>
Date: Fri Sep 20 08:55:54 2019 +0200
panfrost: Draw the wallpaper when only depth/stencil bufs are cleared
When only the depth/stencil bufs are cleared, we should make sure the
color content is reloaded into the tile buffers if we want to preserve
their content.
Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
---
.gitlab-ci/deqp-panfrost-t760-fails.txt | 1 -
.gitlab-ci/deqp-panfrost-t860-fails.txt | 1 -
src/gallium/drivers/panfrost/pan_context.c | 2 +-
src/gallium/drivers/panfrost/pan_job.c | 16 ++++++++++++++--
4 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/.gitlab-ci/deqp-panfrost-t760-fails.txt b/.gitlab-ci/deqp-panfrost-t760-fails.txt
index 8ce1e424680..c2a2ef73e9d 100644
--- a/.gitlab-ci/deqp-panfrost-t760-fails.txt
+++ b/.gitlab-ci/deqp-panfrost-t760-fails.txt
@@ -935,7 +935,6 @@ dEQP-GLES2.functional.fragment_ops.random.92 Fail
dEQP-GLES2.functional.fragment_ops.random.96 Fail
dEQP-GLES2.functional.fragment_ops.random.99 Fail
dEQP-GLES2.functional.fragment_ops.random.9 Fail
-dEQP-GLES2.functional.polygon_offset.default_factor_1_slope Fail
dEQP-GLES2.functional.polygon_offset.default_render_with_units Fail
dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope Fail
dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units Fail
diff --git a/.gitlab-ci/deqp-panfrost-t860-fails.txt b/.gitlab-ci/deqp-panfrost-t860-fails.txt
index fbafe8eedc9..91c1f14ce1a 100644
--- a/.gitlab-ci/deqp-panfrost-t860-fails.txt
+++ b/.gitlab-ci/deqp-panfrost-t860-fails.txt
@@ -714,7 +714,6 @@ dEQP-GLES2.functional.fragment_ops.random.75 Fail
dEQP-GLES2.functional.fragment_ops.random.81 Fail
dEQP-GLES2.functional.fragment_ops.random.87 Fail
dEQP-GLES2.functional.fragment_ops.random.96 Fail
-dEQP-GLES2.functional.polygon_offset.default_factor_1_slope Fail
dEQP-GLES2.functional.polygon_offset.default_render_with_units Fail
dEQP-GLES2.functional.polygon_offset.fixed16_factor_1_slope Fail
dEQP-GLES2.functional.polygon_offset.fixed16_render_with_units Fail
diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c
index b8edf302803..bb605280c36 100644
--- a/src/gallium/drivers/panfrost/pan_context.c
+++ b/src/gallium/drivers/panfrost/pan_context.c
@@ -1334,7 +1334,7 @@ panfrost_queue_draw(struct panfrost_context *ctx)
if (rasterizer_discard)
panfrost_scoreboard_queue_vertex_job(batch, vertex, FALSE);
- else if (ctx->wallpaper_batch)
+ else if (ctx->wallpaper_batch && batch->first_tiler.gpu)
panfrost_scoreboard_queue_fused_job_prepend(batch, vertex, tiler);
else
panfrost_scoreboard_queue_fused_job(batch, vertex, tiler);
diff --git a/src/gallium/drivers/panfrost/pan_job.c b/src/gallium/drivers/panfrost/pan_job.c
index ae482a9a7a6..8ba75cde6c4 100644
--- a/src/gallium/drivers/panfrost/pan_job.c
+++ b/src/gallium/drivers/panfrost/pan_job.c
@@ -686,10 +686,23 @@ panfrost_batch_get_tiler_dummy(struct panfrost_batch *batch)
static void
panfrost_batch_draw_wallpaper(struct panfrost_batch *batch)
{
+ /* Color 0 is cleared, no need to draw the wallpaper.
+ * TODO: MRT wallpapers.
+ */
+ if (batch->clear & PIPE_CLEAR_COLOR0)
+ return;
+
/* Nothing to reload? TODO: MRT wallpapers */
if (batch->key.cbufs[0] == NULL)
return;
+ /* No draw calls, and no clear on the depth/stencil bufs.
+ * Drawing the wallpaper would be useless.
+ */
+ if (!batch->last_tiler.gpu &&
+ !(batch->clear & PIPE_CLEAR_DEPTHSTENCIL))
+ return;
+
/* Check if the buffer has any content on it worth preserving */
struct pipe_surface *surf = batch->key.cbufs[0];
@@ -911,8 +924,7 @@ panfrost_batch_submit(struct panfrost_batch *batch)
goto out;
}
- if (!batch->clear && batch->last_tiler.gpu)
- panfrost_batch_draw_wallpaper(batch);
+ panfrost_batch_draw_wallpaper(batch);
panfrost_scoreboard_link_batch(batch);
More information about the mesa-commit
mailing list