diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir.c b/src/gallium/auxiliary/gallivm/lp_bld_nir.c index e10ea32f9ed..756628394f6 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_nir.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_nir.c @@ -2192,12 +2192,13 @@ visit_intrinsic(struct lp_build_nir_context *bld_base, #endif case nir_intrinsic_read_invocation: case nir_intrinsic_read_first_invocation: { - LLVMValueRef src1 = NULL; LLVMValueRef src0 = get_src(bld_base, instr->src[0]); - if (instr->intrinsic == nir_intrinsic_read_invocation) { + src0 = cast_type(bld_base, src0, nir_type_int, nir_src_bit_size(instr->src[0])); + + LLVMValueRef src1 = NULL; + if (instr->intrinsic == nir_intrinsic_read_invocation) src1 = cast_type(bld_base, get_src(bld_base, instr->src[1]), nir_type_int, 32); - src0 = cast_type(bld_base, src0, nir_type_int, nir_src_bit_size(instr->src[0])); - } + bld_base->read_invocation(bld_base, src0, nir_src_bit_size(instr->src[0]), src1, result); break; }