From 9e4f668f6cc59d47847472410228850fe5528daa Mon Sep 17 00:00:00 2001
From: gdkchan <gab.dark.100@gmail.com>
Date: Fri, 14 Feb 2020 07:29:58 -0300
Subject: [PATCH] Update bindless to indexed conversion code pattern match
 (#938)

* Update bindless to indexed conversion code pattern match

* Correct index shift
---
 .../Translation/Optimizations/BindlessToIndexed.cs  | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToIndexed.cs b/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToIndexed.cs
index 83f8fe9a7b..41f42dad17 100644
--- a/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToIndexed.cs
+++ b/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToIndexed.cs
@@ -45,7 +45,12 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations
                     continue;
                 }
 
-                if (!(ldcSrc1.AsgOp is Operation addOp))
+                if (!(ldcSrc1.AsgOp is Operation shrOp) || shrOp.Inst != Instruction.ShiftRightU32)
+                {
+                    continue;
+                }
+
+                if (!(shrOp.GetSource(0).AsgOp is Operation addOp) || addOp.Inst != Instruction.Add)
                 {
                     continue;
                 }
@@ -57,15 +62,15 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations
                     continue;
                 }
 
-                texOp.TurnIntoIndexed(addSrc1.Value);
+                texOp.TurnIntoIndexed(addSrc1.Value / 4);
 
                 Operand index = Local();
 
                 Operand source = addOp.GetSource(0);
 
-                Operation shrBy1 = new Operation(Instruction.ShiftRightU32, index, source, Const(1));
+                Operation shrBy3 = new Operation(Instruction.ShiftRightU32, index, source, Const(3));
 
-                block.Operations.AddBefore(node, shrBy1);
+                block.Operations.AddBefore(node, shrBy3);
 
                 texOp.SetSource(0, index);
             }