소스 검색

Ensure a valid shared memory size is used

gdkchan 6 년 전
부모
커밋
ad3bc2531b
1개의 변경된 파일4개의 추가작업 그리고 1개의 파일을 삭제
  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;
 
+            // 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(
                 shaderGpuVa,
-                dispatchParams.SharedMemorySize & 0xffff,
+                sharedMemorySize,
                 dispatchParams.UnpackBlockSizeX(),
                 dispatchParams.UnpackBlockSizeY(),
                 dispatchParams.UnpackBlockSizeZ());