SrcReg->Swizzle is always initialized to SWIZZLE_NOOP, and if the program
authorDave Airlie <airliedfreedesktop.org>
Wed, 19 Apr 2006 23:15:51 +0000 (23:15 +0000)
committerDave Airlie <airliedfreedesktop.org>
Wed, 19 Apr 2006 23:15:51 +0000 (23:15 +0000)
specifies a 2/3/4-compontent swizzle suffix, SrcReg->Swizzles is just ORed
against the new component values, without resetting it first.

Attached patch makes tests/vptest2 pass.

From Tilam Sauerbeck bug 6673

src/mesa/shader/nvvertparse.c

index 71d5116b3efd31837c401db1db6a2c49c64b4a60..a7e062c61cb2bc4b16d6173beacb8ab3dd813ace 100644 (file)
@@ -699,6 +699,9 @@ Parse_SwizzleSrcReg(struct parse_state *parseState, struct prog_src_register *sr
       else {
          /* 2, 3 or 4-component swizzle */
          GLint k;
+
+         srcReg->Swizzle = 0;
+
          for (k = 0; token[k] && k < 5; k++) {
             if (token[k] == 'x')
                srcReg->Swizzle |= 0 << (k*3);