From 8704ed7af665751e0a5c38b9b5b8355b1714809f Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 22 Jun 2023 23:41:24 +0200 Subject: [PATCH] [dxvk] Ignore some pipeline flags when ending render pass --- src/dxvk/dxvk_context.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index c8d5c7cd..0a3b7177 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -4958,9 +4958,16 @@ namespace dxvk { if (unlikely(newPipeline->getSpecConstantMask() != m_state.gp.constants.mask)) this->resetSpecConstants(newPipeline->getSpecConstantMask()); - if (m_state.gp.flags != newPipeline->flags()) { - m_state.gp.flags = newPipeline->flags(); + DxvkGraphicsPipelineFlags oldFlags = m_state.gp.flags; + DxvkGraphicsPipelineFlags newFlags = newPipeline->flags(); + DxvkGraphicsPipelineFlags hazardMask( + DxvkGraphicsPipelineFlag::HasTransformFeedback, + DxvkGraphicsPipelineFlag::HasStorageDescriptors); + + m_state.gp.flags = newFlags; + + if (((oldFlags ^ newFlags) & hazardMask) != 0) { // Force-update vertex/index buffers for hazard checks m_flags.set(DxvkContextFlag::GpDirtyIndexBuffer, DxvkContextFlag::GpDirtyVertexBuffers,