do memory barriers
This commit is contained in:
parent
17334b2131
commit
1a0b928c35
2 changed files with 19 additions and 1 deletions
|
@ -73,6 +73,9 @@ namespace Ryujinx.Graphics.Metal
|
||||||
_pipeline.SaveState();
|
_pipeline.SaveState();
|
||||||
|
|
||||||
_pipeline.SetProgram(_programColorBlit);
|
_pipeline.SetProgram(_programColorBlit);
|
||||||
|
// Viewport and scissor needs to be set before render pass begin so as not to bind the old ones
|
||||||
|
//_pipeline.SetViewports([]);
|
||||||
|
//_pipeline.SetScissors([]);
|
||||||
_pipeline.SetRenderTargets([destination], null);
|
_pipeline.SetRenderTargets([destination], null);
|
||||||
_pipeline.SetTextureAndSampler(ShaderStage.Fragment, 0, source, new Sampler(sampler));
|
_pipeline.SetTextureAndSampler(ShaderStage.Fragment, 0, source, new Sampler(sampler));
|
||||||
_pipeline.SetPrimitiveTopology(PrimitiveTopology.Triangles);
|
_pipeline.SetPrimitiveTopology(PrimitiveTopology.Triangles);
|
||||||
|
|
|
@ -191,7 +191,22 @@ namespace Ryujinx.Graphics.Metal
|
||||||
|
|
||||||
public void Barrier()
|
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)
|
public void ClearBuffer(BufferHandle destination, int offset, int size, uint value)
|
||||||
|
|
Loading…
Reference in a new issue