From cfca5cd9588fb213e6889c85137f3e2fec8c7757 Mon Sep 17 00:00:00 2001 From: Sergii Romantsov Date: Tue, 15 Jan 2019 13:08:32 +0200 Subject: [PATCH] nir: Length of boolean vtn_value now is 1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit During conversion type-length was lost due to math. v2 (Jason Ekstrand): - Use a size/offset of 4 bytes Fixes: 44227453ec03 (nir: Switch to using 1-bit Booleans for almost everything) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109353 Signed-off-by: Sergii Romantsov Tested-by: Alejandro Piñeiro Reviewed-by: Alejandro Piñeiro Reviewed-by: Jason Ekstrand --- src/compiler/spirv/spirv_to_nir.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 6b01ad3..b54d259 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -1044,14 +1044,16 @@ vtn_type_layout_std430(struct vtn_builder *b, struct vtn_type *type, { switch (type->base_type) { case vtn_base_type_scalar: { - uint32_t comp_size = glsl_get_bit_size(type->type) / 8; + uint32_t comp_size = glsl_type_is_boolean(type->type) + ? 4 : glsl_get_bit_size(type->type) / 8; *size_out = comp_size; *align_out = comp_size; return type; } case vtn_base_type_vector: { - uint32_t comp_size = glsl_get_bit_size(type->type) / 8; + uint32_t comp_size = glsl_type_is_boolean(type->type) + ? 4 : glsl_get_bit_size(type->type) / 8; unsigned align_comps = type->length == 3 ? 4 : type->length; *size_out = comp_size * type->length, *align_out = comp_size * align_comps; @@ -1170,7 +1172,8 @@ vtn_handle_type(struct vtn_builder *b, SpvOp opcode, val->type->base_type = vtn_base_type_vector; val->type->type = glsl_vector_type(glsl_get_base_type(base->type), elems); val->type->length = elems; - val->type->stride = glsl_get_bit_size(base->type) / 8; + val->type->stride = glsl_type_is_boolean(val->type->type) + ? 4 : glsl_get_bit_size(base->type) / 8; val->type->array_element = base; break; } -- 2.7.4