[Mesa-dev] [PATCH] compiler/glsl: Allow the sequence operator to be a constant expression

Eduardo Lima Mitev elima at igalia.com
Tue Mar 22 19:32:05 UTC 2016


On 03/22/2016 02:48 PM, Lars Hamre wrote:
> 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
>

I confirm this fixes the above test, but it also regresses test:

/all/spec/glsl-1.20/compiler/structure-and-array-operations/array-size-sequence-in-parenthesis.vert.

Maybe you are missing a version check?

Eduardo

> 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
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>



More information about the mesa-dev mailing list