From 476b4683cf428cddef3abbcf256ab7a931b9977c Mon Sep 17 00:00:00 2001 From: riperiperi Date: Fri, 25 Nov 2022 14:39:03 +0000 Subject: Fix CB0 alignment with addresses used for 8/16-bit LDG/STG (#3897) This replacement is meant to be done with the original identified byteOffset, not the one assigned later on by the below conditionals (that already has the constant offset added, for instance). This fixes videos being pixelated in Xenoblade 3, and other regressions that might have happened since #3847. --- .../Translation/Optimizations/GlobalToStorage.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'Ryujinx.Graphics.Shader/Translation/Optimizations') diff --git a/Ryujinx.Graphics.Shader/Translation/Optimizations/GlobalToStorage.cs b/Ryujinx.Graphics.Shader/Translation/Optimizations/GlobalToStorage.cs index 25c0eb25..7aabcc9e 100644 --- a/Ryujinx.Graphics.Shader/Translation/Optimizations/GlobalToStorage.cs +++ b/Ryujinx.Graphics.Shader/Translation/Optimizations/GlobalToStorage.cs @@ -128,6 +128,11 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations GetStorageOffset(block, Utils.FindLastOperation(addrLow, block), baseAddressCbOffset) : (null, 0); + if (byteOffset != null) + { + ReplaceAddressAlignment(node.List, addrLow, byteOffset, constantOffset); + } + if (byteOffset == null) { Operand baseAddrLow = Cbuf(0, baseAddressCbOffset); @@ -156,11 +161,6 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations byteOffset = offset; } - if (byteOffset != null) - { - ReplaceAddressAlignment(node.List, addrLow, byteOffset, constantOffset); - } - if (isStg16Or8) { return byteOffset; -- cgit v1.2.3