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:
parent
6aaf9ccb53
commit
33e7c89822
4 changed files with 10 additions and 7 deletions
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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("};");
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
Reference in a new issue