Skip to content

Commit f93677b

Browse files
authored
resource_tracking_pass: Fix converting dimensions to float for normalization. (#1790)
1 parent 8b88344 commit f93677b

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/shader_recompiler/ir/passes/resource_tracking_pass.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -586,12 +586,13 @@ void PatchImageSampleInstruction(IR::Block& block, IR::Inst& inst, Info& info,
586586
const auto dimensions =
587587
unnormalized ? ir.ImageQueryDimension(ir.Imm32(image_binding), ir.Imm32(0u), ir.Imm1(false))
588588
: IR::Value{};
589-
const auto get_coord = [&](u32 idx, u32 dim_idx) -> IR::Value {
590-
const auto coord = get_addr_reg(idx);
589+
const auto get_coord = [&](u32 coord_idx, u32 dim_idx) -> IR::Value {
590+
const auto coord = get_addr_reg(coord_idx);
591591
if (unnormalized) {
592592
// Normalize the coordinate for sampling, dividing by its corresponding dimension.
593-
return ir.FPDiv(coord,
594-
ir.BitCast<IR::F32>(IR::U32{ir.CompositeExtract(dimensions, dim_idx)}));
593+
const auto dim =
594+
ir.ConvertUToF(32, 32, IR::U32{ir.CompositeExtract(dimensions, dim_idx)});
595+
return ir.FPDiv(coord, dim);
595596
}
596597
return coord;
597598
};

0 commit comments

Comments
 (0)