Module: Mesa Branch: master Commit: 0e1447eb1b3729998ec06cf7bc5ba7d28c1e67e1 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=0e1447eb1b3729998ec06cf7bc5ba7d28c1e67e1
Author: Jason Ekstrand <jason.ekstr...@intel.com> Date: Wed Jan 20 11:36:54 2021 -0600 anv: Early-exit from cmd_buffer_flush_state If we don't have any dynamic state, pipeline, or descriptor changes, we can do a very quick early-exit instead of checking for a bunch of stuff bit-by-bit. Tested-By: Mike Blumenkrantz <michael.blumenkra...@gmail.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwer...@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8594> --- src/intel/vulkan/genX_cmd_buffer.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/intel/vulkan/genX_cmd_buffer.c b/src/intel/vulkan/genX_cmd_buffer.c index d04f47b2f5f..285169eeb78 100644 --- a/src/intel/vulkan/genX_cmd_buffer.c +++ b/src/intel/vulkan/genX_cmd_buffer.c @@ -3518,6 +3518,12 @@ genX(cmd_buffer_flush_state)(struct anv_cmd_buffer *cmd_buffer) cmd_buffer->state.gfx.vb_dirty &= ~vb_emit; + uint32_t descriptors_dirty = cmd_buffer->state.descriptors_dirty & + pipeline->active_stages; + if (!cmd_buffer->state.gfx.dirty && !descriptors_dirty && + !cmd_buffer->state.push_constants_dirty) + return; + if ((cmd_buffer->state.gfx.dirty & ANV_CMD_DIRTY_XFB_ENABLE) || (GEN_GEN == 7 && (cmd_buffer->state.gfx.dirty & ANV_CMD_DIRTY_PIPELINE))) { @@ -3594,9 +3600,6 @@ genX(cmd_buffer_flush_state)(struct anv_cmd_buffer *cmd_buffer) } #endif - uint32_t descriptors_dirty = cmd_buffer->state.descriptors_dirty & - pipeline->active_stages; - /* Render targets live in the same binding table as fragment descriptors */ if (cmd_buffer->state.gfx.dirty & ANV_CMD_DIRTY_RENDER_TARGETS) descriptors_dirty |= VK_SHADER_STAGE_FRAGMENT_BIT; _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit