i965: enable accumulator update in PS kernel too on sandybridge
authorZhenyu Wang <zhenyuw@linux.intel.com>
Fri, 17 Sep 2010 04:45:01 +0000 (12:45 +0800)
committerZhenyu Wang <zhenyuw@linux.intel.com>
Tue, 28 Sep 2010 07:58:19 +0000 (15:58 +0800)
Accumulator update flag must be set for implicit update on sandybridge.

src/mesa/drivers/dri/i965/brw_wm_emit.c
src/mesa/drivers/dri/i965/brw_wm_glsl.c

index 9be3bfbbfe2d06a9c8d88c9e404bf6202bcaa467..260a04c774e2d0fd721c2d77bc396a689d9d796d 100644 (file)
@@ -1627,9 +1627,12 @@ static void spill_values( struct brw_wm_compile *c,
 void brw_wm_emit( struct brw_wm_compile *c )
 {
    struct brw_compile *p = &c->func;
+   struct intel_context *intel = &p->brw->intel;
    GLuint insn;
 
    brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED);
+   if (intel->gen >= 6)
+       brw_set_acc_write_control(p, 1);
 
    /* Check if any of the payload regs need to be spilled:
     */
index f60245377e47fd8aecfce6efa1a01c1b68f83890..1cbd5d2b55ac726a11cfacbc8f7fa68857950772 100644 (file)
@@ -711,6 +711,9 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)
     brw_set_compression_control(p, BRW_COMPRESSION_NONE);
     brw_MOV(p, get_addr_reg(stack_index), brw_address(c->stack));
 
+    if (intel->gen >= 6)
+       brw_set_acc_write_control(p, 1);
+
     for (i = 0; i < c->nr_fp_insns; i++) {
         const struct prog_instruction *inst = &c->prog_instructions[i];
        int dst_flags;