From 9176180abb119ff76c4f63eac09343faee686a18 Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Tue, 12 Jun 2018 09:26:49 -0300
Subject: [PATCH] Minor shader fixes

---
 Ryujinx.Graphics/Gal/Shader/GlslDecl.cs           | 3 ++-
 Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs     | 3 ++-
 Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs | 2 +-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs b/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs
index 43a04813c7..4002c29a5d 100644
--- a/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs
+++ b/Ryujinx.Graphics/Gal/Shader/GlslDecl.cs
@@ -159,7 +159,8 @@ namespace Ryujinx.Graphics.Gal.Shader
                 case ShaderIrOperAbuf Abuf:
                 {
                     //This is a built-in input variable.
-                    if (Abuf.Offs == VertexIdAttr)
+                    if (Abuf.Offs == VertexIdAttr ||
+                        Abuf.Offs == InstanceIdAttr)
                     {
                         break;
                     }
diff --git a/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs b/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
index 71a53a5a3a..1bcedacba6 100644
--- a/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
+++ b/Ryujinx.Graphics/Gal/Shader/GlslDecompiler.cs
@@ -975,7 +975,8 @@ namespace Ryujinx.Graphics.Gal.Shader
             switch (Node)
             {
                 case ShaderIrOperAbuf Abuf:
-                    return Abuf.Offs == GlslDecl.VertexIdAttr
+                    return Abuf.Offs == GlslDecl.VertexIdAttr ||
+                           Abuf.Offs == GlslDecl.InstanceIdAttr
                         ? OperType.I32
                         : OperType.F32;
 
diff --git a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs
index 3299ebab6b..a8ad5ec2ec 100644
--- a/Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs
+++ b/Ryujinx.Graphics/Gal/Shader/ShaderDecodeHelper.cs
@@ -14,7 +14,7 @@ namespace Ryujinx.Graphics.Gal.Shader
 
             for (int Index = 0; Index <= Size; Index++)
             {
-                Opers[Index] = new ShaderIrOperAbuf(Abuf, Reg);
+                Opers[Index] = new ShaderIrOperAbuf(Abuf + Index * 4, Reg);
             }
 
             return Opers;