Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/doitsujin/dxvk.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Rebohle <philip.rebohle@tu-dortmund.de>2023-08-01 19:07:47 +0300
committerPhilip Rebohle <philip.rebohle@tu-dortmund.de>2023-08-01 19:07:47 +0300
commit09857dcaa997c7f51cd56c8fdb330774a1be779d (patch)
tree33ae63db221268828faf81c3f03ad6f18c580efb
parentd66f8385c38abc73c6b4f69a510282334f3faadf (diff)
[dxvk] Dirty multisample state if sample mask export changes.
This affects Alpha-to-Coverage.
-rw-r--r--src/dxvk/dxvk_context.cpp6
1 files changed, 5 insertions, 1 deletions
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)