This commit is contained in:
Isaac Marovitz 2024-05-29 23:10:00 +01:00 committed by Isaac Marovitz
parent b0ba5d5da1
commit aae9dc0c2e
2 changed files with 20 additions and 22 deletions

View file

@ -54,11 +54,6 @@ namespace Ryujinx.Graphics.Metal
Logger.Warning?.Print(LogClass.Gpu, "Not Implemented!");
}
public BufferHandle CreateBuffer(int size, BufferAccess access, BufferHandle storageHint)
{
return CreateBuffer(size, access);
}
public BufferHandle CreateBuffer(IntPtr pointer, int size)
{
var buffer = _device.NewBuffer(pointer, (ulong)size, MTLResourceOptions.ResourceStorageModeShared);

View file

@ -205,26 +205,29 @@ namespace Ryujinx.Graphics.Metal
public void Barrier()
{
if (_currentEncoderType == EncoderType.Render)
switch (_currentEncoderType)
{
var renderCommandEncoder = GetOrCreateRenderEncoder();
case EncoderType.Render:
{
var renderCommandEncoder = GetOrCreateRenderEncoder();
var scope = MTLBarrierScope.Buffers | MTLBarrierScope.Textures | MTLBarrierScope.RenderTargets;
MTLRenderStages stages = MTLRenderStages.RenderStageVertex | MTLRenderStages.RenderStageFragment;
renderCommandEncoder.MemoryBarrier(scope, stages, stages);
}
else if (_currentEncoderType == EncoderType.Compute)
{
var computeCommandEncoder = GetOrCreateComputeEncoder();
var scope = MTLBarrierScope.Buffers | MTLBarrierScope.Textures | MTLBarrierScope.RenderTargets;
MTLRenderStages stages = MTLRenderStages.RenderStageVertex | MTLRenderStages.RenderStageFragment;
renderCommandEncoder.MemoryBarrier(scope, stages, stages);
break;
}
case EncoderType.Compute:
{
var computeCommandEncoder = GetOrCreateComputeEncoder();
// TODO: Should there be a barrier on render targets?
var scope = MTLBarrierScope.Buffers | MTLBarrierScope.Textures;
computeCommandEncoder.MemoryBarrier(scope);
}
else
{
Logger.Warning?.Print(LogClass.Gpu, "Barrier called outside of a render or compute pass");
// TODO: Should there be a barrier on render targets?
var scope = MTLBarrierScope.Buffers | MTLBarrierScope.Textures;
computeCommandEncoder.MemoryBarrier(scope);
break;
}
default:
Logger.Warning?.Print(LogClass.Gpu, "Barrier called outside of a render or compute pass");
break;
}
}