Parcourir la source

Ensure a valid shared memory size is used

gdkchan il y a 6 ans
Parent
commit
ad3bc2531b
1 fichiers modifiés avec 4 ajouts et 1 suppressions
  1. 4 1
      Ryujinx.Graphics.Gpu/Engine/Compute.cs

+ 4 - 1
Ryujinx.Graphics.Gpu/Engine/Compute.cs

@@ -20,9 +20,12 @@ namespace Ryujinx.Graphics.Gpu.Engine
 
 
             ulong shaderGpuVa = shaderBaseAddress.Pack() + (uint)dispatchParams.ShaderOffset;
             ulong shaderGpuVa = shaderBaseAddress.Pack() + (uint)dispatchParams.ShaderOffset;
 
 
+            // Note: A size of 0 is also invalid, the size must be at least 1.
+            int sharedMemorySize = Math.Clamp(dispatchParams.SharedMemorySize & 0xffff, 1, _context.Capabilities.MaximumComputeSharedMemorySize);
+
             ComputeShader cs = _shaderCache.GetComputeShader(
             ComputeShader cs = _shaderCache.GetComputeShader(
                 shaderGpuVa,
                 shaderGpuVa,
-                dispatchParams.SharedMemorySize & 0xffff,
+                sharedMemorySize,
                 dispatchParams.UnpackBlockSizeX(),
                 dispatchParams.UnpackBlockSizeX(),
                 dispatchParams.UnpackBlockSizeY(),
                 dispatchParams.UnpackBlockSizeY(),
                 dispatchParams.UnpackBlockSizeZ());
                 dispatchParams.UnpackBlockSizeZ());