Consolodate barriers

This commit is contained in:
Isaac Marovitz 2024-07-24 15:35:50 +01:00
parent 61c7d3bb9c
commit b4cf2d1cc9
No known key found for this signature in database
GPG Key ID: 97250B2B09A132E1
3 changed files with 6 additions and 15 deletions

View File

@ -122,8 +122,6 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
{
case Instruction.Ballot:
return Ballot(context, operation);
case Instruction.Barrier:
return Barrier(context, operation);
case Instruction.Call:
return Call(context, operation);
case Instruction.FSIBegin:
@ -132,7 +130,8 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
return "|| FSI END ||";
case Instruction.GroupMemoryBarrier:
case Instruction.MemoryBarrier:
return MemoryBarrier(context, operation);
case Instruction.Barrier:
return Barrier(context, operation);
case Instruction.ImageLoad:
case Instruction.ImageStore:
case Instruction.ImageAtomic:

View File

@ -1,8 +1,5 @@
using Ryujinx.Graphics.Shader.IntermediateRepresentation;
using Ryujinx.Graphics.Shader.StructuredIr;
using Ryujinx.Graphics.Shader.Translation;
using static Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions.InstGenHelper;
using static Ryujinx.Graphics.Shader.StructuredIr.InstructionInfo;
namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
{
@ -10,7 +7,9 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
{
public static string Barrier(CodeGenContext context, AstOperation operation)
{
return "threadgroup_barrier(mem_flags::mem_threadgroup)";
var device = (operation.Inst & Instruction.Mask) == Instruction.MemoryBarrier;
return $"threadgroup_barrier(mem_flags::mem_{(device ? "device" : "threadgroup")})";
}
}
}

View File

@ -600,13 +600,6 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl.Instructions
return $"float2(as_type<half2>({srcExpr})){GetMask(operation.Index)}";
}
public static string MemoryBarrier(CodeGenContext context, AstOperation operation)
{
var grouped = (operation.Inst & Instruction.Mask) == Instruction.GroupMemoryBarrier;
return $"threadgroup_barrier(mem_flags::mem_{(grouped ? "threadgroup" : "device")})";
}
private static string GetMask(int index)
{
return $".{"xy".AsSpan(index, 1)}";