glsl: add helper for calculating size of AoA
V2: return 0 if not array rather than -1 Reviewed-by: Tapani Pälli <tapani.palli@intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
@@ -577,6 +577,25 @@ struct glsl_type {
|
||||
return t;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the total number of elements in an array including the elements
|
||||
* in arrays of arrays.
|
||||
*/
|
||||
unsigned arrays_of_arrays_size() const
|
||||
{
|
||||
if (!is_array())
|
||||
return 0;
|
||||
|
||||
unsigned size = length;
|
||||
const glsl_type *base_type = fields.array;
|
||||
|
||||
while (base_type->is_array()) {
|
||||
size = size * base_type->length;
|
||||
base_type = base_type->fields.array;
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the amount of atomic counter storage required for a type.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user