From ee11e9183deec87c2908266203073aca26f68c27 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Wed, 7 Jul 2021 10:56:32 +0200 Subject: [PATCH] broadcom/compiler: don't ignore constant offset on per-vertex input loads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes: dEQP-VK.clipping.user_defined.clip_distance.vert_geom.{5,6,7,8} Reviewed-by: Alejandro PiƱeiro Part-of: --- src/broadcom/compiler/nir_to_vir.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index 91c2d256785..ab04e4cf269 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -3106,11 +3106,17 @@ ntq_emit_intrinsic(struct v3d_compile *c, nir_intrinsic_instr *instr) * * col: vertex index, row = varying index */ + assert(nir_src_is_const(instr->src[1])); + uint32_t location = + nir_intrinsic_io_semantics(instr).location + + nir_src_as_uint(instr->src[1]); + uint32_t component = nir_intrinsic_component(instr); + int32_t row_idx = -1; for (int i = 0; i < c->num_inputs; i++) { struct v3d_varying_slot slot = c->input_slots[i]; - if (v3d_slot_get_slot(slot) == nir_intrinsic_io_semantics(instr).location && - v3d_slot_get_component(slot) == nir_intrinsic_component(instr)) { + if (v3d_slot_get_slot(slot) == location && + v3d_slot_get_component(slot) == component) { row_idx = i; break; }