int glsl_get_cl_alignment(const struct glsl_type *type);
+unsigned glsl_get_explicit_size(const struct glsl_type *type, bool align_to_stride);
+
static inline unsigned
glsl_get_bit_size(const struct glsl_type *type)
{
bool glsl_type_is_matrix(const struct glsl_type *type);
bool glsl_matrix_type_is_row_major(const struct glsl_type *type);
bool glsl_type_is_array(const struct glsl_type *type);
+bool glsl_type_is_unsized_array(const struct glsl_type *type);
bool glsl_type_is_array_of_arrays(const struct glsl_type *type);
bool glsl_type_is_array_or_matrix(const struct glsl_type *type);
bool glsl_type_is_struct(const struct glsl_type *type);
bool glsl_sampler_type_is_shadow(const struct glsl_type *type);
bool glsl_sampler_type_is_array(const struct glsl_type *type);
bool glsl_contains_atomic(const struct glsl_type *type);
+bool glsl_contains_opaque(const struct glsl_type *type);
const struct glsl_type *glsl_void_type(void);
const struct glsl_type *glsl_float_type(void);
const struct glsl_type *glsl_channel_type(const struct glsl_type *type);
-typedef void (*glsl_type_size_align_func)(const struct glsl_type *type,
- unsigned *size, unsigned *align);
-
void glsl_get_natural_size_align_bytes(const struct glsl_type *type,
unsigned *size, unsigned *align);
const struct glsl_type *glsl_atomic_uint_type(void);
+const struct glsl_type *glsl_get_explicit_type_for_size_align(const struct glsl_type *type,
+ glsl_type_size_align_func type_info,
+ unsigned *size, unsigned *align);
+
unsigned glsl_type_get_sampler_count(const struct glsl_type *type);
unsigned glsl_type_get_image_count(const struct glsl_type *type);
+bool glsl_type_is_leaf(const struct glsl_type *type);
+
#ifdef __cplusplus
}
#endif