From a078c471d39272d4708c1f47f9cd189f88cb1de5 Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Tue, 22 Aug 2023 21:18:17 +0200 Subject: [PATCH] zink: fix global stores We have to cast the value if the type doesn't match. Fixes: ddc5c304899 ("zink: handle global and scratch vars") Part-of: (cherry picked from commit ac289b7268a510852df3d48ce4786674142e109f) --- .pick_status.json | 2 +- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) 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); }