mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-23 15:30:09 +00:00
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@collabora.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
c138ca80d2
commit
71eda74f7c
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user