From ee9d09c2e2b8d62acd9f2b0f4b3288501d2fbe53 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Sat, 12 Oct 2024 01:19:15 +0200 Subject: [PATCH] [dxvk] Use new barrier helpers in dispatchIndirect --- src/dxvk/dxvk_context.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index ab5683722..d850b7117 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -834,9 +834,11 @@ namespace dxvk { auto bufferSlice = m_state.id.argBuffer.getSliceHandle( offset, sizeof(VkDispatchIndirectCommand)); - if (m_execBarriers.isBufferDirty(bufferSlice, DxvkAccess::Read)) - m_execBarriers.recordCommands(m_cmd); - + flushPendingAccesses( + *m_state.id.argBuffer.buffer(), + m_state.id.argBuffer.offset() + offset, + sizeof(VkDispatchIndirectCommand), DxvkAccess::Read); + if (this->commitComputeState()) { this->commitComputeBarriers(); this->commitComputeBarriers(); @@ -849,12 +851,13 @@ namespace dxvk { m_queryManager.endQueries(m_cmd, VK_QUERY_TYPE_PIPELINE_STATISTICS); - - m_execBarriers.accessBuffer(bufferSlice, - VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT, - VK_ACCESS_INDIRECT_COMMAND_READ_BIT, - m_state.id.argBuffer.bufferInfo().stages, - m_state.id.argBuffer.bufferInfo().access); + + accessBuffer(DxvkCmdBuffer::ExecBuffer, + *m_state.id.argBuffer.buffer(), + m_state.id.argBuffer.offset() + offset, + sizeof(VkDispatchIndirectCommand), + VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT, + VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT); this->trackDrawBuffer(); }