From a2cd47acdb5d282a4e352d21b4e37f72513120a0 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Mon, 18 Jul 2022 13:58:38 +1000 Subject: [PATCH] gallivm: fix casting around read invocation. Fixes zink KHR-GL46.shader_ballot_tests.ShaderBallotAvailability Acked-By: Mike Blumenkrantz Part-of: --- src/gallium/auxiliary/gallivm/lp_bld_nir.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir.c b/src/gallium/auxiliary/gallivm/lp_bld_nir.c index 1c38e49c05c..715977672e3 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_nir.c +++ b/src/gallium/auxiliary/gallivm/lp_bld_nir.c @@ -2184,10 +2184,12 @@ visit_intrinsic(struct lp_build_nir_context *bld_base, case nir_intrinsic_read_invocation: case nir_intrinsic_read_first_invocation: { LLVMValueRef src1 = NULL; - - if (instr->intrinsic == nir_intrinsic_read_invocation) + LLVMValueRef src0 = get_src(bld_base, instr->src[0]); + if (instr->intrinsic == nir_intrinsic_read_invocation) { src1 = cast_type(bld_base, get_src(bld_base, instr->src[1]), nir_type_int, 32); - bld_base->read_invocation(bld_base, get_src(bld_base, instr->src[0]), nir_src_bit_size(instr->src[0]), src1, result); + 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; } case nir_intrinsic_interp_deref_at_offset: