0
0
Fork 0

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
This commit is contained in:
Thomas Guillemard 2018-12-18 01:32:12 +01:00 committed by gdkchan
parent 6aaf9ccb53
commit 33e7c89822
4 changed files with 10 additions and 7 deletions

View file

@ -53,7 +53,7 @@ namespace Ryujinx.Graphics.Gal.OpenGL
{ {
GlslProgram Program; GlslProgram Program;
GlslDecompiler Decompiler = new GlslDecompiler(); GlslDecompiler Decompiler = new GlslDecompiler(OGLLimit.MaxUboSize);
int ShaderDumpIndex = ShaderDumper.DumpIndex; int ShaderDumpIndex = ShaderDumper.DumpIndex;

View file

@ -1,4 +1,3 @@
using Ryujinx.Graphics.Gal.OpenGL;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -50,8 +49,6 @@ namespace Ryujinx.Graphics.Gal.Shader
public const string SsyStackName = "ssy_stack"; public const string SsyStackName = "ssy_stack";
public const string SsyCursorName = "ssy_cursor"; 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[] StagePrefixes = new string[] { "vp", "tcp", "tep", "gp", "fp" };
private string StagePrefix; private string StagePrefix;

View file

@ -31,7 +31,9 @@ namespace Ryujinx.Graphics.Gal.Shader
private StringBuilder SB; private StringBuilder SB;
public GlslDecompiler() public int MaxUboSize { get; }
public GlslDecompiler(int MaxUboSize)
{ {
InstsExpr = new Dictionary<ShaderIrInst, GetInstExpr>() InstsExpr = new Dictionary<ShaderIrInst, GetInstExpr>()
{ {
@ -106,6 +108,8 @@ namespace Ryujinx.Graphics.Gal.Shader
{ ShaderIrInst.Utof, GetUtofExpr }, { ShaderIrInst.Utof, GetUtofExpr },
{ ShaderIrInst.Xor, GetXorExpr } { ShaderIrInst.Xor, GetXorExpr }
}; };
this.MaxUboSize = MaxUboSize / 16;
} }
public GlslProgram Decompile( public GlslProgram Decompile(
@ -259,7 +263,7 @@ namespace Ryujinx.Graphics.Gal.Shader
{ {
SB.AppendLine($"layout (std140) uniform {DeclInfo.Name} {{"); 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("};"); SB.AppendLine("};");
} }

View file

@ -7,11 +7,13 @@ namespace Ryujinx.ShaderTools
{ {
class Program class Program
{ {
private static readonly int MaxUboSize = 65536;
static void Main(string[] args) static void Main(string[] args)
{ {
if (args.Length == 2) if (args.Length == 2)
{ {
GlslDecompiler Decompiler = new GlslDecompiler(); GlslDecompiler Decompiler = new GlslDecompiler(MaxUboSize);
GalShaderType ShaderType = GalShaderType.Vertex; GalShaderType ShaderType = GalShaderType.Vertex;