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: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Matt Turner <mattst88@gmail.com>
This commit is contained in:

committed by
Jason Ekstrand

parent
d3cd6b7215
commit
4bd2047dee
@@ -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);
|
||||
|
Reference in New Issue
Block a user