diff --git a/src/Ryujinx.Graphics.Metal/Pipeline.cs b/src/Ryujinx.Graphics.Metal/Pipeline.cs index f52b473f8..2cf073d88 100644 --- a/src/Ryujinx.Graphics.Metal/Pipeline.cs +++ b/src/Ryujinx.Graphics.Metal/Pipeline.cs @@ -14,7 +14,8 @@ namespace Ryujinx.Graphics.Metal { Blit, Compute, - Render + Render, + None } [SupportedOSPlatform("macos")] @@ -26,7 +27,7 @@ namespace Ryujinx.Graphics.Metal private MTLCommandBuffer _commandBuffer; private MTLCommandEncoder? _currentEncoder; - private EncoderType _currentEncoderType; + private EncoderType _currentEncoderType = EncoderType.None; private MTLTexture[] _renderTargets = []; private RenderEncoderState _renderEncoderState; @@ -112,6 +113,8 @@ namespace Ryujinx.Graphics.Metal default: throw new ArgumentOutOfRangeException(); } + + _currentEncoderType = EncoderType.None; } } diff --git a/src/Ryujinx.Graphics.Metal/RenderEncoderState.cs b/src/Ryujinx.Graphics.Metal/RenderEncoderState.cs index d58fae206..f5e8fe30b 100644 --- a/src/Ryujinx.Graphics.Metal/RenderEncoderState.cs +++ b/src/Ryujinx.Graphics.Metal/RenderEncoderState.cs @@ -18,8 +18,8 @@ namespace Ryujinx.Graphics.Metal private MTLCompareFunction _depthCompareFunction = MTLCompareFunction.Always; private bool _depthWriteEnabled = false; - private MTLStencilDescriptor? _backFaceStencil = null; - private MTLStencilDescriptor? _frontFaceStencil = null; + private MTLStencilDescriptor _backFaceStencil = new MTLStencilDescriptor(); + private MTLStencilDescriptor _frontFaceStencil = new MTLStencilDescriptor(); public PrimitiveTopology Topology = PrimitiveTopology.Triangles; public MTLCullMode CullMode = MTLCullMode.None; @@ -83,8 +83,8 @@ namespace Ryujinx.Graphics.Metal { DepthCompareFunction = _depthCompareFunction, DepthWriteEnabled = _depthWriteEnabled, - BackFaceStencil = _backFaceStencil.Value, - FrontFaceStencil = _frontFaceStencil.Value + BackFaceStencil = _backFaceStencil, + FrontFaceStencil = _frontFaceStencil }); return _depthStencilState.Value; @@ -95,15 +95,17 @@ namespace Ryujinx.Graphics.Metal _depthCompareFunction = depthCompareFunction; _depthWriteEnabled = depthWriteEnabled; - _depthStencilState = _device.NewDepthStencilState(new MTLDepthStencilDescriptor + var state = _device.NewDepthStencilState(new MTLDepthStencilDescriptor { DepthCompareFunction = _depthCompareFunction, DepthWriteEnabled = _depthWriteEnabled, - BackFaceStencil = _backFaceStencil.Value, - FrontFaceStencil = _frontFaceStencil.Value + BackFaceStencil = _backFaceStencil, + FrontFaceStencil = _frontFaceStencil }); - return _depthStencilState.Value; + _depthStencilState = state; + + return state; } } }