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 <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36912>
This commit is contained in:
Samuel Pitoiset
2025-08-22 08:17:02 +02:00
committed by Marge Bot
parent 19c712c8ef
commit 3ecf9a17f8
+4 -2
View File
@@ -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;