forked from Mirror/Ryujinx
Update bindless to indexed conversion code pattern match (#938)
* Update bindless to indexed conversion code pattern match * Correct index shift
This commit is contained in:
parent
5a9dba0756
commit
9e4f668f6c
1 changed files with 9 additions and 4 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue