Mesa (main): gallivm: fix casting around read invocation.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jul 27 21:35:18 UTC 2022


Module: Mesa
Branch: main
Commit: a2cd47acdb5d282a4e352d21b4e37f72513120a0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a2cd47acdb5d282a4e352d21b4e37f72513120a0

Author: Dave Airlie <airlied at redhat.com>
Date:   Mon Jul 18 13:58:38 2022 +1000

gallivm: fix casting around read invocation.

Fixes zink KHR-GL46.shader_ballot_tests.ShaderBallotAvailability

Acked-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17588>

---

 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:



More information about the mesa-commit mailing list