From 8b993f46f5b7ce6a54fac615a1ef57bb1fa93a1d Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Tue, 3 Mar 2026 14:31:51 +0100 Subject: [PATCH] radv: ignore the GFX12 HiZ WA for internal blits To update HiZ properly during depth/stencil clears. There is a risk but it's very minimal and it's also much better for performance. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index d690fe815ec..19713ce0c89 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -5713,6 +5713,15 @@ radv_gfx12_emit_hiz_wa_full(struct radv_cmd_buffer *cmd_buffer) if (!iview || !radv_image_has_hiz_metadata(iview->image)) return; + /* Ignore the HiZ workaround for internal blits to properly update HiZ. It's required for dynamic + * rendering depth/stencil clears because the framebuffer isn't re-emitted and HiZ might have + * been disabled previously. The risk should be minimal and it's much better for performance. + */ + if (cmd_buffer->state.meta.inside_meta_op) { + radv_gfx12_override_hiz_enable(cmd_buffer, true); + return; + } + struct vk_depth_stencil_state ds = d->vk.ds; vk_optimize_depth_stencil_state(&ds, render->ds_att_aspects, true);