mesa/src
Iago Toral Quiroga 7eb8eb10f6 v3d/compiler: allow to batch spills
Some shaders that need to spill hundreds of registers can take very long times
to compile as each allocation attempt spills a single register and restarts
the allocation process. We can significantly cut down these times if we allow
the compiler to spill in batches, which should be possible if we are spilling
uniforms, which is in fact the kind of spills that we do first because they
have lower cost than TMU spills.

Doing this could cause us to slightly over spill in some cases (depending on
the chosen batch size) leading to slightly worse performance, so we only
enable this behavior after we have started to spill over a certain threshold,
at which point we assume that performance won't be good and we want to
favor compilation speed instead.

v2:
  - Keep it simple and just try to spill a fixed amount of registers in a
    batch instead of trying to compute this dynamically based on accumulated
    spills and current register pressure. (Eric).

v3:
  - Check if the node is valid before doing anything with it.
  - Drop the environment variable to select batch size and just fix it to 20.

With this we can take this CTS test from 35 minutes down to about 3 minutes:
dEQP-VK.ssbo.layout.random.all_shared_buffer.5

Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6766>
2020-10-13 21:21:33 +00:00
..
amd aco: fix get_ssbo_size with a vgpr resource 2020-10-13 14:20:28 +00:00
android_stub mesa: Make the android_stub be a set of non-installed shared libraries. 2020-09-22 17:09:22 +00:00
broadcom v3d/compiler: allow to batch spills 2020-10-13 21:21:33 +00:00
compiler nir: add a nir_get_ubo_size intrinsic 2020-10-13 21:21:33 +00:00
drm-shim drm-shim: Fix unused variable warnings from asserts in release build. 2020-08-28 22:45:08 +00:00
egl egl/android: HAVE_DRM_GRALLOC path fixes (v2) 2020-09-07 23:33:15 +02:00
etnaviv etnaviv: replace all dup() with os_dupfd_cloexec() 2020-06-18 02:09:56 +00:00
freedreno turnip: Add support for GetSwapchainGrallocUsage2ANDROID(). 2020-10-08 21:04:01 +00:00
gallium broadcom/compiler: rename QUNIFORM_GET_BUFFER_SIZE to QUNIFORM_GET_SSBO_SIZE 2020-10-13 21:21:33 +00:00
gbm gallium: rename pipe_transfer_usage -> pipe_map_flags 2020-09-22 03:20:54 +00:00
getopt
glx glx: Allow depth-30 pbuffers to work without a depth-30 pixmap format 2020-09-17 14:28:24 -04:00
gtest gtest: Update to 1.10.0 2020-04-20 11:57:11 +00:00
hgl scons: Prune out unnecessary targets. 2020-03-30 13:38:01 +00:00
imgui
intel radv/aco,nir/lower_subgroups: don't lower elect 2020-10-13 12:47:20 +00:00
loader driconf: Make the driver's declarations be structs instead of XML. 2020-10-02 23:59:52 +00:00
mapi glthread: handle glInterleavedArrays 2020-10-07 09:50:18 -04:00
mesa glsl: Initialize ir_to_mesa_visitor members in constructor. 2020-10-13 21:07:24 +00:00
panfrost pan/bi: Range check newc/oldc when rewriting 2020-10-10 17:15:03 -04:00
util util/xmlconfig: Initialize xmlconfig member options in constructor. 2020-10-13 13:34:53 -07:00
virtio virgl: update protocol headers 2020-08-21 18:38:44 +00:00
vulkan vulkan/wsi/display: add option for display fence to signal syncobj 2020-09-24 13:20:00 +00:00
meson.build v3dv: add v3d vulkan driver skeleton 2020-10-13 21:21:24 +00:00
SConscript driconf: drop now unused translation facility 2020-06-22 21:50:12 +00:00