diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2024-06-16 14:46:27 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-16 14:46:27 -0300 |
| commit | 3193ef10833bc0d27e2701c7759ab02674d672d3 (patch) | |
| tree | 8aae569f4943373450d181908f858cf03c0a0b42 /src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToArray.cs | |
| parent | 5a878ae9afe73d12bd344c139ee1b485335af3ff (diff) | |
Extend bindless elimination to catch a few more specific cases (#6921)
* Catch more cases on bindless elimination
* Match blocks with the same comparison condition
* Shader cache version bump
Diffstat (limited to 'src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToArray.cs')
| -rw-r--r-- | src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToArray.cs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToArray.cs b/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToArray.cs index 8eed139d..1e0b3b64 100644 --- a/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToArray.cs +++ b/src/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessToArray.cs @@ -126,7 +126,9 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations continue; } - if (texOp.GetSource(0).AsgOp is not Operation handleAsgOp) + Operand bindlessHandle = Utils.FindLastOperation(texOp.GetSource(0), block); + + if (bindlessHandle.AsgOp is not Operation handleAsgOp) { continue; } @@ -137,8 +139,8 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations if (handleAsgOp.Inst == Instruction.BitwiseOr) { - Operand src0 = handleAsgOp.GetSource(0); - Operand src1 = handleAsgOp.GetSource(1); + Operand src0 = Utils.FindLastOperation(handleAsgOp.GetSource(0), block); + Operand src1 = Utils.FindLastOperation(handleAsgOp.GetSource(1), block); if (src0.Type == OperandType.ConstantBuffer && src1.AsgOp is Operation) { |
