diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs b/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs index 4877df99f..4fc7e8ecc 100644 --- a/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs +++ b/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs @@ -1525,20 +1525,24 @@ namespace Ryujinx.Graphics.Vulkan private bool ChangeFeedbackLoop(FeedbackLoopAspects aspects) { - if (_feedbackLoop != aspects) + // AMD Radeon RX GPUs + Qualcomm SoCs only + if ((Gd.Vendor == Vendor.Amd && Gd.GpuRenderer.Contains("RX")) || Gd.Vendor == Vendor.Qualcomm) { - if (Gd.Capabilities.SupportsDynamicAttachmentFeedbackLoop) + if (_feedbackLoop != aspects) { - DynamicState.SetFeedbackLoop(aspects); - } - else - { - _newState.FeedbackLoopAspects = aspects; - } + if (Gd.Capabilities.SupportsDynamicAttachmentFeedbackLoop) + { + DynamicState.SetFeedbackLoop(aspects); + } + else + { + _newState.FeedbackLoopAspects = aspects; + } - _feedbackLoop = aspects; + _feedbackLoop = aspects; - return true; + return true; + } } return false; diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineDynamicState.cs b/src/Ryujinx.Graphics.Vulkan/PipelineDynamicState.cs index d39ec6df7..3ed87206f 100644 --- a/src/Ryujinx.Graphics.Vulkan/PipelineDynamicState.cs +++ b/src/Ryujinx.Graphics.Vulkan/PipelineDynamicState.cs @@ -148,7 +148,7 @@ namespace Ryujinx.Graphics.Vulkan if (_dirty.HasFlag(DirtyFlags.FeedbackLoop) && gd.Capabilities.SupportsDynamicAttachmentFeedbackLoop) { - RecordFeedbackLoop(gd.DynamicFeedbackLoopApi, commandBuffer, gd); + RecordFeedbackLoop(gd.DynamicFeedbackLoopApi, commandBuffer); } _dirty = DirtyFlags.None; @@ -190,20 +190,16 @@ namespace Ryujinx.Graphics.Vulkan } } - private readonly void RecordFeedbackLoop(ExtAttachmentFeedbackLoopDynamicState api, CommandBuffer commandBuffer, VulkanRenderer gd) + private readonly void RecordFeedbackLoop(ExtAttachmentFeedbackLoopDynamicState api, CommandBuffer commandBuffer) { - // AMD Radeon RX GPUs + Qualcomm SoCs only - if ((gd.Vendor == Vendor.Amd && gd.GpuRenderer.Contains("RX")) || gd.Vendor == Vendor.Qualcomm) + ImageAspectFlags aspects = (_feedbackLoopAspects & FeedbackLoopAspects.Color) != 0 ? ImageAspectFlags.ColorBit : 0; + + if ((_feedbackLoopAspects & FeedbackLoopAspects.Depth) != 0) { - ImageAspectFlags aspects = (_feedbackLoopAspects & FeedbackLoopAspects.Color) != 0 ? ImageAspectFlags.ColorBit : 0; - - if ((_feedbackLoopAspects & FeedbackLoopAspects.Depth) != 0) - { - aspects |= ImageAspectFlags.DepthBit | ImageAspectFlags.StencilBit; - } - - api.CmdSetAttachmentFeedbackLoopEnable(commandBuffer, aspects); + aspects |= ImageAspectFlags.DepthBit | ImageAspectFlags.StencilBit; } + + api.CmdSetAttachmentFeedbackLoopEnable(commandBuffer, aspects); } } } diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs index a726b9edb..a6b177065 100644 --- a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs +++ b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs @@ -7,7 +7,6 @@ namespace Ryujinx.Graphics.Vulkan { struct PipelineState : IDisposable { - private const int RequiredSubgroupSize = 32; private const int MaxDynamicStatesCount = 9; public PipelineUid Internal;