From 89c29152d0630b44a21c433e199c40e97ca662db Mon Sep 17 00:00:00 2001 From: Samuliak Date: Mon, 20 May 2024 19:07:27 +0200 Subject: [PATCH] declare local memory --- src/Ryujinx.Graphics.Metal/Program.cs | 2 ++ .../CodeGen/Msl/Declarations.cs | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/Ryujinx.Graphics.Metal/Program.cs b/src/Ryujinx.Graphics.Metal/Program.cs index 764bcf126..f6f5720e5 100644 --- a/src/Ryujinx.Graphics.Metal/Program.cs +++ b/src/Ryujinx.Graphics.Metal/Program.cs @@ -28,6 +28,8 @@ namespace Ryujinx.Graphics.Metal { Logger.Warning?.Print(LogClass.Gpu, $"Shader linking failed: \n{StringHelper.String(libraryError.LocalizedDescription)}"); _status = ProgramLinkStatus.Failure; + Console.WriteLine(shader.Code); + throw new NotImplementedException(); return; } diff --git a/src/Ryujinx.Graphics.Shader/CodeGen/Msl/Declarations.cs b/src/Ryujinx.Graphics.Shader/CodeGen/Msl/Declarations.cs index 657579a24..42a756233 100644 --- a/src/Ryujinx.Graphics.Shader/CodeGen/Msl/Declarations.cs +++ b/src/Ryujinx.Graphics.Shader/CodeGen/Msl/Declarations.cs @@ -63,6 +63,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl public static void DeclareLocals(CodeGenContext context, StructuredFunction function, ShaderStage stage) { + DeclareMemories(context, context.Properties.LocalMemories.Values, isShared: false); switch (stage) { case ShaderStage.Vertex: @@ -106,6 +107,15 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Msl }; } + private static void DeclareMemories(CodeGenContext context, IEnumerable memories, bool isShared) + { + foreach (var memory in memories) + { + var typeName = GetVarTypeName(context, memory.Type & ~AggregateType.Array); + context.AppendLine($"{typeName} {memory.Name}[{memory.ArrayLength}];"); + } + } + private static void DeclareInputAttributes(CodeGenContext context, IEnumerable inputs) { if (context.Definitions.IaIndexing)