diff options
author | riperiperi <rhy3756547@hotmail.com> | 2022-11-25 14:39:03 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-25 14:39:03 +0000 |
commit | 476b4683cf428cddef3abbcf256ab7a931b9977c (patch) | |
tree | fa49a87907b6e42e9a58fe96077858bf90db0893 | |
parent | 5fb5079730e249d426f3f1afb45c4519708dfe4b (diff) |
Fix CB0 alignment with addresses used for 8/16-bit LDG/STG (#3897)1.1.387
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.
-rw-r--r-- | Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs | 2 | ||||
-rw-r--r-- | Ryujinx.Graphics.Shader/Translation/Optimizations/GlobalToStorage.cs | 10 |
2 files changed, 6 insertions, 6 deletions
diff --git a/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs b/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs index a91ab9e4..1d4842aa 100644 --- a/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs +++ b/Ryujinx.Graphics.Gpu/Shader/DiskCache/DiskCacheHostStorage.cs @@ -22,7 +22,7 @@ namespace Ryujinx.Graphics.Gpu.Shader.DiskCache private const ushort FileFormatVersionMajor = 1; private const ushort FileFormatVersionMinor = 2; private const uint FileFormatVersionPacked = ((uint)FileFormatVersionMajor << 16) | FileFormatVersionMinor; - private const uint CodeGenVersion = 3868; + private const uint CodeGenVersion = 3897; private const string SharedTocFileName = "shared.toc"; private const string SharedDataFileName = "shared.data"; 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; |