aco: fix voffset missing when buffer store base >=4096

Regression on test:
  dEQP-GLES31.functional.geometry_shading.basic.output_256

voffset is missing if buffer store base >=4096, we need to
re-calculate offen after resolve_excess_vmem_const_offset().

Fixes: cdaf269924 ("aco: inline store_vmem_mubuf/emit_single_mubuf_store")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32767>
This commit is contained in:
Qiang Yu
2024-12-23 17:25:19 +08:00
committed by Marge Bot
parent 96c41f5926
commit dff14d102d

View File

@@ -7092,6 +7092,9 @@ visit_store_buffer(isel_context* ctx, nir_intrinsic_instr* intrin)
unsigned const_offset = resolve_excess_vmem_const_offset(
bld, write_voffset, offsets[i] + nir_intrinsic_base(intrin));
/* write_voffset may be updated in resolve_excess_vmem_const_offset(). */
offen = write_voffset.id();
Operand vaddr_op(v1);
if (offen && idxen)
vaddr_op = bld.pseudo(aco_opcode::p_create_vector, bld.def(v2), idx, write_voffset);