mesa/src
Iago Toral Quiroga f3c3228522 broadcom/compiler: do not rebuild the interference graph after each spill
Instead, we only recompute liveness and we add new nodes and
interferences to the graph manually (we also need to patch
register classes in some cases).

To assist in this process, we also add an ip counter to our
instructions that we also recompute after each spill, which we use
to identify registers that cross thrsw boundries introduced with
TMU spills and fills and adjust their register classes accordingly
(removing their capacity to use accumulators).

This significantly reduces the CPU cost of spills. Using
shaders/closed/gputest/piano/7.shader_test as reference:

Compile time up to the first successful compile strategy in main is
~24s and with this change it is ~11s. With this speed up, we can now
try all 2-thread compile strategies (including the fallback scheduler)
in only ~15s.

A full shader-db run results in:
Total CPU time (seconds): 9904.67 -> 9087.98 (-8.25%)

Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15041>
2022-02-18 08:38:19 +00:00
..
amd panfrost,asahi,radv: Don't set internal=true manually 2022-02-17 23:30:46 +00:00
android_stub android_stub: update platform headers to include atrace 2021-10-09 00:42:32 +00:00
asahi agx: Don't kill helper threads in ld_var 2022-02-06 15:02:39 +00:00
broadcom broadcom/compiler: do not rebuild the interference graph after each spill 2022-02-18 08:38:19 +00:00
compiler nir: Set internal=true in nir_builder_init_simple_shader 2022-02-17 23:30:46 +00:00
drm-shim
egl egl/wayland: Don't replace existing backbuffer in get_buffers 2022-02-07 09:57:41 +00:00
etnaviv etnaviv: add support for INTEL_blackhole_render 2022-01-31 16:52:29 +00:00
freedreno nir: Add missing dependency on nir_opcodes.py 2022-02-17 22:57:33 +00:00
gallium panfrost,asahi,radv: Don't set internal=true manually 2022-02-17 23:30:46 +00:00
gbm replace 0 with NULL for NULL pointers 2022-01-10 22:53:32 +00:00
getopt
glx glx: Use the new no-error driver interface 2022-02-04 18:36:24 +00:00
gtest gtest: Fix output of array ASSERT/EXPECT macros 2021-11-11 09:53:09 -08:00
hgl
imgui
intel nir: Add missing dependency on nir_opcodes.py 2022-02-17 22:57:33 +00:00
loader gallium/dri: add missing PIPE_BIND_DRI_PRIME handling 2022-02-08 00:13:07 +00:00
mapi glthread: call _mesa_glthread_BindBuffer unconditionally 2022-02-01 06:11:22 +00:00
mesa nir: Set internal=true in nir_builder_init_simple_shader 2022-02-17 23:30:46 +00:00
microsoft nir: Add missing dependency on nir_opcodes.py 2022-02-17 22:57:33 +00:00
nouveau
panfrost panfrost,asahi,radv: Don't set internal=true manually 2022-02-17 23:30:46 +00:00
tool ci: Use a dlclose-disabling preload library for leak checking in Vulkan. 2022-01-27 23:47:46 +00:00
util radv: enable radv_disable_aniso_single_level for The Evil Within 1&2 2022-02-16 17:28:46 +01:00
virtio venus: add VK_EXT_custom_border_color extension 2022-02-17 21:02:37 +00:00
vulkan vulkan: Add back vk_image_view::format 2022-02-16 00:14:50 +00:00
meson.build meson: start building intel earlier. 2022-01-20 06:41:17 +00:00