radv: exclude dynamic vertex input stride for the late scissor workaround

RADV_DYNAMIC_VERTEX_INPUT_BINDING_STRIDE doesn't emit any context
registers, so it can be excluded for the late scissor workaround to
avoid re-emitting scissors all the time it's dirty.

This fixes a performance regression noticed with Cyberpunk on Vega10,
but other games are likely affected too. The late scissor workaround is
only applied on Raven/Vega10.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13828
Fixes: d7f401c2bb ("radv: bind the vertex binding strides like a normal dynamic state")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37252>
This commit is contained in:
Samuel Pitoiset 2025-09-09 13:34:10 +02:00 committed by Marge Bot
parent 3a41644165
commit c739d836f7

View file

@ -10834,6 +10834,7 @@ radv_need_late_scissor_emission(struct radv_cmd_buffer *cmd_buffer, const struct
uint64_t used_dynamic_states = radv_get_needed_dynamic_states(cmd_buffer);
used_dynamic_states &= ~RADV_DYNAMIC_VERTEX_INPUT;
used_dynamic_states &= ~RADV_DYNAMIC_VERTEX_INPUT_BINDING_STRIDE;
if (cmd_buffer->state.dirty_dynamic & used_dynamic_states)
return true;