[Mesa-dev] [PATCH 0/4] RadeonSI: Multithreaded shader compilation
Marek Olšák
maraeo at gmail.com
Wed Jun 29 16:32:53 UTC 2016
Hi,
This series implements basic multithreaded LLVM shader compilation
in a minimally invasive way. (+51 lines of code in the main patch)
It doesn't help on-demand shader compilation, but it does improve
loading and startup times by being able to saturate up to 4 CPU cores
if given enough shaders to compile. A proper shader cache might make
this redundant, but we don't have that now.
Implementation:
si_create_shader_selector doesn't compile main shader parts and
geometry shaders, but instead schedules an async job that does that.
si_shader_select (in a draw call) waits for the job to complete
before assembling a shader variant from multiple binaries.
Results:
Loading times (using a stopwatch and multiple tries):
Elemental Demo (black screen time): 10.45 -> 8.16 seconds (-2.29 s)
Unigine Heaven (loading time): 13.4 -> 12.2 seconds (-1.2 s)
Apitrace running times:
DiRT Showdown: 101.3 - > 94 seconds (-7.3 seconds)
Left 4 Dead 2: 37.5 -> 30 seconds (-7.5 seconds)
Borderlands 2: 36.9 -> 36.1 seconds (-0.8 seconds)
(the last one is an example of on-demand compilation)
Please review.
Marek
More information about the mesa-dev
mailing list