From ebf1196d82eeed2f7863984ec33d26538a97b531 Mon Sep 17 00:00:00 2001 From: Francisco Jerez Date: Mon, 17 Aug 2015 01:21:01 +0300 Subject: glsl: Forbid non-constant image array indexing in GLSL ES 3.1. Reviewed-by: Timothy Arceri --- src/glsl/ast_array_index.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/glsl/ast_array_index.cpp') diff --git a/src/glsl/ast_array_index.cpp b/src/glsl/ast_array_index.cpp index 27e84d1..ae399f0 100644 --- a/src/glsl/ast_array_index.cpp +++ b/src/glsl/ast_array_index.cpp @@ -290,6 +290,21 @@ _mesa_ast_array_index_to_hir(void *mem_ctx, "1.30 and later"); } } + + /* From page 27 of the GLSL ES 3.1 specification: + * + * "When aggregated into arrays within a shader, images can only be + * indexed with a constant integral expression." + * + * On the other hand the desktop GL specification extension allows + * non-constant indexing of image arrays, but behavior is left undefined + * in cases where the indexing expression is not dynamically uniform. + */ + if (state->es_shader && array->type->without_array()->is_image()) { + _mesa_glsl_error(&loc, state, + "image arrays indexed with non-constant " + "expressions are forbidden in GLSL ES."); + } } /* After performing all of the error checking, generate the IR for the -- cgit v1.1