i965/fs: Treat the FB_WRITE as predicated if we're discarding.

Pre-Haswell hardware couldn't actually predicate it, but it's easier to
pretend as if it's predicated in the visitor since it will generate a
MOV from f0.1.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Matt Turner 2014-11-11 18:02:23 -08:00
parent f1e5418f40
commit e4d0299089
2 changed files with 5 additions and 1 deletions

View File

@ -163,6 +163,10 @@ fs_generator::generate_fb_write(fs_inst *inst, struct brw_reg payload)
const brw_wm_prog_key * const key = (brw_wm_prog_key * const) this->key;
struct brw_reg implied_header;
if (brw->gen < 8 && !brw->is_haswell) {
brw_set_default_predicate_control(p, BRW_PREDICATE_NONE);
}
if (inst->base_mrf >= 0)
payload = brw_message_reg(inst->base_mrf);

View File

@ -3334,7 +3334,7 @@ fs_visitor::emit_single_fb_write(fs_reg color0, fs_reg color1,
write->mlen = load->regs_written;
write->header_present = header_present;
if ((brw->gen >= 8 || brw->is_haswell) && prog_data->uses_kill) {
if (prog_data->uses_kill) {
write->predicate = BRW_PREDICATE_NORMAL;
write->flag_subreg = 1;
}