From 9a1554b3d398f24ecd24d0c71051d4ff3c0045a3 Mon Sep 17 00:00:00 2001 From: John Date: Thu, 19 Feb 2026 09:58:50 +0100 Subject: [PATCH] Update src/shader_recompiler/ir_opt/rescaling_pass.cpp --- src/shader_recompiler/ir_opt/rescaling_pass.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/shader_recompiler/ir_opt/rescaling_pass.cpp b/src/shader_recompiler/ir_opt/rescaling_pass.cpp index cae8110a26..44d2154ffa 100644 --- a/src/shader_recompiler/ir_opt/rescaling_pass.cpp +++ b/src/shader_recompiler/ir_opt/rescaling_pass.cpp @@ -66,11 +66,19 @@ void VisitMark(IR::Block& block, IR::Inst& inst) { } if (must_patch_outside) { const auto it{IR::Block::InstructionList::s_iterator_to(inst)}; - IR::IREmitter ir{block, it}; - IR::Inst* const new_inst{&*block.PrependNewInst(it, inst)}; - const IR::F32 new_bitcast{ir.ConvertUToF(32, 32, IR::Value{new_inst})}; + if (Settings::values.rescale_hack.GetValue()){ + IR::IREmitter ir{block, IR::Block::InstructionList::s_iterator_to(inst)}; + const IR::F32 new_inst{&*block.PrependNewInst(it, inst)}; + } + else { + IR::IREmitter ir{block, it}; + IR::Inst* const new_inst{&*block.PrependNewInst(it, inst)}; + const IR::F32 new_bitcast{ir.ConvertUToF(32, 32, IR::Value{new_inst})}; + } const IR::F32 up_factor{ir.FPRecip(ir.ResolutionDownFactor())}; - const IR::Value converted{ir.FPMul(new_bitcast, up_factor)}; + const IR::Value converted{ir.FPMul(Settings::values.rescale_hack.GetValue() ? new_inst : new_bitcast, up_factor) +}; + inst.ReplaceUsesWith(converted); } break;