i965: don't use context state in emit_fb_write()
authorBrian Paul <brianp@vmware.com>
Thu, 29 Oct 2009 20:53:53 +0000 (14:53 -0600)
committerBrian Paul <brianp@vmware.com>
Thu, 29 Oct 2009 21:33:43 +0000 (15:33 -0600)
Put the state that we care about in the hash key.
Issue spotted by Keith Whitwell.

src/mesa/drivers/dri/i965/brw_wm.c
src/mesa/drivers/dri/i965/brw_wm.h
src/mesa/drivers/dri/i965/brw_wm_fp.c

index 5a2ac1a6519de17e6e90bd671976bacae488a93a..eeb25980fa090aff22e752441246fb9d26045fd0 100644 (file)
@@ -325,6 +325,8 @@ static void brw_wm_populate_key( struct brw_context *brw,
       key->drawable_height = brw->intel.driDrawable->h;
    }
 
+   key->nr_color_regions = brw->state.nr_color_regions;
+
    /* CACHE_NEW_VS_PROG */
    key->vp_outputs_written = brw->vs.prog_data->outputs_written & DO_SETUP_BITS;
 
index f13a958a441fd802168d31322206d97f537d72f3..d0f30607d0e82bb9d06718cb7d19a3aef2285b5e 100644 (file)
@@ -67,6 +67,7 @@ struct brw_wm_prog_key {
    GLuint flat_shade:1;
    GLuint linear_color:1;  /**< linear interpolation vs perspective interp */
    GLuint runtime_check_aads_emit:1;
+   GLuint nr_color_regions:2;
    
    GLbitfield proj_attrib_mask; /**< one bit per fragment program attribute */
    GLuint shadowtex_mask:16;
index d33fd9abedf3413c386737305106a611e316307a..9a0aea872bf53c6e11583abad01b22454fab77fc 100644 (file)
@@ -968,8 +968,8 @@ static void emit_fb_write( struct brw_wm_compile *c )
 
    /* The inst->Aux field is used for FB write target and the EOT marker */
 
-   if (brw->state.nr_color_regions > 1) {
-      for (i = 0 ; i < brw->state.nr_color_regions; i++) {
+   if (c->key.nr_color_regions > 1) {
+      for (i = 0 ; i < c->key.nr_color_regions; i++) {
          outcolor = src_reg(PROGRAM_OUTPUT, FRAG_RESULT_DATA0 + i);
          last_inst = inst = emit_op(c, WM_FB_WRITE, dst_mask(dst_undef(), 0),
                                     0, outcolor, payload_r0_depth, outdepth);