diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index ce21a242..66d3d477 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -4145,7 +4145,8 @@ namespace dxvk { // This is necessary because we'll only do hazard // tracking if the active pipeline has side effects - this->spillRenderPass(true); + if (!m_barrierControl.test(DxvkBarrierControl::IgnoreGraphicsBarriers)) + this->spillRenderPass(true); } if (m_state.gp.pipeline->layout()->pushConstRange().size) @@ -5029,6 +5030,9 @@ namespace dxvk { template void DxvkContext::commitGraphicsBarriers() { + if (m_barrierControl.test(DxvkBarrierControl::IgnoreGraphicsBarriers)) + return; + auto layout = m_state.gp.pipeline->layout(); constexpr auto storageBufferAccess = VK_ACCESS_SHADER_WRITE_BIT | VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT; diff --git a/src/dxvk/dxvk_context_state.h b/src/dxvk/dxvk_context_state.h index 9252c433..beafdaa0 100644 --- a/src/dxvk/dxvk_context_state.h +++ b/src/dxvk/dxvk_context_state.h @@ -73,6 +73,7 @@ namespace dxvk { */ enum class DxvkBarrierControl : uint32_t { IgnoreWriteAfterWrite = 1, + IgnoreGraphicsBarriers = 2, }; using DxvkBarrierControlFlags = Flags;