diff --git a/src/mesa/drivers/dri/i965/brw_fs_emit.cpp b/src/mesa/drivers/dri/i965/brw_fs_emit.cpp index aa3a616015c..b163e1840e1 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_emit.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_emit.cpp @@ -134,9 +134,7 @@ fs_generator::generate_fb_write(fs_inst *inst) retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UD)); brw_set_compression_control(p, BRW_COMPRESSION_NONE); - if (inst->target > 0 && - c->key.nr_color_regions > 1 && - c->key.sample_alpha_to_coverage) { + if (inst->target > 0 && c->key.replicate_alpha) { /* Set "Source0 Alpha Present to RenderTarget" bit in message * header. */ diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp index 004be6d6090..3df49664650 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp @@ -2127,8 +2127,7 @@ fs_visitor::emit_fb_writes() if (header_present) { src0_alpha_to_render_target = intel->gen >= 6 && !do_dual_src && - c->key.nr_color_regions > 1 && - c->key.sample_alpha_to_coverage; + c->key.replicate_alpha; /* m2, m3 header */ nr += 2; } diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 4b0446574ac..e68cbd4e64e 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -272,7 +272,7 @@ brw_wm_debug_recompile(struct brw_context *brw, found |= key_debug("depth statistics", old_key->stats_wm, key->stats_wm); found |= key_debug("flat shading", old_key->flat_shade, key->flat_shade); found |= key_debug("number of color buffers", old_key->nr_color_regions, key->nr_color_regions); - found |= key_debug("sample alpha to coverage", old_key->sample_alpha_to_coverage, key->sample_alpha_to_coverage); + found |= key_debug("MRT alpha test or alpha-to-coverage", old_key->replicate_alpha, key->replicate_alpha); found |= key_debug("rendering to FBO", old_key->render_to_fbo, key->render_to_fbo); found |= key_debug("fragment color clamping", old_key->clamp_fragment_color, key->clamp_fragment_color); found |= key_debug("line smoothing", old_key->line_aa, key->line_aa); @@ -460,8 +460,10 @@ static void brw_wm_populate_key( struct brw_context *brw, /* _NEW_BUFFERS */ key->nr_color_regions = ctx->DrawBuffer->_NumColorDrawBuffers; - /* _NEW_MULTISAMPLE */ - key->sample_alpha_to_coverage = ctx->Multisample.SampleAlphaToCoverage; + + /* _NEW_MULTISAMPLE, _NEW_COLOR, _NEW_BUFFERS */ + key->replicate_alpha = ctx->DrawBuffer->_NumColorDrawBuffers > 1 && + (ctx->Multisample.SampleAlphaToCoverage || ctx->Color.AlphaEnabled); /* CACHE_NEW_VS_PROG */ if (intel->gen < 6) diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h index a4ac3f146f7..5389fda44cd 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.h +++ b/src/mesa/drivers/dri/i965/brw_wm.h @@ -62,7 +62,7 @@ struct brw_wm_prog_key { GLuint stats_wm:1; GLuint flat_shade:1; GLuint nr_color_regions:5; - GLuint sample_alpha_to_coverage:1; + GLuint replicate_alpha:1; GLuint render_to_fbo:1; GLuint clamp_fragment_color:1; GLuint line_aa:2;