aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2020-10-17 05:16:40 -0300
committerGitHub <noreply@github.com>2020-10-17 10:16:40 +0200
commit5264d55b39e15c7236d6114d74a9288fb0d62e3a (patch)
treee053dffd5f41efd0b2500fdde89a0c69de73b5bf
parentb4d8d893a4abb20b96fc6171841a858005906445 (diff)
Fix gl_in being used with built-in variables that are not per-vertex (#1624)
-rw-r--r--Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs2
-rw-r--r--Ryujinx.Graphics.Shader/Translation/AttributeConsts.cs1
2 files changed, 2 insertions, 1 deletions
diff --git a/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs b/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs
index d6f30b48..465356e6 100644
--- a/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs
+++ b/Ryujinx.Graphics.Shader/CodeGen/Glsl/OperandManager.cs
@@ -206,7 +206,7 @@ namespace Ryujinx.Graphics.Shader.CodeGen.Glsl
string name = builtInAttr.Name;
- if (config.Stage == ShaderStage.Geometry && !isOutAttr)
+ if (config.Stage == ShaderStage.Geometry && (value & AttributeConsts.SpecialMask) == 0 && !isOutAttr)
{
name = $"gl_in[{indexExpr}].{name}";
}
diff --git a/Ryujinx.Graphics.Shader/Translation/AttributeConsts.cs b/Ryujinx.Graphics.Shader/Translation/AttributeConsts.cs
index c194b5c2..b618dbc3 100644
--- a/Ryujinx.Graphics.Shader/Translation/AttributeConsts.cs
+++ b/Ryujinx.Graphics.Shader/Translation/AttributeConsts.cs
@@ -31,6 +31,7 @@ namespace Ryujinx.Graphics.Shader.Translation
// Note: Those attributes are used internally by the translator
// only, they don't exist on Maxwell.
+ public const int SpecialMask = 0xff << 24;
public const int FragmentOutputDepth = 0x1000000;
public const int FragmentOutputColorBase = 0x1000010;
public const int FragmentOutputColorEnd = FragmentOutputColorBase + 8 * 16;