diff options
Diffstat (limited to 'Ryujinx.Graphics.Vulkan/PipelineConverter.cs')
-rw-r--r-- | Ryujinx.Graphics.Vulkan/PipelineConverter.cs | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/Ryujinx.Graphics.Vulkan/PipelineConverter.cs b/Ryujinx.Graphics.Vulkan/PipelineConverter.cs index 3ff111e8..477d0cec 100644 --- a/Ryujinx.Graphics.Vulkan/PipelineConverter.cs +++ b/Ryujinx.Graphics.Vulkan/PipelineConverter.cs @@ -257,15 +257,23 @@ namespace Ryujinx.Graphics.Vulkan { var blend = state.BlendDescriptors[i]; - pipeline.Internal.ColorBlendAttachmentState[i] = new PipelineColorBlendAttachmentState( - blend.Enable, - blend.ColorSrcFactor.Convert(), - blend.ColorDstFactor.Convert(), - blend.ColorOp.Convert(), - blend.AlphaSrcFactor.Convert(), - blend.AlphaDstFactor.Convert(), - blend.AlphaOp.Convert(), - (ColorComponentFlags)state.ColorWriteMask[i]); + if (blend.Enable && state.ColorWriteMask[i] != 0) + { + pipeline.Internal.ColorBlendAttachmentState[i] = new PipelineColorBlendAttachmentState( + blend.Enable, + blend.ColorSrcFactor.Convert(), + blend.ColorDstFactor.Convert(), + blend.ColorOp.Convert(), + blend.AlphaSrcFactor.Convert(), + blend.AlphaDstFactor.Convert(), + blend.AlphaOp.Convert(), + (ColorComponentFlags)state.ColorWriteMask[i]); + } + else + { + pipeline.Internal.ColorBlendAttachmentState[i] = new PipelineColorBlendAttachmentState( + colorWriteMask: (ColorComponentFlags)state.ColorWriteMask[i]); + } } int maxAttachmentIndex = 0; |