Browse Source

fixed converted and clean code

pull/3582/head
John 2 weeks ago
committed by crueter
parent
commit
8cea8bdc13
  1. 15
      src/shader_recompiler/ir_opt/rescaling_pass.cpp

15
src/shader_recompiler/ir_opt/rescaling_pass.cpp

@ -64,21 +64,24 @@ void VisitMark(IR::Block& block, IR::Inst& inst) {
break; break;
} }
} }
if (must_patch_outside) { if (must_patch_outside) {
const auto it{IR::Block::InstructionList::s_iterator_to(inst)}; const auto it{IR::Block::InstructionList::s_iterator_to(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)};
IR::Value converted;
IR::IREmitter ir{block, it};
if (Settings::values.rescale_hack.GetValue()) {
IR::Inst* const new_inst{&*block.PrependNewInst(it, inst)};
const IR::F32 up_factor{ir.FPRecip(ir.ResolutionDownFactor())}; const IR::F32 up_factor{ir.FPRecip(ir.ResolutionDownFactor())};
const IR::Value converted{ir.FPMul(new_inst, up_factor)};
converted = ir.FPMul(IR::Value{new_inst}, up_factor);
} }
else { else {
IR::IREmitter ir{block, it};
IR::Inst* const new_inst{&*block.PrependNewInst(it, inst)}; 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 new_bitcast{ir.ConvertUToF(32, 32, IR::Value{new_inst})};
const IR::F32 up_factor{ir.FPRecip(ir.ResolutionDownFactor())}; const IR::F32 up_factor{ir.FPRecip(ir.ResolutionDownFactor())};
const IR::Value converted{ir.FPMul(new_bitcast, up_factor)};
converted = ir.FPMul(new_bitcast, up_factor);
} }
inst.ReplaceUsesWith(converted); inst.ReplaceUsesWith(converted);
} }
break; break;

Loading…
Cancel
Save