Timothy Arceri <tarc...@itsqueeze.com> writes: > --- > src/compiler/nir_types.cpp | 29 +++++++++++++++++++++++++++++ > src/compiler/nir_types.h | 2 ++ > 2 files changed, 31 insertions(+) > > diff --git a/src/compiler/nir_types.cpp b/src/compiler/nir_types.cpp > index b0d84aae384..44c4b5d60cf 100644 > --- a/src/compiler/nir_types.cpp > +++ b/src/compiler/nir_types.cpp > @@ -397,3 +397,32 @@ glsl_transposed_type(const struct glsl_type *type) > return glsl_type::get_instance(type->base_type, type->matrix_columns, > type->vector_elements); > } > + > +const glsl_type * > +glsl_channel_type(const glsl_type *t) > +{ > + > + if (glsl_type_is_array(t)) { > + const glsl_type *base = glsl_channel_type(glsl_get_array_element(t)); > + return glsl_array_type(base, glsl_get_length(t)); > + } else { > + switch (glsl_get_base_type(t)) { > + case GLSL_TYPE_UINT: > + return glsl_uint_type(); > + case GLSL_TYPE_INT: > + return glsl_int_type(); > + case GLSL_TYPE_FLOAT: > + return glsl_float_type(); > + case GLSL_TYPE_BOOL: > + return glsl_bool_type(); > + case GLSL_TYPE_DOUBLE: > + return glsl_double_type(); > + case GLSL_TYPE_UINT64: > + return glsl_uint64_t_type(); > + case GLSL_TYPE_INT64: > + return glsl_int64_t_type(); > + default: > + unreachable("Unhandled base type glsl_channel_type()"); > + } > + }
It looks like the glsl_type_is_array() case could just be in the switch statement under GLSL_TYPE_ARRAY. Either way, Reviewed-by: Eric Anholt <e...@anholt.net>
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev