From a7caa07fdd5225c2082aac73e653f6fb981c3156 Mon Sep 17 00:00:00 2001 From: GPUCode Date: Fri, 8 Dec 2023 00:21:11 +0200 Subject: [PATCH] texture_pass: Fix wrong descriptor used with rectangle texture patching --- src/shader_recompiler/ir_opt/texture_pass.cpp | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/shader_recompiler/ir_opt/texture_pass.cpp b/src/shader_recompiler/ir_opt/texture_pass.cpp index d374c976a9..536be0f69d 100644 --- a/src/shader_recompiler/ir_opt/texture_pass.cpp +++ b/src/shader_recompiler/ir_opt/texture_pass.cpp @@ -538,14 +538,6 @@ void TexturePass(Environment& env, IR::Program& program, const HostTranslateInfo flags.type.Assign(ReadTextureType(env, cbuf)); inst->SetFlags(flags); break; - case IR::Opcode::ImageSampleImplicitLod: - if (flags.type != TextureType::Color2D) { - break; - } - if (ReadTextureType(env, cbuf) == TextureType::Color2DRect) { - PatchImageSampleImplicitLod(*texture_inst.block, *texture_inst.inst); - } - break; case IR::Opcode::ImageFetch: if (flags.type == TextureType::Color2D || flags.type == TextureType::Color2DRect || flags.type == TextureType::ColorArray2D) { @@ -662,6 +654,19 @@ void TexturePass(Environment& env, IR::Program& program, const HostTranslateInfo PatchTexelFetch(*texture_inst.block, *texture_inst.inst, pixel_format); } } + + switch (inst->GetOpcode()) { + case IR::Opcode::ImageSampleImplicitLod: + if (flags.type != TextureType::Color2D) { + break; + } + if (ReadTextureType(env, cbuf) == TextureType::Color2DRect) { + PatchImageSampleImplicitLod(*texture_inst.block, *texture_inst.inst); + } + break; + default: + break; + } } }