aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Graphics.Shader
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2019-12-08 23:55:22 -0300
committerThog <thog@protonmail.com>2020-01-09 02:13:00 +0100
commit0d9672f3aefde019de4023a872bb655960ef3e71 (patch)
treea2d1362c00ac0f0137dfb35e0128af5537ae0296 /Ryujinx.Graphics.Shader
parent375ee0ba9640c213bba727e85c15493700425557 (diff)
Use maximum shared memory size supported by hardware
Diffstat (limited to 'Ryujinx.Graphics.Shader')
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Glsl/Declarations.cs4
-rw-r--r--Ryujinx.Graphics.Shader/ShaderCapabilities.cs14
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