glsl2: Fix expected type for multiplying vector with non-square matrix.
authorCarl Worth <cworth@cworth.org>
Thu, 22 Jul 2010 21:56:14 +0000 (14:56 -0700)
committerCarl Worth <cworth@cworth.org>
Thu, 22 Jul 2010 21:59:06 +0000 (14:59 -0700)
commit47c90b144729e3edf3b5cbf5b260c1c46e429879
tree78bc135ff86eb0b64e81225db88db5d63f7ef47d
parente65dfa89eef86be127d788ecd5bd23c35c8fbbe4
glsl2: Fix expected type for multiplying vector with non-square matrix.

Previously, the compiler expected the result of the multiplication to
be of the same type as the vector. This is correct for square
matrices, but wrong for all others.

We fix this by instead expecting a vector with the same number of rows
as the matrix (for the case of M*v with a column vector) or the same
number of columns as the matrix (for v*M with a row vector).

This fix causes the following four glean tests to now pass:

glsl1-mat4x2 * vec4
   glsl1-vec2 * mat4x2 multiply
   glsl1-vec3 * mat4x3 multiply
   glsl1-vec4 * mat3x4 multiply
src/glsl/ast_to_hir.cpp