mesa/src/intel
Jason Ekstrand e99081e76d intel/fs/ra: Spill without destroying the interference graph
Instead of re-building the interference graph every time we spill, we
modify it in place so we can avoid recalculating liveness and the whole
O(n^2) interference graph building process.  We make a simplifying
assumption in order to do so which is that all spill/fill temporary
registers live for the entire duration of the instruction around which
we're spilling.  This isn't quite true because a spill into the source
of an instruction doesn't need to interfere with its destination, for
instance.  Not re-calculating liveness also means that we aren't
adjusting spill costs based on the new liveness.  The combination of
these things results in a bit of churn in spilling.  It takes a large
cut out of the run-time of shader-db on my laptop.

Shader-db results on Kaby Lake:

    total instructions in shared programs: 15311224 -> 15311360 (<.01%)
    instructions in affected programs: 77027 -> 77163 (0.18%)
    helped: 11
    HURT: 18

    total cycles in shared programs: 355544739 -> 355830749 (0.08%)
    cycles in affected programs: 203273745 -> 203559755 (0.14%)
    helped: 234
    HURT: 190

    total spills in shared programs: 12049 -> 12042 (-0.06%)
    spills in affected programs: 2465 -> 2458 (-0.28%)
    helped: 9
    HURT: 16

    total fills in shared programs: 25112 -> 25165 (0.21%)
    fills in affected programs: 6819 -> 6872 (0.78%)
    helped: 11
    HURT: 16

    Total CPU time (seconds): 2469.68 -> 2360.22 (-4.43%)

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2019-05-14 12:30:22 -05:00
..
blorp intel/blorp: Make blorp update the clear color in gen11. 2019-04-29 21:19:59 +00:00
common intel/mi_builder: Disable mem_mem tests on IVB 2019-04-16 12:59:12 -05:00
compiler intel/fs/ra: Spill without destroying the interference graph 2019-05-14 12:30:22 -05:00
dev intel: drop misleading driver name from gen_get_device_info() 2019-05-11 04:14:06 +00:00
genxml intel/genxml: Update MI_ATOMIC genxml definition. 2019-04-29 21:19:59 +00:00
isl isl: Add restrictions to isl_surf_get_hiz_surf() 2019-05-14 16:23:12 +00:00
perf i965: fix icelake performance query enabling 2019-04-25 01:11:54 +00:00
tools intel/tools: Fix build with glibc < 2.27. 2019-05-13 11:05:48 -07:00
vulkan anv: Implement VK_KHR_uniform_buffer_standard_layout 2019-05-13 17:20:33 -05:00
Android.blorp.mk
Android.common.mk android: static link with libexpat with Android O+ 2019-03-25 10:11:57 +02:00
Android.compiler.mk
Android.dev.mk drm-uapi: use local files, not system libdrm 2019-02-14 11:20:00 +00:00
Android.genxml.mk
Android.isl.mk android: intel/isl: remove redundant building rules 2019-02-22 07:56:11 +02:00
Android.mk i965: extract performance query metrics 2019-04-17 14:10:42 +01:00
Android.perf.mk i965: extract performance query metrics 2019-04-17 14:10:42 +01:00
Android.vulkan.mk android: static link with libexpat with Android O+ 2019-03-25 10:11:57 +02:00
Makefile.perf.am i965: extract performance query metrics 2019-04-17 14:10:42 +01:00
Makefile.sources intel/compiler: add a NIR pass to lower conversions 2019-04-18 11:05:18 +02:00
meson.build i965: extract performance query metrics 2019-04-17 14:10:42 +01:00