From 2188c77a0ee9b29f89dde316116d53fe22e526e0 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 8 Mar 2016 20:35:41 +1100 Subject: [PATCH] glsl: dont allow undefined array sizes in ES This applies the rule to empty declarations. Fixes: dEQP-GLES3.functional.shaders.arrays.invalid.empty_declaration_without_var_name_vertex dEQP-GLES3.functional.shaders.arrays.invalid.empty_declaration_without_var_name_fragment Reviewed-by: Kenneth Graunke --- src/compiler/glsl/ast_to_hir.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index d755a11..5262bd8 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -4223,6 +4223,18 @@ ast_declarator_list::hir(exec_list *instructions, type_name); } else { if (decl_type->base_type == GLSL_TYPE_ARRAY) { + /* From Section 13.22 (Array Declarations) of the GLSL ES 3.2 + * spec: + * + * "... any declaration that leaves the size undefined is + * disallowed as this would add complexity and there are no + * use-cases." + */ + if (state->es_shader && decl_type->is_unsized_array()) { + _mesa_glsl_error(&loc, state, "array size must be explicitly " + "or implicitly defined"); + } + /* From Section 4.12 (Empty Declarations) of the GLSL 4.5 spec: * * "The combinations of types and qualifiers that cause -- 2.7.4