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>
pgp8BiGpohlV9.pgp
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev