From d36c4bfba5a849b3efebe72ca44e66c9714b7e60 Mon Sep 17 00:00:00 2001 From: gdkchan Date: Tue, 13 Oct 2020 00:44:55 -0300 Subject: [PATCH] Fix output component register on pixel shaders (#1613) * Fix output component register on pixel shaders * Clean up usings * Do not advance if no component is enabled for the target, this keeps the previous behavior --- .../Translation/EmitterContext.cs | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs b/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs index 79685154d..c5ebe9e73 100644 --- a/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs +++ b/Ryujinx.Graphics.Shader/Translation/EmitterContext.cs @@ -1,4 +1,3 @@ -using Ryujinx.Common; using Ryujinx.Graphics.Shader.Decoders; using Ryujinx.Graphics.Shader.IntermediateRepresentation; using System.Collections.Generic; @@ -85,7 +84,7 @@ namespace Ryujinx.Graphics.Shader.Translation this.Copy(dest, src); } - int regIndex = 0; + int regIndexBase = 0; for (int rtIndex = 0; rtIndex < 8; rtIndex++) { @@ -100,7 +99,7 @@ namespace Ryujinx.Graphics.Shader.Translation int fragmentOutputColorAttr = AttributeConsts.FragmentOutputColorBase + rtIndex * 16; - Operand src = Register(regIndex, RegisterType.Gpr); + Operand src = Register(regIndexBase + component, RegisterType.Gpr); // Perform B <-> R swap if needed, for BGRA formats (not supported on OpenGL). if (component == 0 || component == 2) @@ -125,11 +124,12 @@ namespace Ryujinx.Graphics.Shader.Translation { this.Copy(Attribute(fragmentOutputColorAttr + component * 4), src); } - - regIndex++; } - regIndex = BitUtils.AlignUp(regIndex, 4); + if (target.Enabled) + { + regIndexBase += 4; + } } } }