diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index 31e15e28..9c9ca14a 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -4961,6 +4961,7 @@ namespace dxvk { DxvkGraphicsPipelineFlags oldFlags = m_state.gp.flags; DxvkGraphicsPipelineFlags newFlags = newPipeline->flags(); + DxvkGraphicsPipelineFlags diffFlags = oldFlags ^ newFlags; DxvkGraphicsPipelineFlags hazardMask( DxvkGraphicsPipelineFlag::HasTransformFeedback, @@ -4968,7 +4969,7 @@ namespace dxvk { m_state.gp.flags = newFlags; - if (((oldFlags ^ newFlags) & hazardMask) != 0) { + if ((diffFlags & hazardMask) != 0) { // Force-update vertex/index buffers for hazard checks m_flags.set(DxvkContextFlag::GpDirtyIndexBuffer, DxvkContextFlag::GpDirtyVertexBuffers, @@ -4981,6 +4982,9 @@ namespace dxvk { this->spillRenderPass(true); } + if (diffFlags.test(DxvkGraphicsPipelineFlag::HasSampleMaskExport)) + m_flags.set(DxvkContextFlag::GpDirtyMultisampleState); + m_descriptorState.dirtyStages(VK_SHADER_STAGE_ALL_GRAPHICS); if (newPipeline->getBindings()->layout().getPushConstantRange().size)