nir: Length of boolean vtn_value now is 1
During conversion type-length was lost due to math.
v2 (Jason Ekstrand):
- Use a size/offset of 4 bytes
Fixes: 44227453ec
(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 <sergii.romantsov@globallogic.com>
Tested-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:

committed by
Jason Ekstrand

parent
42aea4f1a7
commit
cfca5cd958
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user