summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancisco Jerez <currojerez@riseup.net>2017-01-13 14:01:45 -0800
committerFrancisco Jerez <currojerez@riseup.net>2017-02-06 13:00:28 -0800
commit43a4e1645036e624e106aeb4067e9d7f5b32869f (patch)
tree41b365bd75861339b486ffb56c111b0073589652
parentff75dc89cae4102e45adc02d7e8dd815fe9cf323 (diff)
i965/fs: Add explicit last_rt flag to fb writes orthogonal to eot.
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp3
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_generator.cpp6
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_visitor.cpp2
-rw-r--r--src/mesa/drivers/dri/i965/brw_ir_fs.h1
4 files changed, 6 insertions, 6 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index bf6b2fd0112..aff0e0a5b5e 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -398,7 +398,7 @@ fs_inst::can_change_types() const
bool
fs_inst::has_side_effects() const
{
- return this->eot || backend_instruction::has_side_effects();
+ return this->eot || this->last_rt || backend_instruction::has_side_effects();
}
void
@@ -2910,6 +2910,7 @@ fs_visitor::emit_repclear_shader()
}
}
write->eot = true;
+ write->last_rt = true;
calculate_cfg();
diff --git a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
index bdddf7717cc..debd4b8dd68 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_generator.cpp
@@ -225,10 +225,6 @@ fs_generator::fire_fb_write(fs_inst *inst,
uint32_t surf_index =
prog_data->binding_table.render_target_start + inst->target;
- bool last_render_target = inst->eot ||
- (prog_data->dual_src_blend && dispatch_width == 16);
-
-
brw_fb_WRITE(p,
payload,
implied_header,
@@ -237,7 +233,7 @@ fs_generator::fire_fb_write(fs_inst *inst,
nr,
0,
inst->eot,
- last_render_target,
+ inst->last_rt,
inst->header_size != 0);
brw_mark_surface_used(&prog_data->base, surf_index);
diff --git a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
index 507c91b488f..761f47dbb44 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_visitor.cpp
@@ -147,6 +147,7 @@ fs_visitor::emit_dummy_fs()
fs_inst *write;
write = bld.emit(FS_OPCODE_FB_WRITE);
write->eot = true;
+ write->last_rt = true;
if (devinfo->gen >= 6) {
write->base_mrf = 2;
write->mlen = 4 * reg_width;
@@ -503,6 +504,7 @@ fs_visitor::emit_fb_writes()
inst->target = 0;
}
+ inst->last_rt = true;
inst->eot = true;
}
diff --git a/src/mesa/drivers/dri/i965/brw_ir_fs.h b/src/mesa/drivers/dri/i965/brw_ir_fs.h
index cad371248c4..9e72d617351 100644
--- a/src/mesa/drivers/dri/i965/brw_ir_fs.h
+++ b/src/mesa/drivers/dri/i965/brw_ir_fs.h
@@ -368,6 +368,7 @@ public:
uint8_t sources; /**< Number of fs_reg sources. */
bool eot:1;
+ bool last_rt:1;
bool pi_noperspective:1; /**< Pixel interpolator noperspective flag */
};