anv: limit calls into cmd_buffer_flush_dynamic_state
authorLionel Landwerlin <lionel.g.landwerlin@intel.com>
Sun, 2 Oct 2022 08:03:29 +0000 (11:03 +0300)
committerMarge Bot <emma+marge@anholt.net>
Fri, 14 Oct 2022 23:03:16 +0000 (23:03 +0000)
Avoids a bunch of checks if we can.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19050>

src/intel/vulkan/genX_cmd_buffer.c

index 7ec38ed..aa7528d 100644 (file)
@@ -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