Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-74406 Abstract away the graphics APIs in Qt
  3. QTBUG-78587

Identify and possibly fix performance issues with qmlbench on the QRhi based rendering path in Qt Quick

    XMLWordPrintable

Details

    • Technical task
    • Resolution: Done
    • P2: Important
    • 6.0
    • Qt RHI, Quick: SceneGraph
    • 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

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              jokarlss Jonas Karlsson
              lagocs Laszlo Agocs
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes