OSDN Git Service

i965: use setup attributes as inputs when allocating registers
authorXiang, Haihao <haihao.xiang@intel.com>
Thu, 14 Feb 2008 05:24:27 +0000 (13:24 +0800)
committerXiang, Haihao <haihao.xiang@intel.com>
Thu, 14 Feb 2008 05:24:27 +0000 (13:24 +0800)
for WM payload.  fix #10767

src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_sf.c
src/mesa/drivers/dri/i965/brw_wm_pass2.c

index 6bdb834..a6c60aa 100644 (file)
@@ -688,5 +688,7 @@ brw_context( GLcontext *ctx )
    return (struct brw_context *)ctx;
 }
 
+#define DO_SETUP_BITS ((1<<(FRAG_ATTRIB_MAX)) - 1)
+
 #endif
 
index 9250dc3..18285be 100644 (file)
@@ -43,8 +43,6 @@
 #include "brw_sf.h"
 #include "brw_state.h"
 
-#define DO_SETUP_BITS ((1<<(FRAG_ATTRIB_MAX)) - 1)
-
 static void compile_sf_prog( struct brw_context *brw,
                             struct brw_sf_prog_key *key )
 {
index c1ce6a9..8541cbc 100644 (file)
@@ -69,7 +69,8 @@ static void prealloc_reg(struct brw_wm_compile *c,
  */
 static void init_registers( struct brw_wm_compile *c )
 {
-   GLuint inputs = FRAG_BIT_WPOS | c->fp_interp_emitted;
+   struct brw_context *brw = c->func.brw;
+   GLuint inputs = (brw->vs.prog_data->outputs_written & DO_SETUP_BITS);
    GLuint nr_interp_regs = 0;
    GLuint i = 0;
    GLuint j;