From 79ab787a8f6bf2ea0b8a6c8d1ea057d62c77e8e1 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Tue, 7 Mar 2023 14:53:42 +0100 Subject: [PATCH] radeonsi: fix fast depth_clear_value/stencil_clear_value MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We need to update the when promoting from non-TC-compatible to TC-compatible or we'll get incorrect values in the buffer. Fixes: 9defe8aca95 ("radeonsi: implement fast Z/S clears using clear_buffer on HTILE") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8418 Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/radeonsi/si_clear.c | 28 ++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_clear.c b/src/gallium/drivers/radeonsi/si_clear.c index 3b388405f05..2c333e9fe02 100644 --- a/src/gallium/drivers/radeonsi/si_clear.c +++ b/src/gallium/drivers/radeonsi/si_clear.c @@ -1078,22 +1078,22 @@ static void si_fast_clear(struct si_context *sctx, unsigned *buffers, } zstex->need_flush_after_depth_decompression = update_db_depth_clear && sctx->gfx_level == GFX10_3; + } - /* Update DB_DEPTH_CLEAR. */ - if (update_db_depth_clear && - zstex->depth_clear_value[level] != (float)depth) { - zstex->depth_clear_value[level] = depth; - sctx->framebuffer.dirty_zsbuf = true; - si_mark_atom_dirty(sctx, &sctx->atoms.s.framebuffer); - } + /* Update DB_DEPTH_CLEAR. */ + if (update_db_depth_clear && + zstex->depth_clear_value[level] != (float)depth) { + zstex->depth_clear_value[level] = depth; + sctx->framebuffer.dirty_zsbuf = true; + si_mark_atom_dirty(sctx, &sctx->atoms.s.framebuffer); + } - /* Update DB_STENCIL_CLEAR. */ - if (update_db_stencil_clear && - zstex->stencil_clear_value[level] != stencil) { - zstex->stencil_clear_value[level] = stencil; - sctx->framebuffer.dirty_zsbuf = true; - si_mark_atom_dirty(sctx, &sctx->atoms.s.framebuffer); - } + /* Update DB_STENCIL_CLEAR. */ + if (update_db_stencil_clear && + zstex->stencil_clear_value[level] != stencil) { + zstex->stencil_clear_value[level] = stencil; + sctx->framebuffer.dirty_zsbuf = true; + si_mark_atom_dirty(sctx, &sctx->atoms.s.framebuffer); } }