aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Guillemard <thog@protonmail.com>2018-12-18 01:32:12 +0100
committergdkchan <gab.dark.100@gmail.com>2018-12-17 22:32:12 -0200
commit33e7c898222eee55fd8df80088708c8f8906bd14 (patch)
tree211b8212502e4cdba8a56b03aace1369d51ec67c
parent6aaf9ccb533d1485361f55fa7d6d16dda719bf06 (diff)
Move MaxUboSize definition (#530)
* Move MaxUboSize definition This fix a crash on Ryujinx.ShaderTools caused by the absence of an OpenGL context. * Use a constant for the value in ShaderTools * Address comments
-rw-r--r--Ryujinx.Graphics/Gal/OpenGL/OGLShader.cs2
-rw-r--r--Ryujinx.Graphics/Gal/Shader/GlslDecl.cs3
-rw-r--r--Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs8
-rw-r--r--Ryujinx.ShaderTools/Program.cs4
4 files changed, 10 insertions, 7 deletions
diff --git a/Ryujinx.Graphics/Gal/OpenGL/OGLShader.cs b/Ryujinx.Graphics/Gal/OpenGL/OGLShader.cs
index b45a3a3a..10a9120d 100644
--- a/Ryujinx.Graphics/Gal/OpenGL/OGLShader.cs
+++ b/Ryujinx.Graphics/Gal/OpenGL/OGLShader.cs
@@ -53,7 +53,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
{
GlslProgram Program;
- GlslDecompiler Decompiler = new GlslDecompiler();
+ GlslDecompiler Decompiler = new GlslDecompiler(OGLLimit.MaxUboSize);
int ShaderDumpIndex = ShaderDumper.DumpIndex;
diff --git a/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs b/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs
index f1b63a8d..b144cef3 100644
--- a/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs
+++ b/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs
@@ -1,4 +1,3 @@
-using Ryujinx.Graphics.Gal.OpenGL;
using System;
using System.Collections.Generic;
@@ -50,8 +49,6 @@ namespace Ryujinx.Graphics.Gal.Shader
public const string SsyStackName = "ssy_stack";
public const string SsyCursorName = "ssy_cursor";
- public static int MaxUboSize => OGLLimit.MaxUboSize / 16;
-
private string[] StagePrefixes = new string[] { "vp", "tcp", "tep", "gp", "fp" };
private string StagePrefix;
diff --git a/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs b/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
index 5b62ac3a..92bdd658 100644
--- a/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
+++ b/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
@@ -31,7 +31,9 @@ namespace Ryujinx.Graphics.Gal.Shader
private StringBuilder SB;
- public GlslDecompiler()
+ public int MaxUboSize { get; }
+
+ public GlslDecompiler(int MaxUboSize)
{
InstsExpr = new Dictionary<ShaderIrInst, GetInstExpr>()
{
@@ -106,6 +108,8 @@ namespace Ryujinx.Graphics.Gal.Shader
{ ShaderIrInst.Utof, GetUtofExpr },
{ ShaderIrInst.Xor, GetXorExpr }
};
+
+ this.MaxUboSize = MaxUboSize / 16;
}
public GlslProgram Decompile(
@@ -259,7 +263,7 @@ namespace Ryujinx.Graphics.Gal.Shader
{
SB.AppendLine($"layout (std140) uniform {DeclInfo.Name} {{");
- SB.AppendLine($"{IdentationStr}vec4 {DeclInfo.Name}_data[{GlslDecl.MaxUboSize}];");
+ SB.AppendLine($"{IdentationStr}vec4 {DeclInfo.Name}_data[{MaxUboSize}];");
SB.AppendLine("};");
}
diff --git a/Ryujinx.ShaderTools/Program.cs b/Ryujinx.ShaderTools/Program.cs
index 3597f256..30fa71ae 100644
--- a/Ryujinx.ShaderTools/Program.cs
+++ b/Ryujinx.ShaderTools/Program.cs
@@ -7,11 +7,13 @@ namespace Ryujinx.ShaderTools
{
class Program
{
+ private static readonly int MaxUboSize = 65536;
+
static void Main(string[] args)
{
if (args.Length == 2)
{
- GlslDecompiler Decompiler = new GlslDecompiler();
+ GlslDecompiler Decompiler = new GlslDecompiler(MaxUboSize);
GalShaderType ShaderType = GalShaderType.Vertex;