glsl: Fix aggregates with dynamic initializers.
authorCody Northrop <cody@lunarg.com>
Thu, 10 Jul 2014 15:55:31 +0000 (09:55 -0600)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 14 Jul 2014 15:36:36 +0000 (08:36 -0700)
commit0f679f0ab5afc8c1469453b922d37ae7216136a4
tree47323dad9f9fbefbc6b320c01fd17f37d3ee059e
parent923f78440c29644f31d745d6fbd4eaad8676973f
glsl: Fix aggregates with dynamic initializers.

Vectors are falling in to the ir_dereference_array() path.

Without this change, the following glsl aborts the debug driver,
or gets the wrong answer in release:

mat2x2 a = mat2( vec2( 1.0, vertex.x ), vec2( 0.0, 1.0 ) );

Also submitting piglit tests, will reference in bug.

v2: Rebase on Mesa master.

v3: Remove unneeded check for arrays, which are covered by
    process_array_constructor(), recommended by Timothy Arceri.

Signed-off-by: Cody Northrop <cody@lunarg.com>
Reviewed-by: Courtney Goeltzenleuchter <courtney@lunarg.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=79373
src/glsl/ast_function.cpp