From 6a98c643cabeea25dc42e19fe475a687a034a532 Mon Sep 17 00:00:00 2001 From: gdk Date: Sat, 30 Nov 2019 23:53:09 -0300 Subject: Add a pass to turn global memory access into storage access, and do all storage related transformations on IR --- Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs') diff --git a/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs b/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs index a781de42..8e39662d 100644 --- a/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs +++ b/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs @@ -199,7 +199,7 @@ namespace Ryujinx.Graphics.Gpu.Shader Span code = _context.MemoryAccessor.Read(gpuVa, MaxProgramSize); - program = Translator.Translate(code, flags); + program = Translator.Translate(code, GetShaderCapabilities(), flags); int[] codeCached = MemoryMarshal.Cast(code.Slice(0, program.Size)).ToArray(); @@ -238,7 +238,7 @@ namespace Ryujinx.Graphics.Gpu.Shader Span codeA = _context.MemoryAccessor.Read(gpuVaA, MaxProgramSize); Span codeB = _context.MemoryAccessor.Read(gpuVa, MaxProgramSize); - program = Translator.Translate(codeA, codeB, flags); + program = Translator.Translate(codeA, codeB, GetShaderCapabilities(), flags); // TODO: We should also check "codeA" into account. codeCached = MemoryMarshal.Cast(codeB.Slice(0, program.Size)).ToArray(); @@ -258,7 +258,7 @@ namespace Ryujinx.Graphics.Gpu.Shader { Span code = _context.MemoryAccessor.Read(gpuVa, MaxProgramSize); - program = Translator.Translate(code, flags); + program = Translator.Translate(code, GetShaderCapabilities(), flags); codeCached = MemoryMarshal.Cast(code.Slice(0, program.Size)).ToArray(); @@ -342,5 +342,10 @@ namespace Ryujinx.Graphics.Gpu.Shader isFirst = false; } } + + private ShaderCapabilities GetShaderCapabilities() + { + return new ShaderCapabilities(_context.Capabilities.StorageBufferOffsetAlignment); + } } } \ No newline at end of file -- cgit v1.2.3