From 3ed41e3bb64ef9ab0260092d3e2d1f42aef69a4e Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Fri, 19 Jul 2019 17:04:50 +0200 Subject: [PATCH] zink/spirv: prepare for 1-bit booleans Acked-by: Jordan Justen --- src/gallium/drivers/zink/nir_to_spirv/nir_to_spirv.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 5fd403dd28c..74eda10f93f 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 @@ -127,9 +127,9 @@ get_fvec_type(struct ntv_context *ctx, unsigned bit_size, unsigned num_component static SpvId get_ivec_type(struct ntv_context *ctx, unsigned bit_size, unsigned num_components) { - assert(bit_size == 32); // only 32-bit ints supported so far + assert(bit_size == 1 || bit_size == 32); // only 32-bit ints supported so far - SpvId int_type = spirv_builder_type_int(&ctx->builder, bit_size); + SpvId int_type = spirv_builder_type_int(&ctx->builder, MAX2(bit_size, 32)); if (num_components > 1) return spirv_builder_type_vector(&ctx->builder, int_type, num_components); @@ -141,9 +141,9 @@ get_ivec_type(struct ntv_context *ctx, unsigned bit_size, unsigned num_component static SpvId get_uvec_type(struct ntv_context *ctx, unsigned bit_size, unsigned num_components) { - assert(bit_size == 32); // only 32-bit uints supported so far + assert(bit_size == 1 || bit_size == 32); // only 32-bit uints supported so far - SpvId uint_type = spirv_builder_type_uint(&ctx->builder, bit_size); + SpvId uint_type = spirv_builder_type_uint(&ctx->builder, MAX2(bit_size, 32)); if (num_components > 1) return spirv_builder_type_vector(&ctx->builder, uint_type, num_components); @@ -498,9 +498,9 @@ get_alu_src_uint(struct ntv_context *ctx, nir_alu_instr *alu, unsigned src) return def; int bit_size = nir_src_bit_size(alu->src[src].src); - assert(bit_size == 32); + assert(bit_size == 1 || bit_size == 32); - SpvId uint_type = spirv_builder_type_uint(&ctx->builder, bit_size); + SpvId uint_type = spirv_builder_type_uint(&ctx->builder, MAX2(bit_size, 32)); if (used_channels == 1) { uint32_t indices[] = { alu->src[src].swizzle[0] }; return spirv_builder_emit_composite_extract(&ctx->builder, uint_type, -- 2.30.2