Skip to content

ir3: Reduce the maximum allowed imm offset for shared var load/store

STL/LDL have 13 bits to store imm offset. However the most significant bit in the offset is a sign bit, so the positive offset is limited by 12 bits.

nir_opt_offsets only has the upper limit and doesn't deal with negative offsets, so shared_max should be changed to (1 << 12) - 1.

The issue was found in "Monster Hunter: World".

Fixes: 0b2da9d7 ("ir3: Limit the maximum imm offset in nir_opt_offset for shared vars")


With addition of !20099 (merged) - "Monster Hunter: World" now renders correctly:

image

Merge request reports