mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-04-21 18:13:14 +02:00

This is not a continuation of the Metal backend; this is simply bringing the branch up to date and merging it as-is behind an experiment. --------- Co-authored-by: Isaac Marovitz <isaacryu@icloud.com> Co-authored-by: Samuliak <samuliak77@gmail.com> Co-authored-by: SamoZ256 <96914946+SamoZ256@users.noreply.github.com> Co-authored-by: Isaac Marovitz <42140194+IsaacMarovitz@users.noreply.github.com> Co-authored-by: riperiperi <rhy3756547@hotmail.com> Co-authored-by: Gabriel A <gab.dark.100@gmail.com>
30 lines
1.1 KiB
C#
30 lines
1.1 KiB
C#
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
|
|
{
|
|
static class InstGenBallot
|
|
{
|
|
public static string Ballot(CodeGenContext context, AstOperation operation)
|
|
{
|
|
AggregateType dstType = GetSrcVarType(operation.Inst, 0);
|
|
|
|
string arg = GetSourceExpr(context, operation.GetSource(0), dstType);
|
|
char component = "xyzw"[operation.Index];
|
|
|
|
return $"uint4(as_type<uint2>((simd_vote::vote_t)simd_ballot({arg})), 0, 0).{component}";
|
|
}
|
|
|
|
public static string VoteAllEqual(CodeGenContext context, AstOperation operation)
|
|
{
|
|
AggregateType dstType = GetSrcVarType(operation.Inst, 0);
|
|
|
|
string arg = GetSourceExpr(context, operation.GetSource(0), dstType);
|
|
|
|
return $"simd_all({arg}) || !simd_any({arg})";
|
|
}
|
|
}
|
|
}
|