Commit 4bd2047d authored by Francisco Jerez's avatar Francisco Jerez Committed by Jason Ekstrand
Browse files

intel/fs: Add explicit last_rt flag to fb writes orthogonal to eot.



When using multiple RT write messages to the same RT such as for
dual-source blending or all RT writes in SIMD32, we have to set the
"Last Render Target Select" bit on all write messages that target the
last RT but only set EOT on the last RT write in the shader.
Special-casing for dual-source blend works today because that is the
only case which requires multiple RT write messages per RT.  When we
start doing SIMD32, this will become much more common so we add a
dedicated bit for it.
Reviewed-by: default avatarJason Ekstrand <jason@jlekstrand.net>
Reviewed-by: default avatarMatt Turner <mattst88@gmail.com>
parent d3cd6b72
......@@ -3246,6 +3246,7 @@ fs_visitor::emit_repclear_shader()
}
}
write->eot = true;
write->last_rt = true;
calculate_cfg();
......
......@@ -289,10 +289,6 @@ fs_generator::fire_fb_write(fs_inst *inst,
*/
const uint32_t surf_index = inst->target;
bool last_render_target = inst->eot ||
(prog_data->dual_src_blend && dispatch_width == 16);
brw_fb_WRITE(p,
payload,
implied_header,
......@@ -301,7 +297,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);
......
......@@ -103,6 +103,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;
......@@ -459,6 +460,7 @@ fs_visitor::emit_fb_writes()
inst->target = 0;
}
inst->last_rt = true;
inst->eot = true;
}
......
......@@ -374,6 +374,7 @@ public:
uint8_t sources; /**< Number of fs_reg sources. */
bool last_rt:1;
bool pi_noperspective:1; /**< Pixel interpolator noperspective flag */
};
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment