summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/i965simple/brw_sf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/pipe/i965simple/brw_sf.c')
-rw-r--r--src/mesa/pipe/i965simple/brw_sf.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/mesa/pipe/i965simple/brw_sf.c b/src/mesa/pipe/i965simple/brw_sf.c
index c04234ecf4..362196a0d1 100644
--- a/src/mesa/pipe/i965simple/brw_sf.c
+++ b/src/mesa/pipe/i965simple/brw_sf.c
@@ -58,7 +58,7 @@ static void compile_sf_prog( struct brw_context *brw,
c.nr_attrs = c.key.vp_output_count;
c.nr_attr_regs = (c.nr_attrs+1)/2;
- c.nr_setup_attrs = c.key.fp_input_count;
+ c.nr_setup_attrs = c.key.fp_input_count + 1; /* +1 for position */
c.nr_setup_regs = (c.nr_setup_attrs+1)/2;
c.prog_data.urb_read_length = c.nr_attr_regs;
@@ -205,6 +205,14 @@ static void upload_sf_prog( struct brw_context *brw )
}
}
+ /* Hack: Adjust for position. Optimize away when not required (ie
+ * for perspective interpolation).
+ */
+ key.persp_mask <<= 1;
+ key.linear_mask <<= 1;
+ key.linear_mask |= 1;
+ key.const_mask <<= 1;
+
_mesa_printf("key.persp_mask: %x\n", key.persp_mask);
_mesa_printf("key.linear_mask: %x\n", key.linear_mask);
_mesa_printf("key.const_mask: %x\n", key.const_mask);