mesa: Don't look in unallocatd param slots for parameter values.
authorEric Anholt <eric@anholt.net>
Wed, 30 Jun 2010 21:28:38 +0000 (14:28 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 30 Jun 2010 21:46:06 +0000 (14:46 -0700)
glsl-derivs would add 40.0, 0.0, and 1.0 in order.  When we went
looking for 0.0, we'd find it in the second slot of the param, and use
it, but param->Size would still be 1.  When we went to add 1.0 and
didn't find it, we'd put allocate it to that second slot and the 0.0
would actualy end up being 1.0.

Fixes glsl-derivs, glsl-deriv-varyings.

src/mesa/shader/prog_parameter.c

index aac488c79ab659e708e09f974edc9e23446b2972..ddbfe95c1525f8f8c65b7bd4ae6de08edb0328e2 100644 (file)
@@ -591,7 +591,7 @@ _mesa_lookup_parameter_constant(const struct gl_program_parameter_list *list,
              if (vSize == 1) {
                 /* look for v[0] anywhere within float[4] value */
                 GLuint j;
-                for (j = 0; j < 4; j++) {
+                for (j = 0; j < list->Parameters[i].Size; j++) {
                    if (list->ParameterValues[i][j] == v[0]) {
                       /* found it */
                       *posOut = i;