From: Ian Romanick Date: Tue, 22 Jan 2013 03:07:34 +0000 (-0500) Subject: glsl: Require that indices into uniform block arrays be constants X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3b09603dda7108f7f7d58c903b15510262f845c0;p=mesa.git glsl: Require that indices into uniform block arrays be constants Signed-off-by: Ian Romanick Reviewed-by: Carl Worth Reviewed-by: Kenneth Graunke --- diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp index 372ffde1b16..e2d7265a6a2 100644 --- a/src/glsl/ast_to_hir.cpp +++ b/src/glsl/ast_to_hir.cpp @@ -1622,6 +1622,15 @@ ast_expression::hir(exec_list *instructions, } } else if (array->type->array_size() == 0) { _mesa_glsl_error(&loc, state, "unsized array index must be constant"); + } else if (array->type->is_array() + && array->type->fields.array->is_interface()) { + /* Page 46 in section 4.3.7 of the OpenGL ES 3.00 spec says: + * + * "All indexes used to index a uniform block array must be + * constant integral expressions." + */ + _mesa_glsl_error(&loc, state, + "uniform block array index must be constant"); } else { if (array->type->is_array()) { /* whole_variable_referenced can return NULL if the array is a