Details
-
Technical task
-
Resolution: Done
-
P2: Important
-
None
Description
Do more qmlbench and figure out what we can improve. At minimum Windows (Vulkan/D3D11/OpenGL vs. direct OpenGL) and macOS (Metal vs. direct OpenGL) must be tested.
Only release builds must ever be used for benchmarking. Debug builds will always be slower with QRhi due to the unoptimized debug build of an entire layer that is not there at all when going to OpenGL directly.
Some qmlbench results from a release build of 5.14 on 01/10/2019 on a Windows 10 (1903) machine with NVIDIA GTX 960. Take these with a grain of salt: the numbers can vary +-20 (sometimes more) between runs. All runs used the threaded render loop. (qtdeclarative had the not-yet-merged https://codereview.qt-project.org/c/qt/qtdeclarative/+/275548 applied)
The results are in "frames". Higher is better.
Case | Direct OpenGL | Vulkan on QRhi | D3D11 on QRhi | OpenGL on QRhi |
changes/changing_over_isolated_with_clip_rotated.qml | 731 | 918 | 861 | 682 |
changes/changing_over_isolated_with_clip.qml | 1199 | 1200 | 1202 | 1200 |
changes/changing_over_isolated.qml | 1196 | 1199 | 1199 | 1200 |
changes/changing_texts.qml | 948 | 941 | 914 | 928 |
changes/changing_text_oneofmany.qml | 1200 | 1200 | 1199 | 1200 |
animations/comparison/moving-images-animations.qml | 818 | 802 | 805 | 808 |
animations/comparison/moving-images-animators.qml | 537 | 516 | 521 | 511 |
creation/quick.rectangle/delegates_rect.qml | 653 | 675 | 667 | 659 |
creation/quick.rectangle/delegates_rect_blended.qml | 611 | 616 | 603 | 609 |
creation/quick.rectangle/delegates_rect_gradient.qml | 405 | 411 | 401 | 413 |
creation/quick.rectangle/delegates_rect_radius.qml | 608 | 623 | 617 | 620 |
creation/quick.image/delegates_image_alpha.qml | 505 | 501 | 497 | 504 |
creation/quick.text/delegates_longtext.qml | 175 | 174 | 172 | 171 |
Same tests on macOS 10.14.6 on a 2018 Core i5 Mac Mini. Here OpenGL can only use the basic render loop, regardless of going through QRhi or not. Metal defaults to threaded.
Case | Direct OpenGL | Metal on QRhi | OpenGL on QRhi |
changes/changing_over_isolated_with_clip_rotated.qml | 255 | 426 | 386 |
changes/changing_over_isolated_with_clip.qml | 1159 | 1062 | 891 |
changes/changing_over_isolated.qml | 1250 | 1201 | 1251 |
changes/changing_texts.qml | 312 | 331 | 312 |
changes/changing_text_oneofmany.qml | 1251 | 1201 | 1251 |
animations/comparison/moving-images-animations.qml | 726 | 925 | 656 |
animations/comparison/moving-images-animators.qml | 618 | 633 | 567 |
creation/quick.rectangle/delegates_rect.qml | (733) * | 642 | 592 |
creation/quick.rectangle/delegates_rect_blended.qml | 570 | 617 | 560 |
creation/quick.rectangle/delegates_rect_gradient.qml | 372 | 410 | 354 |
creation/quick.rectangle/delegates_rect_radius.qml | 557 | 622 | 519 |
creation/quick.image/delegates_image_alpha.qml | 469 | 517 | 444 |
creation/quick.text/delegates_longtext.qml | 131 | 147 | 127 |
Some of the _rect tests, especially delegates_rect.qml, freeze up on-screen from to time when running with OpenGL. Therefore those results are not to be trusted. Metal renders correctly.
There are further improvements in the pipeline (QTBUG-78908, QTBUG-78883) so these tables should be updated later on.
Attachments
Issue Links
- depends on
-
QTBUG-78620 Move away from QVector and d pointers in QRhiResource subclasses
- Closed
-
QTBUG-78792 Varied performance in scenes with > 1000 unbatched geometry nodes
- Closed
-
QTBUG-78862 QRhiPassResourceTracker is slow
- Closed
-
QTBUG-78908 Disable unnecessary mutexes in vk_mem_alloc
- Closed
-
QTBUG-78852 QRhi OpenGL/Vulkan backend: consider if dynamic buffers should follow the MAP_DISCARD style approach like d3d11
- Closed
-
QTBUG-78883 Investigate if number of allocations performed while filling up a QRhiResourceUpdateBatch could be reduced
- Closed
- relates to
-
QTBUG-78621 Figure out the message about benefits, pros/cons, performance when running with QRhi and the newer APIs
- Closed
-
QTBUG-78973 Add QRhi-enabled Qt Quick runs in qmlbench-based infra
- Closed
-
QTBUG-78984 Make buffer operations extensible in QRhiResourceUpdateBatch
- Closed
- mentioned in
-
Page Loading...