mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
nir_types: add glsl_type_is_leaf helper
Helper used to know when a glsl_type is a leaf when iteraring through
a complex type. Note that GLSL IR linking also uses the concept of
leaf while doing the same iteration, although in that case it uses a
visitor. See link_uniform_blocks, process_array_leaf and others as
reference.
Signed-off-by: Alejandro Piñeiro <apinheiro@igalia.com>
Signed-off-by: Antia Puentes <apuentes@igalia.com>
v2:
* Moved from gl_nir_linker to nir_types, so it could be used on nir
xfb gathering (Timothy Arceri)
* Minor update after Timothy's series about record to struct
renaming landed master.
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
0019d61527
commit
39f4ef57d6
2 changed files with 15 additions and 0 deletions
|
|
@ -727,3 +727,16 @@ glsl_get_explicit_size(const struct glsl_type *type, bool align_to_stride)
|
|||
{
|
||||
return type->explicit_size(align_to_stride);
|
||||
}
|
||||
|
||||
bool
|
||||
glsl_type_is_leaf(const struct glsl_type *type)
|
||||
{
|
||||
if (glsl_type_is_struct_or_ifc(type) ||
|
||||
(glsl_type_is_array(type) &&
|
||||
(glsl_type_is_array(glsl_get_array_element(type)) ||
|
||||
glsl_type_is_struct_or_ifc(glsl_get_array_element(type))))) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -202,6 +202,8 @@ const struct glsl_type *glsl_atomic_uint_type(void);
|
|||
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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue