do memory barriers

This commit is contained in:
Samuliak 2024-05-24 18:37:31 +02:00 committed by Isaac Marovitz
parent 17334b2131
commit 1a0b928c35
2 changed files with 19 additions and 1 deletions

View file

@ -191,7 +191,22 @@ namespace Ryujinx.Graphics.Metal
public void Barrier()
{
Logger.Warning?.Print(LogClass.Gpu, "Not Implemented!");
if (_currentEncoderType == 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();
// TODO: Should there be a barrier on render targets?
var scope = MTLBarrierScope.Buffers | MTLBarrierScope.Textures;
computeCommandEncoder.MemoryBarrier(scope);
}
}
public void ClearBuffer(BufferHandle destination, int offset, int size, uint value)