diff options
author | Francisco Jerez <currojerez@riseup.net> | 2017-01-13 14:01:45 -0800 |
---|---|---|
committer | Francisco Jerez <currojerez@riseup.net> | 2017-02-06 13:00:28 -0800 |
commit | 43a4e1645036e624e106aeb4067e9d7f5b32869f (patch) | |
tree | 41b365bd75861339b486ffb56c111b0073589652 | |
parent | ff75dc89cae4102e45adc02d7e8dd815fe9cf323 (diff) |
i965/fs: Add explicit last_rt flag to fb writes orthogonal to eot.
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs.cpp | 3 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_generator.cpp | 6 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_visitor.cpp | 2 | ||||
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_ir_fs.h | 1 |
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 */ }; |