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:
Timothy Arceri
2015-05-27 21:31:59 +10:00
parent 776a3845d6
commit 9bad7afbc2
+19
View File
@@ -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.
*/