diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index 7ec38eda980..aa7528d29bc 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -3518,10 +3518,12 @@ genX(cmd_buffer_flush_gfx_state)(struct anv_cmd_buffer *cmd_buffer) cmd_buffer->state.gfx.vb_dirty &= ~vb_emit; + const bool any_dynamic_state_dirty = + vk_dynamic_graphics_state_any_dirty(dyn); uint32_t descriptors_dirty = cmd_buffer->state.descriptors_dirty & pipeline->active_stages; if (!cmd_buffer->state.gfx.dirty && !descriptors_dirty && - !vk_dynamic_graphics_state_any_dirty(dyn) && + !any_dynamic_state_dirty && !cmd_buffer->state.push_constants_dirty) return; @@ -3664,7 +3666,8 @@ genX(cmd_buffer_flush_gfx_state)(struct anv_cmd_buffer *cmd_buffer) } } - genX(cmd_buffer_flush_dynamic_state)(cmd_buffer); + if (any_dynamic_state_dirty || cmd_buffer->state.gfx.dirty) + genX(cmd_buffer_flush_dynamic_state)(cmd_buffer); } static void