diff options
| author | gdkchan <gab.dark.100@gmail.com> | 2024-07-30 21:57:55 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-30 21:57:55 -0300 |
| commit | 56b2f847022a52ad57f41278dfec7d44e606a625 (patch) | |
| tree | 746b39f7c6fcac3557a8d5aae52d17f3e6732202 /src/Ryujinx.Graphics.Shader | |
| parent | 698e36bbd2c828ce419e1b9f0918c314c18bd9ae (diff) | |
Fix shader RegisterUsage pass only taking first operation dest into account (#7131)
* Fix shader RegisterUsage pass only taking first operation dest into account
* Shader cache version bump
Diffstat (limited to 'src/Ryujinx.Graphics.Shader')
| -rw-r--r-- | src/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs b/src/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs index e27e4707..1c724223 100644 --- a/src/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs +++ b/src/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs @@ -155,9 +155,14 @@ namespace Ryujinx.Graphics.Shader.Translation localInputs[block.Index] |= GetMask(register) & ~localOutputs[block.Index]; } - if (operation.Dest != null && operation.Dest.Type == OperandType.Register) + for (int dstIndex = 0; dstIndex < operation.DestsCount; dstIndex++) { - localOutputs[block.Index] |= GetMask(operation.Dest.GetRegister()); + Operand dest = operation.GetDest(dstIndex); + + if (dest != null && dest.Type == OperandType.Register) + { + localOutputs[block.Index] |= GetMask(dest.GetRegister()); + } } } } |
