[Mesa-dev] [PATCH] compiler/glsl: Allow the sequence operator to be a constant expression
Lars Hamre
chemecse at gmail.com
Tue Mar 22 13:48:07 UTC 2016
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 <chemecse at 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
More information about the mesa-dev
mailing list