summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhenyu Wang <zhenyuw@linux.intel.com>2010-09-17 12:57:35 +0800
committerZhenyu Wang <zhenyuw@linux.intel.com>2010-09-28 15:58:20 +0800
commit41c31c2ebd5ed2ca021ff9d89f79270562e6c368 (patch)
tree7a73df84770d4d3dc723a1e686d3392188b7147f
parent8c31a4c3cf6655fe4db6befb4a7b029ada62aaf6 (diff)
i965: Fix color interpolation on sandybridge
Don't double store position in vertex attribute. This makes color interpolation right by using barycentric coordinates.
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_emit.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c
index ad0d00b87c..ed2625e16f 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
@@ -254,7 +254,7 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c )
c->first_overflow_output = 0;
if (intel->gen >= 6)
- mrf = 4;
+ mrf = 3; /* no more pos store in attribute */
else if (intel->gen == 5)
mrf = 8;
else
@@ -1451,8 +1451,7 @@ static void emit_vertex_write( struct brw_vs_compile *c)
* position.
*/
brw_MOV(p, brw_message_reg(2), pos);
- brw_MOV(p, brw_message_reg(3), pos);
- len_vertex_header = 2;
+ len_vertex_header = 1;
} else if (intel->gen == 5) {
/* There are 20 DWs (D0-D19) in VUE header on Ironlake:
* dword 0-3 (m1) of the header is indices, point width, clip flags.