diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2019-12-08 23:55:22 -0300 |
|---|---|---|
| committer | Thog <thog@protonmail.com> | 2020-01-09 02:13:00 +0100 |
| commit | 0d9672f3aefde019de4023a872bb655960ef3e71 (patch) | |
| tree | a2d1362c00ac0f0137dfb35e0128af5537ae0296 /Ryujinx.Graphics.Shader | |
| parent | 375ee0ba9640c213bba727e85c15493700425557 (diff) | |
Use maximum shared memory size supported by hardware
Diffstat (limited to 'Ryujinx.Graphics.Shader')
| -rw-r--r-- | Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs | 4 | ||||
| -rw-r--r-- | Ryujinx.Graphics.Shader/ShaderCapabilities.cs | 14 |
2 files changed, 12 insertions, 6 deletions
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs b/Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs index 5a84ff49..1c3cf245 100644 --- a/Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs +++ b/Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs @@ -75,7 +75,9 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl if (context.Config.Stage == ShaderStage.Compute) { - context.AppendLine($"shared uint {DefaultNames.SharedMemoryName}[0x100];"); + string size = NumberFormatter.FormatInt(context.Config.Capabilities.MaximumComputeSharedMemorySize / 4); + + context.AppendLine($"shared uint {DefaultNames.SharedMemoryName}[{size}];"); context.AppendLine(); } diff --git a/Ryujinx.Graphics.Shader/ShaderCapabilities.cs b/Ryujinx.Graphics.Shader/ShaderCapabilities.cs index b5b459a8..8e0c95e9 100644 --- a/Ryujinx.Graphics.Shader/ShaderCapabilities.cs +++ b/Ryujinx.Graphics.Shader/ShaderCapabilities.cs @@ -2,19 +2,23 @@ namespace Ryujinx.Graphics.Shader { public struct ShaderCapabilities { - private static readonly ShaderCapabilities _default = new ShaderCapabilities(32768, 16); + // Initialize with default values for Maxwell. + private static readonly ShaderCapabilities _default = new ShaderCapabilities(32768, 49152, 16); public static ShaderCapabilities Default => _default; - public int MaximumViewportDimensions { get; } - public int StorageBufferOffsetAlignment { get; } + public int MaximumViewportDimensions { get; } + public int MaximumComputeSharedMemorySize { get; } + public int StorageBufferOffsetAlignment { get; } public ShaderCapabilities( int maximumViewportDimensions, + int maximumComputeSharedMemorySize, int storageBufferOffsetAlignment) { - MaximumViewportDimensions = maximumViewportDimensions; - StorageBufferOffsetAlignment = storageBufferOffsetAlignment; + MaximumViewportDimensions = maximumViewportDimensions; + MaximumComputeSharedMemorySize = maximumComputeSharedMemorySize; + StorageBufferOffsetAlignment = storageBufferOffsetAlignment; } } }
\ No newline at end of file |
