nv50: move centroid, flat bits when making interp long
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>
Thu, 3 Sep 2009 10:54:41 +0000 (12:54 +0200)
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>
Thu, 3 Sep 2009 10:54:41 +0000 (12:54 +0200)
Before this, just the perspective divide bit was moved in
convert_to_long of the load interpolant instruction.

src/gallium/drivers/nv50/nv50_program.c

index 1cb1ce74bdd438926fb81bbf3069c1862172cd78..4a838529de761cc8afabafa5a4cff3d2e4a5f6ba 100644 (file)
@@ -1106,10 +1106,10 @@ convert_to_long(struct nv50_pc *pc, struct nv50_program_exec *e)
                m = 0xffff7fff;
                break;
        case 0x8:
-               /* INTERP */
-               m = ~0x02000000;
-               if (e->inst[0] & 0x02000000)
-                       q = 0x00020000;
+               /* INTERP (move centroid, perspective and flat bits) */
+               m = ~0x03000100;
+               q = (e->inst[0] & (3 << 24)) >> (24 - 16);
+               q |= (e->inst[0] & (1 << 8)) << (18 - 8);
                break;
        case 0x9:
                /* RCP */