1
0
Fork 0
mirror of https://github.com/Ryujinx/Ryujinx.git synced 2024-12-20 07:12:02 +00:00

Clear Buffer

This commit is contained in:
Isaac Marovitz 2023-07-28 16:51:07 -04:00 committed by Isaac Marovitz
parent 28da4248ae
commit d076a70816
2 changed files with 22 additions and 1 deletions

View file

@ -92,7 +92,27 @@ namespace Ryujinx.Graphics.Metal
public void ClearBuffer(BufferHandle destination, int offset, int size, uint value) public void ClearBuffer(BufferHandle destination, int offset, int size, uint value)
{ {
throw new NotImplementedException(); MTLBlitCommandEncoder blitCommandEncoder;
if (_currentEncoder is MTLBlitCommandEncoder encoder)
{
blitCommandEncoder = encoder;
}
else
{
blitCommandEncoder = BeginBlitPass();
}
// Might need a closer look, range's count, lower, and upper bound
// must be a multiple of 4
MTLBuffer mtlBuffer = new(Unsafe.As<BufferHandle, IntPtr>(ref destination));
blitCommandEncoder.FillBuffer(mtlBuffer,
new NSRange
{
location = (ulong)offset,
length = (ulong)size
},
(byte)value);
} }
public void ClearRenderTargetColor(int index, int layer, int layerCount, uint componentMask, ColorF color) public void ClearRenderTargetColor(int index, int layer, int layerCount, uint componentMask, ColorF color)

View file

@ -136,6 +136,7 @@ namespace Ryujinx.Graphics.Metal
throw new NotImplementedException(); throw new NotImplementedException();
} }
// TODO: Rewrite using MTLBlitCommandEncoder
public void SetData(SpanOrArray<byte> data, int layer, int level, Rectangle<int> region) public void SetData(SpanOrArray<byte> data, int layer, int level, Rectangle<int> region)
{ {
ulong bytesPerRow = (ulong)Info.GetMipStride(level); ulong bytesPerRow = (ulong)Info.GetMipStride(level);