diff --git a/.pick_status.json b/.pick_status.json index 16b07d2d0a8..943f0f1b72f 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -10994,7 +10994,7 @@ "description": "zink: fix global stores", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "ddc5c3048992debc3cedd22b0f2ff2ca27e8d7e4", "notes": null 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 01f167610bd..997c070a832 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 @@ -2984,6 +2984,8 @@ emit_store_global(struct ntv_context *ctx, nir_intrinsic_instr *intr) dest_type); nir_alu_type atype; SpvId param = get_src(ctx, &intr->src[0], &atype); + if (atype != nir_type_uint) + param = emit_bitcast(ctx, dest_type, param); SpvId ptr = emit_bitcast(ctx, pointer_type, get_src(ctx, &intr->src[1], &atype)); spirv_builder_emit_store(&ctx->builder, ptr, param); }