From: Jason Ekstrand Date: Thu, 24 Aug 2017 00:43:36 +0000 (-0700) Subject: compiler/nir_types: Handle vectors in glsl_get_array_element X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=df81b81fb91f45e6da0c504ee672d45829c41d06;p=mesa.git compiler/nir_types: Handle vectors in glsl_get_array_element Most of NIR doesn't allow doing array indexing on a vector (though it does on a matrix). However, nir_lower_io handles it just fine and this behavior is needed for shared variables in Vulkan. This commit makes glsl_get_array_element do something sensible for vector types and makes nir_validate happy with them. Reviewed-by: Lionel Landwerlin Reviewed-by: Iago Toral Quiroga --- diff --git a/src/compiler/nir_types.cpp b/src/compiler/nir_types.cpp index b1b17ebd831..c66cfff8be1 100644 --- a/src/compiler/nir_types.cpp +++ b/src/compiler/nir_types.cpp @@ -39,6 +39,8 @@ glsl_get_array_element(const glsl_type* type) { if (type->is_matrix()) return type->column_type(); + else if (type->is_vector()) + return type->get_scalar_type(); return type->fields.array; }