summaryrefslogtreecommitdiffstats
path: root/doxygen
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2012-12-03 19:59:55 -0800
committerEric Anholt <[email protected]>2012-12-14 15:17:59 -0800
commit456dbcc3377ee23dbeffa4da02a4d80a8519bb62 (patch)
tree6d58f3cee863898587e89a02243d25af01e50244 /doxygen
parentba864bfcfaceac37a5f9292795dc5aba7dc2c0e2 (diff)
i965/fs: Before reg alloc, schedule instructions to reduce live ranges.
This came from an idea by Ben Segovia. 16-wide pixel shaders are very important for latency hiding on i965, so we want to try really hard to get them. If scheduling an instruction makes some set of instructions available, those are probably the ones that make the instruction's result dead. By choosing those first, we'll have a tendency to reduce the amount of live data as opposed to creating more. Previously, we were sometimes getting this behavior out of the scheduler, which was what produced the scheduler's original performance wins on lightsmark. Unfortunately, that was mostly an accident of the lame instruction latency information that I had, which made it impossible to fix the actual scheduling for performance. Now that we've fixed the scheduling for setup for register allocation, we can safely update the latency parameters for the final schedule. In shader-db, we lose 37 16-wide shaders, but gain 90 new ones. 4 shaders that were spilling change how many registers spill, for a reduction of 70/3899 instructions. v2: Simplify the new loop. Acked-by: Kenneth Graunke <[email protected]>
Diffstat (limited to 'doxygen')
0 files changed, 0 insertions, 0 deletions