X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fnir_types.cpp;h=aa4a7df0cbe87c5904e2e4ef51db67797e6647ca;hb=26961e2cb5e20a1d56915d903f8f03391b4fd109;hp=69f89a7fd74ffa28afc714ef3dce7c626d13146e;hpb=0019d6152749fab000c12daf4d3c7b0d4fba2caf;p=mesa.git diff --git a/src/compiler/nir_types.cpp b/src/compiler/nir_types.cpp index 69f89a7fd74..aa4a7df0cbe 100644 --- a/src/compiler/nir_types.cpp +++ b/src/compiler/nir_types.cpp @@ -279,6 +279,12 @@ glsl_type_is_array(const struct glsl_type *type) return type->is_array(); } +bool +glsl_type_is_unsized_array(const struct glsl_type *type) +{ + return type->is_unsized_array(); +} + bool glsl_type_is_array_of_arrays(const struct glsl_type *type) { @@ -727,3 +733,24 @@ 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; + } +} + +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) +{ + return type->get_explicit_type_for_size_align(type_info, size, align); +}