From 66d91cbc6cdd0310c567eb9f979458bd80ea0269 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Mon, 9 Dec 2019 01:00:56 -0300 Subject: Use dispatch params shared memory size when available --- Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs | 8 +++++--- 1 file changed, 5 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 02775798..7b9c20eb 100644 --- a/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs +++ b/Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs @@ -32,7 +32,7 @@ namespace Ryujinx.Graphics.Gpu.Shader _gpPrograms = new Dictionary>(); } - public ComputeShader GetComputeShader(ulong gpuVa, int localSizeX, int localSizeY, int localSizeZ) + public ComputeShader GetComputeShader(ulong gpuVa, int sharedMemorySize, int localSizeX, int localSizeY, int localSizeZ) { bool isCached = _cpPrograms.TryGetValue(gpuVa, out List list); @@ -47,7 +47,7 @@ namespace Ryujinx.Graphics.Gpu.Shader } } - CachedShader shader = TranslateComputeShader(gpuVa, localSizeX, localSizeY, localSizeZ); + CachedShader shader = TranslateComputeShader(gpuVa, sharedMemorySize, localSizeX, localSizeY, localSizeZ); IShader hostShader = _context.Renderer.CompileShader(shader.Program); @@ -192,7 +192,7 @@ namespace Ryujinx.Graphics.Gpu.Shader return false; } - private CachedShader TranslateComputeShader(ulong gpuVa, int localSizeX, int localSizeY, int localSizeZ) + private CachedShader TranslateComputeShader(ulong gpuVa, int sharedMemorySize, int localSizeX, int localSizeY, int localSizeZ) { if (gpuVa == 0) { @@ -212,6 +212,8 @@ namespace Ryujinx.Graphics.Gpu.Shader int[] codeCached = MemoryMarshal.Cast(code.Slice(0, program.Size)).ToArray(); + program.Replace(DefineNames.SharedMemorySize, sharedMemorySize.ToString(CultureInfo.InvariantCulture)); + program.Replace(DefineNames.LocalSizeX, localSizeX.ToString(CultureInfo.InvariantCulture)); program.Replace(DefineNames.LocalSizeY, localSizeY.ToString(CultureInfo.InvariantCulture)); program.Replace(DefineNames.LocalSizeZ, localSizeZ.ToString(CultureInfo.InvariantCulture)); -- cgit v1.2.3