Kenneth Graunke <kenn...@whitecape.org> writes:

> Global initializers using the ?: operator with at least one non-constant
> operand generate ir_if statements.  For example,
>
>    float foo = some_boolean ? 0.0 : 1.0;
>
> becomes:
>
>    (declare (temporary) float conditional_tmp)
>    (if (var_ref some_boolean)
>        ((assign (x) (var_ref conditional_tmp) (constant float (0.0))))
>        ((assign (x) (var_ref conditional_tmp) (constant float (1.0)))))
>
> This pattern is necessary because the second or third arguments could be
> function calls, which create statements (not expressions).
>
> The linker moves these global initializers into the main() function.
> However, it incorrectly had an assertion that global initializer
> statements were only assignments, calls, or temporary variable
> declarations.  As demonstrated above, they can be if statements too.
>
> Other than the assertion, everything works fine.  So remove it.
>
> Fixes new Piglit test condition-08.vert, as well as an upcoming
> game that will be released on Steam.

Reviewed-by: Eric Anholt <e...@anholt.net>

Attachment: pgp8BiGpohlV9.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to