Cleanup
This commit is contained in:
parent
7983bc062b
commit
684e025d61
2 changed files with 95 additions and 91 deletions
|
@ -16,6 +16,12 @@ namespace Ryujinx.Graphics.Metal
|
||||||
Pipeline = true;
|
Pipeline = true;
|
||||||
DepthStencil = true;
|
DepthStencil = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void Clear()
|
||||||
|
{
|
||||||
|
Pipeline = false;
|
||||||
|
DepthStencil = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[SupportedOSPlatform("macos")]
|
[SupportedOSPlatform("macos")]
|
||||||
|
|
|
@ -43,9 +43,7 @@ namespace Ryujinx.Graphics.Metal
|
||||||
public MTLRenderCommandEncoder CreateRenderCommandEncoder()
|
public MTLRenderCommandEncoder CreateRenderCommandEncoder()
|
||||||
{
|
{
|
||||||
// Initialise Pass & State
|
// Initialise Pass & State
|
||||||
|
|
||||||
var renderPassDescriptor = new MTLRenderPassDescriptor();
|
var renderPassDescriptor = new MTLRenderPassDescriptor();
|
||||||
var renderPipelineDescriptor = new MTLRenderPipelineDescriptor();
|
|
||||||
|
|
||||||
for (int i = 0; i < EncoderState.MaxColorAttachments; i++)
|
for (int i = 0; i < EncoderState.MaxColorAttachments; i++)
|
||||||
{
|
{
|
||||||
|
@ -95,7 +93,6 @@ namespace Ryujinx.Graphics.Metal
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialise Encoder
|
// Initialise Encoder
|
||||||
|
|
||||||
var renderCommandEncoder = _pipeline.CommandBuffer.RenderCommandEncoder(renderPassDescriptor);
|
var renderCommandEncoder = _pipeline.CommandBuffer.RenderCommandEncoder(renderPassDescriptor);
|
||||||
|
|
||||||
// Mark all state as dirty to ensure it is set on the encoder
|
// Mark all state as dirty to ensure it is set on the encoder
|
||||||
|
@ -117,16 +114,21 @@ namespace Ryujinx.Graphics.Metal
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RebindState(MTLRenderCommandEncoder renderCommandEncoder)
|
public void RebindState(MTLRenderCommandEncoder renderCommandEncoder)
|
||||||
|
{
|
||||||
|
if (_currentState.Dirty.Pipeline)
|
||||||
{
|
{
|
||||||
SetPipelineState(renderCommandEncoder);
|
SetPipelineState(renderCommandEncoder);
|
||||||
SetDepthStencilState(renderCommandEncoder);
|
}
|
||||||
|
|
||||||
_currentState.Dirty = new();
|
if (_currentState.Dirty.DepthStencil)
|
||||||
|
{
|
||||||
|
SetDepthStencilState(renderCommandEncoder);
|
||||||
|
}
|
||||||
|
|
||||||
|
_currentState.Dirty.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetPipelineState(MTLRenderCommandEncoder renderCommandEncoder) {
|
private void SetPipelineState(MTLRenderCommandEncoder renderCommandEncoder) {
|
||||||
if (_currentState.Dirty.Pipeline)
|
|
||||||
{
|
|
||||||
var renderPipelineDescriptor = new MTLRenderPipelineDescriptor();
|
var renderPipelineDescriptor = new MTLRenderPipelineDescriptor();
|
||||||
|
|
||||||
for (int i = 0; i < EncoderState.MaxColorAttachments; i++)
|
for (int i = 0; i < EncoderState.MaxColorAttachments; i++)
|
||||||
|
@ -211,7 +213,6 @@ namespace Ryujinx.Graphics.Metal
|
||||||
_currentState.BlendColor.Blue,
|
_currentState.BlendColor.Blue,
|
||||||
_currentState.BlendColor.Alpha);
|
_currentState.BlendColor.Alpha);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public void UpdateIndexBuffer(BufferRange buffer, IndexType type)
|
public void UpdateIndexBuffer(BufferRange buffer, IndexType type)
|
||||||
{
|
{
|
||||||
|
@ -550,15 +551,12 @@ namespace Ryujinx.Graphics.Metal
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetDepthStencilState(MTLRenderCommandEncoder renderCommandEncoder)
|
private void SetDepthStencilState(MTLRenderCommandEncoder renderCommandEncoder)
|
||||||
{
|
|
||||||
if (_currentState.Dirty.DepthStencil)
|
|
||||||
{
|
{
|
||||||
if (_currentState.DepthStencilState != null)
|
if (_currentState.DepthStencilState != null)
|
||||||
{
|
{
|
||||||
renderCommandEncoder.SetDepthStencilState(_currentState.DepthStencilState.Value);
|
renderCommandEncoder.SetDepthStencilState(_currentState.DepthStencilState.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void SetDepthClamp(MTLRenderCommandEncoder renderCommandEncoder)
|
private void SetDepthClamp(MTLRenderCommandEncoder renderCommandEncoder)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue