i965: Fix color interpolation on sandybridge
authorZhenyu Wang <zhenyuw@linux.intel.com>
Fri, 17 Sep 2010 04:57:35 +0000 (12:57 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Tue, 28 Sep 2010 07:58:20 +0000 (15:58 +0800)
Don't double store position in vertex attribute. This makes color
interpolation right by using barycentric coordinates.

src/mesa/drivers/dri/i965/brw_vs_emit.c

index ad0d00b87c424dc1254b661f8bf0d3bdf0118604..ed2625e16f6ef6d84fa0be1b36017fa374684f81 100644 (file)
@@ -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.