We weren't setting needs_dep[i] in the loops, so we'd continue on to potentially add the same workaround MOVs to the later basic block boundaries, too. We can either set needs_dep[i] to exit through the normal path, or we can just return since we know we're done. --- src/mesa/drivers/dri/i965/brw_fs.cpp | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index c128175..5d83e50 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -2346,6 +2346,7 @@ fs_visitor::insert_gen4_pre_send_dependency_workarounds(fs_inst *inst) inst->insert_before(DEP_RESOLVE_MOV(first_write_grf + i)); } } + return; } bool scan_inst_16wide = (dispatch_width > 8 && @@ -2415,6 +2416,7 @@ fs_visitor::insert_gen4_post_send_dependency_workarounds(fs_inst *inst) if (needs_dep[i]) scan_inst->insert_before(DEP_RESOLVE_MOV(first_write_grf + i)); } + return; } /* Clear the flag for registers that actually got read (as expected). */ -- 1.7.10.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev