glsl: add support for complie-time constant expressions
authorTimothy Arceri <timothy.arceri@collabora.com>
Sat, 14 Nov 2015 04:13:28 +0000 (15:13 +1100)
committerTimothy Arceri <t_arceri@yahoo.com.au>
Fri, 20 Nov 2015 20:28:06 +0000 (07:28 +1100)
commit02d2ab23786a0f4ef635914801da97faf577197a
tree0c69595d3a9353675724b225de41cee8afdd4a7c
parent0954b813a3a356b5836f4169783b8c8c58ff2158
glsl: add support for complie-time constant expressions

This patch replaces the old interger constant qualifiers with either
the new ast_layout_expression type if the qualifier requires merging
or ast_expression if the qualifier can't have mulitple declarations
or if all but the newest qualifier is simply ignored.

We also update the process_qualifier_constant() helper to be
similar to the one in the ast_layout_expression class, but in
this case it will be used to process the ast_expression qualifiers.

Global shader layout qualifier validation is moved out of the parser
in this change as we now need to evaluate any constant expression
before doing the validation.

V2: Fix minimum value check for vertices (Emil)

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
src/glsl/ast.h
src/glsl/ast_to_hir.cpp
src/glsl/ast_type.cpp
src/glsl/glsl_parser.yy
src/glsl/glsl_parser_extras.cpp