From 56b2f847022a52ad57f41278dfec7d44e606a625 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Tue, 30 Jul 2024 21:57:55 -0300 Subject: 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 --- src/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'src/Ryujinx.Graphics.Shader/Translation/RegisterUsage.cs') 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()); + } } } } -- cgit v1.2.3