Implement SetDepthClamp

This commit is contained in:
Isaac Marovitz 2024-05-18 21:29:46 -04:00 committed by Isaac Marovitz
parent f98d9bae24
commit 20e1d1cd33
3 changed files with 21 additions and 1 deletions

View file

@ -153,6 +153,7 @@ namespace Ryujinx.Graphics.Metal
_currentState.BlendColor.Alpha);
SetDepthStencilState(renderCommandEncoder, _currentState.DepthStencilState);
SetDepthClamp(renderCommandEncoder, _currentState.DepthClipMode);
SetScissors(renderCommandEncoder, _currentState.Scissors);
SetViewports(renderCommandEncoder, _currentState.Viewports);
SetBuffers(renderCommandEncoder, _currentState.VertexBuffers);
@ -341,6 +342,19 @@ namespace Ryujinx.Graphics.Metal
}
}
// Inlineable
public void UpdateDepthClamp(bool clamp)
{
_currentState.DepthClipMode = clamp ? MTLDepthClipMode.Clamp : MTLDepthClipMode.Clip;
// Inline Update
if (_pipeline.CurrentEncoderType == EncoderType.Render && _pipeline.CurrentEncoder != null)
{
var renderCommandEncoder = new MTLRenderCommandEncoder(_pipeline.CurrentEncoder.Value);
}
}
// Inlineable
public void UpdateScissors(ReadOnlySpan<Rectangle<int>> regions)
{
@ -552,6 +566,11 @@ namespace Ryujinx.Graphics.Metal
}
}
private static void SetDepthClamp(MTLRenderCommandEncoder renderCommandEncoder, MTLDepthClipMode depthClipMode)
{
renderCommandEncoder.SetDepthClipMode(depthClipMode);
}
private unsafe static void SetScissors(MTLRenderCommandEncoder renderCommandEncoder, MTLScissorRect[] scissors)
{
if (scissors.Length > 0)