aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Shader
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2024-07-30 21:57:55 -0300
committerGitHub <noreply@github.com>2024-07-30 21:57:55 -0300
commit56b2f847022a52ad57f41278dfec7d44e606a625 (patch)
tree746b39f7c6fcac3557a8d5aae52d17f3e6732202 /src/Ryujinx.Graphics.Shader
parent698e36bbd2c828ce419e1b9f0918c314c18bd9ae (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.cs9
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());
+ }
}
}
}