From ac1685bc6a8ca6d36c1048bf8fac1af44f88ed94 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Tue, 18 Oct 2022 16:47:47 +0200 Subject: [PATCH] zink: fix source type in load/store scratch Fixes: ddc5c304899 ("zink: handle global and scratch vars") Signed-off-by: Karol Herbst Part-of: --- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c index f712191..42b4780 100644 --- a/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c +++ b/src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c @@ -2386,7 +2386,7 @@ emit_load_scratch(struct ntv_context *ctx, nir_intrinsic_instr *intr) uint_type); nir_alu_type atype; SpvId offset = get_src(ctx, &intr->src[0], &atype); - if (atype == nir_type_float) + if (atype != nir_type_uint) offset = bitcast_to_uvec(ctx, offset, nir_src_bit_size(intr->src[0]), 1); SpvId constituents[NIR_MAX_VEC_COMPONENTS]; SpvId scratch_block = get_scratch_block(ctx, bit_size); @@ -2419,8 +2419,8 @@ emit_store_scratch(struct ntv_context *ctx, nir_intrinsic_instr *intr) uint_type); nir_alu_type otype; SpvId offset = get_src(ctx, &intr->src[1], &otype); - if (otype == nir_type_float) - offset = bitcast_to_uvec(ctx, offset, nir_src_bit_size(intr->src[0]), 1); + if (otype != nir_type_uint) + offset = bitcast_to_uvec(ctx, offset, nir_src_bit_size(intr->src[1]), 1); SpvId scratch_block = get_scratch_block(ctx, bit_size); /* this is a partial write, so we have to loop and do a per-component write */ u_foreach_bit(i, wrmask) { -- 2.7.4