Display list building with Intel GPUs/hybrid graphics
Categories
(Core :: Web Painting, defect, P3)
Tracking
()
People
(Reporter: mikokm, Unassigned)
References
(Blocks 1 open bug)
Details
Attachments
(2 files)
I did some benchmarking with a goal to better understand how the active graphics card and compositor backends change the display list build times. The ideal scenario here would be that the results are the same for all configurations, since the display list building should be CPU/RAM bound operation. However, I had previously observed that this is not the case on Linux, and wanted to verify this.
I ran benchmarks using Ryan's marionette script1 on my Thinkpad P50 (Xeon E3-1505M, 16GB, Quadro M2000M) and recorded the histograms for PAINT_BUILD_DISPLAYLIST_TIME. The benchmark scrolls Firefox twitter page up and down.
Linux (Ubuntu 18.04, hybrid graphics):
NVIDIA
Basic: sample_count = 3756 average = 2.800000 (default)
OGL: sample_count = 4980 average = 2.300000
WebRender: sample_count = 4859 average = 2.200000
Intel
Basic: sample_count = 3249 average = 4.400000 (default)
OGL: sample_count = 2875 average = 6.700000
WebRender: sample_count = 2937 average = 6.500000
This looks very bad. Using an Intel GPU on this machine under Linux increases the average display list build times by a factor of 2-3.
Windows 10 (hybrid graphics):
NVIDIA
Basic: sample_count = 3768 average = 2.400000
D3D: sample_count = 4231 average = 3.700000 (default)
WebRender: sample_count = 3955 average = 3.100000
Intel
Basic: sample_count = 3622 average = 2.600000 (default)
D3D: sample_count = 4177 average = 4.100000
WebRender: sample_count = 3870 average = 3.400000
The average display list build time increase on Windows seems to be lower, roughly 10%, which is within the benchmark error margin. The accuracy of these benchmarks could definitely be improved. Currently the pages are loaded directly from the internet, so the paint counts may differ. Using mitmproxy would make the page loading more deterministic.
For added confidence, I also ran dl-mutate benchmark2 with similar setups, and managed to reproduce some of the results on Windows.
Display list build times on Windows for 50k divs:
NVIDIA (integrated GPU disabled)
Basic: 8ms
D3D: 8ms (default)
WebRender: 8ms
Hybrid graphics, force Intel:
Basic: 9ms
D3D: 10ms (default)
WebRender: 10ms
Hybrid graphics, force NVIDIA:
Basic: 9ms
D3D: 13.5 ms (default)
WebRender: 10ms
Especially the last setup gave very weird results: it seems that in some cases we have child processes using different GPU (see pictures), which seems to kill our display list building performance.
| Reporter | ||
Comment 1•7 years ago
|
||
| Reporter | ||
Comment 2•7 years ago
|
||
| Reporter | ||
Updated•7 years ago
|
| Reporter | ||
Updated•7 years ago
|
Updated•4 years ago
|
Description
•