nir/types: Add array_or_matrix helpers
authorJason Ekstrand <jason.ekstrand@intel.com>
Wed, 25 Jul 2018 15:53:58 +0000 (08:53 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Fri, 24 Aug 2018 02:44:14 +0000 (21:44 -0500)
Reviewed-by: Thomas Helland<thomashelland90@gmail.com>
src/compiler/nir_types.cpp
src/compiler/nir_types.h

index c8a2940496909682d4c277b5f5388b1cfe7562af..1fae6aa81801bb5f43bb304aabaf25790d5ef035 100644 (file)
@@ -50,6 +50,15 @@ glsl_without_array(const glsl_type *type)
    return type->without_array();
 }
 
+const glsl_type *
+glsl_without_array_or_matrix(const glsl_type *type)
+{
+   type = type->without_array();
+   if (type->is_matrix())
+      type = type->column_type();
+   return type;
+}
+
 const glsl_type *
 glsl_get_array_instance(const glsl_type *type,
                         unsigned array_size)
@@ -230,6 +239,12 @@ glsl_type_is_array_of_arrays(const struct glsl_type *type)
    return type->is_array_of_arrays();
 }
 
+bool
+glsl_type_is_array_or_matrix(const struct glsl_type *type)
+{
+   return type->is_array() || type->is_matrix();
+}
+
 bool
 glsl_type_is_struct(const struct glsl_type *type)
 {
index db3a4dee2d9c1beb12d573fc253f8d11e7cc2d42..ea0438541af5539692771d3cc9c1c769b1df317a 100644 (file)
@@ -48,6 +48,7 @@ const struct glsl_type *glsl_get_struct_field(const struct glsl_type *type,
 
 const struct glsl_type *glsl_get_array_element(const struct glsl_type *type);
 const struct glsl_type *glsl_without_array(const struct glsl_type *type);
+const struct glsl_type *glsl_without_array_or_matrix(const struct glsl_type *type);
 const struct glsl_type *glsl_get_array_instance(const struct glsl_type *type,
                                                 unsigned array_size);
 
@@ -133,6 +134,7 @@ bool glsl_type_is_vector_or_scalar(const struct glsl_type *type);
 bool glsl_type_is_matrix(const struct glsl_type *type);
 bool glsl_type_is_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_type_is_sampler(const struct glsl_type *type);
 bool glsl_type_is_image(const struct glsl_type *type);