From e65effcb05c40247fb717b3c2409abce7ffa10fc Mon Sep 17 00:00:00 2001 From: gdkchan Date: Thu, 23 May 2024 01:05:32 -0300 Subject: Workaround AMD bug on logic op with float framebuffer (#6852) * Workaround AMD bug on logic op with float framebuffer * Format whitespace * Update comment --- src/Ryujinx.Graphics.Vulkan/PipelineState.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/Ryujinx.Graphics.Vulkan/PipelineState.cs') diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs index 49c12b37..21160858 100644 --- a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs +++ b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs @@ -560,10 +560,14 @@ namespace Ryujinx.Graphics.Vulkan } } + // AMD has a bug where it enables logical operations even for float formats, + // so we need to force disable them here. + bool logicOpEnable = LogicOpEnable && (gd.Vendor != Vendor.Amd || Internal.LogicOpsAllowed); + var colorBlendState = new PipelineColorBlendStateCreateInfo { SType = StructureType.PipelineColorBlendStateCreateInfo, - LogicOpEnable = LogicOpEnable, + LogicOpEnable = logicOpEnable, LogicOp = LogicOp, AttachmentCount = ColorBlendAttachmentStateCount, PAttachments = pColorBlendAttachmentState, -- cgit v1.2.3