From: Matt Turner Date: Tue, 13 Jan 2015 23:35:57 +0000 (-0800) Subject: i965/fs: Don't use backend_visitor::instructions after creating the CFG. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e214000f258ae564e64d839cccee9418526f226b;p=mesa.git i965/fs: Don't use backend_visitor::instructions after creating the CFG. This is a fix for a regression introduced in commit a9f8296d ("i965/fs: Preserve the CFG in a few more places."). The errata this code works around is described in a comment before the function: "[DevBW, DevCL] Errata: A destination register from a send can not be used as a destination register until after it has been sourced by an instruction with a different destination register. The framebuffer write's sources must be in message registers, which SEND instructions cannot have as a destination. There's no way for this errata to affect anything at the end of the program. Just remove the code. Cc: 10.4, 10.5 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84613 Reviewed-by: Kenneth Graunke --- diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 1a09ea31569..533feb4c7a6 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -3037,16 +3037,6 @@ fs_visitor::insert_gen4_post_send_dependency_workarounds(bblock_t *block, fs_ins if (i == write_len) return; } - - /* If we hit the end of the program, resolve all remaining dependencies out - * of paranoia. - */ - fs_inst *last_inst = (fs_inst *)this->instructions.get_tail(); - assert(last_inst->eot); - for (int i = 0; i < write_len; i++) { - if (needs_dep[i]) - last_inst->insert_before(block, DEP_RESOLVE_MOV(first_write_grf + i)); - } } void