i965: fix mask used to write to clip distance registers when gen>6
authorPaul Berry <stereotype441@gmail.com>
Sun, 12 Jun 2011 17:47:46 +0000 (10:47 -0700)
committerPaul Berry <stereotype441@gmail.com>
Fri, 24 Jun 2011 22:35:49 +0000 (15:35 -0700)
In gen6 and above, clip distances 0-3 are written to message register
3's xyzw components, and 4-7 to message register 4's xyzw components.
Therefore when when writing the clip distances we need to examine the
lower 2 bits of the clip distance index to see which component to
write to.

emit_vertex_write() was examining the lower 3 bits, causing clip
distances 4-7 not to be written correctly.

Fixes piglit test vs-clip-vertex-01.shader_test

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

index b6c9e5a1ceb610496d803f4e6184951d646ad3f5..9d733344a265ff144e34a6cbe62452d33bc3bc66 100644 (file)
@@ -1635,7 +1635,7 @@ static void emit_vertex_write( struct brw_vs_compile *c)
            else
               m = brw_message_reg(4);
 
-           brw_DP4(p, brw_writemask(m, (1 << (i & 7))),pos, c->userplane[i]);
+           brw_DP4(p, brw_writemask(m, (1 << (i & 3))),pos, c->userplane[i]);
         }
       }
    } else if ((c->prog_data.outputs_written &