OSDN Git Service

i965: SF: Change calculate_masks to use the VUE map.
authorPaul Berry <stereotype441@gmail.com>
Wed, 24 Aug 2011 22:48:55 +0000 (15:48 -0700)
committerPaul Berry <stereotype441@gmail.com>
Tue, 6 Sep 2011 18:04:44 +0000 (11:04 -0700)
Previously, SF code used the idx_to_attr[] array to compute the
location of entries in the VUE map.  This array didn't properly
account for gl_PointSize.  Now we use the VUE map directly.

Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_sf_emit.c

index 28448fb..0532d4e 100644 (file)
@@ -350,10 +350,10 @@ static GLboolean calculate_masks( struct brw_sf_compile *c,
    *pc_linear = 0;
    *pc = 0xf;
       
-   if (persp_mask & BITFIELD64_BIT(c->idx_to_attr[reg*2]))
+   if (persp_mask & BITFIELD64_BIT(vert_reg_to_vert_result(c, reg, 0)))
       *pc_persp = 0xf;
 
-   if (linear_mask & BITFIELD64_BIT(c->idx_to_attr[reg*2]))
+   if (linear_mask & BITFIELD64_BIT(vert_reg_to_vert_result(c, reg, 0)))
       *pc_linear = 0xf;
 
    /* Maybe only processs one attribute on the final round:
@@ -361,10 +361,10 @@ static GLboolean calculate_masks( struct brw_sf_compile *c,
    if (reg*2+1 < c->nr_setup_attrs) {
       *pc |= 0xf0;
 
-      if (persp_mask & BITFIELD64_BIT(c->idx_to_attr[reg*2+1]))
+      if (persp_mask & BITFIELD64_BIT(vert_reg_to_vert_result(c, reg, 1)))
         *pc_persp |= 0xf0;
 
-      if (linear_mask & BITFIELD64_BIT(c->idx_to_attr[reg*2+1]))
+      if (linear_mask & BITFIELD64_BIT(vert_reg_to_vert_result(c, reg, 1)))
         *pc_linear |= 0xf0;
    }