diff options
author | gdkchan <gab.dark.100@gmail.com> | 2019-12-09 01:00:56 -0300 |
---|---|---|
committer | Thog <thog@protonmail.com> | 2020-01-09 02:13:00 +0100 |
commit | 66d91cbc6cdd0310c567eb9f979458bd80ea0269 (patch) | |
tree | 3ca6e149718a30c363801c360ca58fc9a4b53613 /Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs | |
parent | 0d9672f3aefde019de4023a872bb655960ef3e71 (diff) |
Use dispatch params shared memory size when available
Diffstat (limited to 'Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs')
-rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/ShaderCache.cs | 8 |
1 files changed, 5 insertions, 3 deletions
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<ShaderAddresses, List<GraphicsShader>>(); } - 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<ComputeShader> 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<byte, int>(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)); |