From 3ecf9a17f820df72ddfae2ae51487547e50d35c7 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Fri, 22 Aug 2025 08:17:02 +0200 Subject: [PATCH] radv: stop abusing dirty_dynamic when binding a NULL fragment shader RADV_DYNAMIC_RASTERIZATION_SAMPLES triggers the following states: - FS (not needed when FS is NULL) - MSAA (already triggered) - BINNING (use radv_get_ps_iter_samples() on GFX9) - OCCLUSION_QUERY (doesn't use the PS) - DB_SHADER_CONTROL (already triggered) - RAST_SAMPLES (use radv_get_ps_iter_samples()) - NGGC (doesn't use the PS) So this can be simplified to BINNING (gfx9) | RAST_SAMPLES. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index d90b5cf23d8..73c55adfe7b 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -7583,10 +7583,12 @@ radv_bind_shader(struct radv_cmd_buffer *cmd_buffer, struct radv_shader *shader, cmd_buffer->state.can_use_simple_vertex_input = false; break; case MESA_SHADER_FRAGMENT: - cmd_buffer->state.dirty |= RADV_CMD_DIRTY_DB_SHADER_CONTROL | RADV_CMD_DIRTY_MSAA_STATE; + cmd_buffer->state.dirty |= + RADV_CMD_DIRTY_DB_SHADER_CONTROL | RADV_CMD_DIRTY_MSAA_STATE | RADV_CMD_DIRTY_RAST_SAMPLES_STATE; if (pdev->info.gfx_level >= GFX10_3) cmd_buffer->state.dirty |= RADV_CMD_DIRTY_FSR_STATE; - cmd_buffer->state.dirty_dynamic |= RADV_DYNAMIC_RASTERIZATION_SAMPLES; + if (pdev->info.gfx_level == GFX9) + cmd_buffer->state.dirty |= RADV_CMD_DIRTY_BINNING_STATE; break; default: break;