diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Msl/Declarations.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Msl/Declarations.cs index f4b6a7f5a..2e87da675 100644 --- a/src/Ryujinx.Graphics.Shader/CodeGen/Msl/Declarations.cs +++ b/src/Ryujinx.Graphics.Shader/CodeGen/Msl/Declarations.cs @@ -63,13 +63,14 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl public static void DeclareLocals(CodeGenContext context, StructuredFunction function, ShaderStage stage) { - if (stage == ShaderStage.Vertex) + switch (stage) { - context.AppendLine("VertexOut out;"); - } - else if (stage == ShaderStage.Fragment) - { - context.AppendLine("FragmentOut out;"); + case ShaderStage.Vertex: + context.AppendLine("VertexOut out;"); + break; + case ShaderStage.Fragment: + context.AppendLine("FragmentOut out;"); + break; } foreach (AstOperand decl in function.Locals) @@ -126,7 +127,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl context.AppendLine($"struct FragmentIn"); break; case ShaderStage.Compute: - context.AppendLine($"struct ComputeIn"); + context.AppendLine($"struct KernelIn"); break; } @@ -172,7 +173,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl context.AppendLine($"struct FragmentOut"); break; case ShaderStage.Compute: - context.AppendLine($"struct ComputeOut"); + context.AppendLine($"struct KernelOut"); break; } diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Msl/MslGenerator.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Msl/MslGenerator.cs index ab591e5af..5e6f344fc 100644 --- a/src/Ryujinx.Graphics.Shader/CodeGen/Msl/MslGenerator.cs +++ b/src/Ryujinx.Graphics.Shader/CodeGen/Msl/MslGenerator.cs @@ -95,7 +95,9 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl } else if (stage == ShaderStage.Compute) { - // TODO: Compute main + funcKeyword = "kernel"; + funcName = "kernelMain"; + returnType = "void"; } if (context.AttributeUsage.UsedInputAttributes != 0) @@ -106,11 +108,11 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl } else if (stage == ShaderStage.Fragment) { - args = args.Prepend("VertexOut in [[stage_in]]").ToArray(); + args = args.Prepend("FragmentIn in [[stage_in]]").ToArray(); } else if (stage == ShaderStage.Compute) { - // TODO: Compute input + args = args.Prepend("KernelIn in [[stage_in]]").ToArray(); } } }