spirv: Calculate properly 16-bit vector sizes
Range in 16-bit push constants load was being calculated wrongly using 4-bytes per element instead of 2-bytes as it should be. v2: Use glsl_get_bit_size instead of if statement (Jason Ekstrand) Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:

committed by
Jason Ekstrand

parent
994d210429
commit
23ffb7c2d1
@@ -683,12 +683,9 @@ vtn_type_block_size(struct vtn_builder *b, struct vtn_type *type)
|
||||
if (cols > 1) {
|
||||
vtn_assert(type->stride > 0);
|
||||
return type->stride * cols;
|
||||
} else if (base_type == GLSL_TYPE_DOUBLE ||
|
||||
base_type == GLSL_TYPE_UINT64 ||
|
||||
base_type == GLSL_TYPE_INT64) {
|
||||
return glsl_get_vector_elements(type->type) * 8;
|
||||
} else {
|
||||
return glsl_get_vector_elements(type->type) * 4;
|
||||
unsigned type_size = glsl_get_bit_size(type->type) / 8;
|
||||
return glsl_get_vector_elements(type->type) * type_size;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user