summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph Bumiller <e0425955@student.tuwien.ac.at>2009-09-03 12:54:41 +0200
committerChristoph Bumiller <e0425955@student.tuwien.ac.at>2009-09-03 12:54:41 +0200
commit8b1ef3fa357f5bbd6d3f73714a86ce380b867a71 (patch)
tree9df9a0b4204a514eb31357daf27dd6820875dd4b
parentffee352726750849b1e1efd00c52ddae813805f3 (diff)
nv50: move centroid, flat bits when making interp long
Before this, just the perspective divide bit was moved in convert_to_long of the load interpolant instruction.
-rw-r--r--src/gallium/drivers/nv50/nv50_program.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
index 1cb1ce74bd..4a838529de 100644
--- a/src/gallium/drivers/nv50/nv50_program.c
+++ b/src/gallium/drivers/nv50/nv50_program.c
@@ -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 */