Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-20101

All QML applications multi-threaded for guaranteed UI reponsiveness and consistent frame rates

    XMLWordPrintable

Details

    Description

      In 4.7 and earlier, QML applications are typically single threaded, with some features offloaded to dedicated threads (such as image provider).

      In particular, when providing some kind of engine or runtime plugin created in C++, the model most easily adopted by developers is that it is running on the same thread as the QmlEngine, which is the same thread as the rendering.

      This architecture is not suitable for non-trivial or graphics intensive applications requiring a consistent (and typically >60 frames-per-second, <16ms render time available per frame) update rate.

      Data-related operations invoked synchronously from the rendering thread (component creation/destruction, QPixmap texture binding, data model item fetching) can easily consume more than a frame's worth of processing time, causing the visual appearance to be jerky and not smooth due to missing frames.

      In addition, the rendering model with OpenGL or OpenVG typically blocks at the end of a frame render (in eglSwapBuffers) until the system is ready to accept commands for the next frame. This means that rendering thread cannot be effectively used for other work - it must be on a different thread if CPU time is to be used effectively.

      Attachments

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

        Activity

          People

            aakenned Aaron Kennedy
            minshin Minjung Shin (closed Nokia identity) (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes