diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs b/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs index fff6cf05e..e29fab326 100644 --- a/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs +++ b/src/Ryujinx.Graphics.Vulkan/PipelineBase.cs @@ -899,7 +899,9 @@ namespace Ryujinx.Graphics.Vulkan public void SetDepthMode(DepthMode mode) { bool oldMode; - if (Gd.ExtendedDynamicState3Features.ExtendedDynamicState3DepthClipNegativeOneToOne) + bool supportsDepthClipandDynamicState = Gd.Capabilities.SupportsDepthClipControl && + Gd.ExtendedDynamicState3Features.ExtendedDynamicState3DepthClipNegativeOneToOne; + if (supportsDepthClipandDynamicState) { oldMode = DynamicState.DepthMode; DynamicState.SetDepthMode(mode == DepthMode.MinusOneToOne); @@ -910,7 +912,7 @@ namespace Ryujinx.Graphics.Vulkan _newState.DepthMode = mode == DepthMode.MinusOneToOne; } - if ((Gd.ExtendedDynamicState3Features.ExtendedDynamicState3DepthClipNegativeOneToOne ? DynamicState.DepthMode : _newState.DepthMode) != oldMode) + if ((supportsDepthClipandDynamicState ? DynamicState.DepthMode : _newState.DepthMode) != oldMode) { SignalStateChange(); } diff --git a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs index 01cf1741c..d461ab323 100644 --- a/src/Ryujinx.Graphics.Vulkan/PipelineState.cs +++ b/src/Ryujinx.Graphics.Vulkan/PipelineState.cs @@ -508,18 +508,14 @@ namespace Ryujinx.Graphics.Vulkan viewportState.ScissorCount = ScissorsCount; } - if (gd.Capabilities.SupportsDepthClipControl) + if (gd.Capabilities.SupportsDepthClipControl && !gd.ExtendedDynamicState3Features.ExtendedDynamicState3DepthClipNegativeOneToOne) { var viewportDepthClipControlState = new PipelineViewportDepthClipControlCreateInfoEXT { SType = StructureType.PipelineViewportDepthClipControlCreateInfoExt, + NegativeOneToOne = DepthMode, }; - if (!gd.ExtendedDynamicState3Features.ExtendedDynamicState3DepthClipNegativeOneToOne) - { - viewportDepthClipControlState.NegativeOneToOne = DepthMode; - } - viewportState.PNext = &viewportDepthClipControlState; }