From 04dfb86fdeb10f45c0a286309eb18affd47191af Mon Sep 17 00:00:00 2001 From: gdkchan Date: Sun, 24 Oct 2021 19:40:20 -0300 Subject: Preserve image types for shader bindless surface instructions (.D variants) (#2779) * Preserve image types for SULD/SUST .D variants * Make format unknown for surface atomic if bindless and not sized --- .../Translation/Optimizations/BindlessElimination.cs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'Ryujinx.Graphics.Shader/Translation/Optimizations') diff --git a/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs b/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs index a76df6a1..1b303caf 100644 --- a/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs +++ b/Ryujinx.Graphics.Shader/Translation/Optimizations/BindlessElimination.cs @@ -128,13 +128,16 @@ namespace Ryujinx.Graphics.Shader.Translation.Optimizations int cbufOffset = src0.GetCbufOffset(); int cbufSlot = src0.GetCbufSlot(); - if (texOp.Inst == Instruction.ImageAtomic) + if (texOp.Format == TextureFormat.Unknown) { - texOp.Format = config.GetTextureFormatAtomic(cbufOffset, cbufSlot); - } - else - { - texOp.Format = config.GetTextureFormat(cbufOffset, cbufSlot); + if (texOp.Inst == Instruction.ImageAtomic) + { + texOp.Format = config.GetTextureFormatAtomic(cbufOffset, cbufSlot); + } + else + { + texOp.Format = config.GetTextureFormat(cbufOffset, cbufSlot); + } } SetHandle(config, texOp, cbufOffset, cbufSlot, false); -- cgit v1.2.3