From fe83bea35554d44f922eb3bde8cb2eb36a4c5725 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 15 Feb 2021 15:22:46 -0500 Subject: [PATCH] zink: handle 1bit undef values in ntv spirv requires that 1bit values be bool types, not uints Fixes: 93af00502eb ("zink: use uvec for undefs") Reviewed-by: Jason Ekstrand Part-of: (cherry picked from commit 8300bc1f1694dadb4af4a134ed1100de152e5eaf) --- .pick_status.json | 2 +- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index fc3bc01055a..abc17498c0b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1525,7 +1525,7 @@ "description": "zink: handle 1bit undef values in ntv", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "93af00502ebc32061c63927815d0d2255fe66a98" }, 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 b24e68da8cc..9bf3011f6b0 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 @@ -2080,8 +2080,9 @@ emit_intrinsic(struct ntv_context *ctx, nir_intrinsic_instr *intr) static void emit_undef(struct ntv_context *ctx, nir_ssa_undef_instr *undef) { - SpvId type = get_uvec_type(ctx, undef->def.bit_size, - undef->def.num_components); + SpvId type = undef->def.bit_size == 1 ? get_bvec_type(ctx, undef->def.num_components) : + get_uvec_type(ctx, undef->def.bit_size, + undef->def.num_components); store_ssa_def(ctx, &undef->def, spirv_builder_emit_undef(&ctx->builder, type));