[Mesa-dev] [PATCH 3/6] i965: always run the post-RA scheduler

Connor Abbott cwabbott0 at gmail.com
Fri Oct 2 14:37:31 PDT 2015

Before, we would only do scheduling after register allocation if we
spilled, despite the fact that the pre-RA scheduler was only supposed to
be for register pressure and set the latencies of every instruction to
1. This meant that unless we spilled, which we rarely do, then we never
considered instruction latencies at all, and we usually never bothered
to try and hide texture fetch latency. Although a later commit removes
the setting the latency to 1 part, we still want to always run the
post-RA scheduler since it's able to take the false dependencies that
the register allocator creates into account, and it can be more
aggressive than the pre-RA scheduler since it doesn't have to worry
about register pressure at all.

XXX perf data

Signed-off-by: Connor Abbott <cwabbott0 at gmail.com>
 src/mesa/drivers/dri/i965/brw_fs.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index b269ade..14a9fdf 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -4981,8 +4981,7 @@ fs_visitor::allocate_registers()
    if (failed)
-   if (!allocated_without_spills)
-      schedule_instructions(SCHEDULE_POST);
+   schedule_instructions(SCHEDULE_POST);
    if (last_scratch > 0)
       prog_data->total_scratch = brw_get_scratch_size(last_scratch);

More information about the mesa-dev mailing list