[Mesa-dev] [PATCH] glsl: dont allow undefined array sizes in ES
Iago Toral
itoral at igalia.com
Wed Mar 9 15:04:32 UTC 2016
On Tue, 2016-03-08 at 20:35 +1100, Timothy Arceri wrote:
> 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
> ---
> src/compiler/glsl/ast_to_hir.cpp | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
> index d755a11..8918981 100644
> --- a/src/compiler/glsl/ast_to_hir.cpp
> +++ b/src/compiler/glsl/ast_to_hir.cpp
> @@ -4223,6 +4223,17 @@ 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");
What about unsized arrays in SSBOs? Unsized arrays are allowed as the
last element in a SSBO declaration. This is a special case because the
size of the array is implicitly set by the size of the underlying buffer
object.
Iago
> /* From Section 4.12 (Empty Declarations) of the GLSL 4.5 spec:
> *
> * "The combinations of types and qualifiers that cause
More information about the mesa-dev
mailing list