Resending this patch because it received no response last week. Allow the sequence operator to be a constant expression in GLSL ES versions prior to GLSL ES 3.0
Fixes the following piglit test: /all/spec/glsl-es-1.0/compiler/array-sized-by-sequence-in-parenthesis.vert This mirrors the logic from process_initializer() which performs the same check for constant variable initialization with sequence operators. Section 4.3.3 (Constant Expressions) of the GLSL 4.30.9 spec and of the GLSL ES 3.00.4 spec say that the result of a sequence operator is not a constant expression; however, we should not mandate that for lower GLSL versions. Signed-off-by: Lars Hamre <cheme...@gmail.com> --- src/compiler/glsl/ast_to_hir.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index 5262bd8..4037468 100644 --- a/src/compiler/glsl/ast_to_hir.cpp +++ b/src/compiler/glsl/ast_to_hir.cpp @@ -2125,7 +2125,9 @@ process_array_size(exec_node *node, } ir_constant *const size = ir->constant_expression_value(); - if (size == NULL || array_size->has_sequence_subexpression()) { + if (size == NULL || + (state->is_version(430, 300) && + array_size->has_sequence_subexpression())) { _mesa_glsl_error(& loc, state, "array size must be a " "constant valued expression"); return 0; -- 2.5.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev