Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Graphics Performance

Graphics Performance

Scheduled Pinned Locked Moved Mobile and Embedded
6 Posts 2 Posters 7.5k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    samus8zero2x
    wrote on last edited by
    #1

    We're using Qt Embedded (QWS) 4.7.3 with OpenGL ES on a TI processor with integrated SGX accelerator. It seems needed options (such as powervr, opengl es2, neon, openvg, etc.) are being configured and installed properly and we are able to run Open GL apps fine.

    However, it seems the GUI itself is unreasonably slow, assuming that Qt is actually leveraging any of the above mentioned support modules. I will give two examples:
    1 - Animating the opening of an on-screen keyboard is extremely chop (you get maybe 3 frames per second)
    2 - Alpha blending is very sluggish

    So, I'm guessing when neon, openvg, opengl, etc. are enabled Qt is still doing everything it normally does? Do you have to explicitly setup your application to make use of each of these options?

    1 Reply Last reply
    0
    • V Offline
      V Offline
      VitorAMJ
      wrote on last edited by
      #2

      Hi there, I am not sure about embedded platform, however what I know is that to make Qt 4.7.3 work with opengl or openvg graphicssystems you must set it into the Qt build, during the configure procedure (then make, make install).
      Otherwise it will be raster. You can set it by doing:
      configure "other config stuff bla bla" -graphicssystem opengl
      or
      configure "other config stuff bla bla" -graphicssystem openvg

      This means you have to rebuild Qt. Also, as the configure --help shows, these features are experimental... from what I know, it does not work well on some desktop platforms yet, not sure about yours... unfortunately.

      Regards,

      1 Reply Last reply
      0
      • S Offline
        S Offline
        samus8zero2x
        wrote on last edited by
        #3

        When I tried to add the -graphicssystem switch I get the following:
        @Error: Graphics System plugins are not supported on QWS.
        On QWS, the graphics system API is part of the QScreen plugin architecture
        rather than existing as a separate plugin.@

        This points to what I was previously assuming: using the powervr plugin uses the opengl system for "painting."

        FYI, here is my configure command:
        @./configure
        -prefix [path/to/target]/qt-embedded -embedded arm
        -platform qws/linux-x86-g++ -xplatform qws/linux-TIarmv7-g++
        -depths 16,24,32 -no-mmx -no-3dnow -no-sse -no-sse2
        -no-glib -no-cups -no-largefile -no-accessibility -no-openssl
        -no-gtkstyle -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-linuxinput
        -qt-mouse-tslib -plugin-mouse-linuxtp -plugin-mouse-pc -fast
        -opengl es2 -openvg -qt-gfx-transformed -qt-gfx-vnc
        -qt-gfx-linuxfb -qt-gfx-multiscreen -plugin-gfx-powervr
        -D QT_NO_QWS_CURSOR -D QT_QWS_CLIENTBLIT
        -nomake examples -nomake demos -nomake docs -nomake translations@

        And here is the relevant resulting output from configure:
        @Debug .................. no
        Qt 3 compatibility ..... yes
        QtDBus module .......... no
        QtConcurrent code ...... yes
        QtGui module ........... yes
        QtScript module ........ yes
        QtScriptTools module ... yes
        QtXmlPatterns module ... no
        Phonon module .......... no
        Multimedia module ...... auto
        SVG module ............. yes
        WebKit module .......... yes
        JavaScriptCore JIT ..... To be decided by JavaScriptCore
        Declarative module ..... yes
        Declarative debugging ...yes
        Support for S60 ........ no
        Symbian DEF files ...... no
        STL support ............ yes
        PCH support ............ yes
        MMX/3DNOW/SSE/SSE2/SSE3. no/no/no/no/no
        SSSE3/SSE4.1/SSE4.2..... no/no/no
        AVX..................... no
        iWMMXt support ......... no
        NEON support ........... yes
        IPv6 support ........... yes
        IPv6 ifname support .... yes
        getaddrinfo support .... yes
        getifaddrs support ..... yes
        Accessibility .......... no
        NIS support ............ yes
        CUPS support ........... no
        Iconv support .......... no
        Glib support ........... no
        GStreamer support ...... no
        PulseAudio support ..... no
        Large File support ..... no
        GIF support ............ plugin
        TIFF support ........... plugin (qt)
        JPEG support ........... plugin (qt)
        PNG support ............ yes (qt)
        MNG support ............ plugin (qt)
        zlib support ........... yes
        Session management ..... no
        Embedded support ....... arm
        Freetype2 support ...... auto (yes)
        Graphics (qt) .......... linuxfb multiscreen transformed vnc linuxfb multiscreen
        Graphics (plugin) ...... powervr
        Decorations (qt) ....... styled windows default
        Decorations (plugin) ...
        Keyboard driver (qt) ... tty
        Keyboard driver (plugin) ..
        Mouse driver (qt) ...... linuxinput tslib
        Mouse driver (plugin) .. linuxtp pc
        OpenGL support ......... yes (OpenGL ES 2.x)
        EGL support ............ yes <EGL/egl.h>
        OpenVG support ......... yes
        SQLite support ......... plugin (qt)
        OpenSSL support ........ no
        Alsa support ........... no
        ICD support ............ no@

        I also define this on the target system:
        @export QWS_DISPLAY="powervr"@

        I suppose I could ask my question in a different way: What is meant when the Qt docs say that a widget is "painted" with OpenGL? Is it painted internally as a bitmap/pixel buffer and then just copied to an OpenGL context?

        1 Reply Last reply
        0
        • V Offline
          V Offline
          VitorAMJ
          wrote on last edited by
          #4

          bq. samus8zero2x wrote:
          Error: Graphics System plugins are not supported on QWS.
          On QWS, the graphics system API is part of the QScreen plugin architecture
          rather than existing as a separate plugin.

          Hey man, that's just bad news...

          Regarding your question, to me it seems that Qt paints the window using a raster process by default. I could not find the OpenGL being the base widget painting in the documentation, but if it is there, I believe its wrong and has to be corrected. Qt support for OpenGL means that you can subclass QGLWidget (framebuffer, shaders, and all the benefits), but for that class only and not the window painting system as a whole. I am not a SVG user also, but I've googled it and saw that you can use a QGraphicsSvgItem to display Scalable Vector Graphics drawings as items in the scene.

          For the OpenGL QGLWidget subclass, there is no raster procedure involved. Again not sure about SVG, but it also sounds false.

          I hope this helps,
          VitorAMJ

          1 Reply Last reply
          0
          • S Offline
            S Offline
            samus8zero2x
            wrote on last edited by
            #5

            OK, the point is that I'm trying to animate core Qt widgets. Anything I can do manually in GL is kind of on the side.

            Let's say I have a scenario like this:
            MainWindow
            --VerticalLayout
            ----QScrollArea
            ------Screen Content
            ----MyKeyboardWidget
            ------QPushButtons

            I then animate the opening of the keyboard by changing the keyboard's height property using a QTimeLine event. Because of the vertical layout, this causes the scroll area height to be reduced as more of the keyboard is displayed. But in this case I have poor graphics update performance.

            If I have an alpha blended overlay or watermark over the whole MainWindow, I get significantly worse performance. I've also tried the similar in a QGraphicsView with and without inheriting QGLWidget with similar results.

            Can you guys think of a way to speed this up? Perhaps I need to try some trickery with off-screen drawing?

            1 Reply Last reply
            0
            • V Offline
              V Offline
              VitorAMJ
              wrote on last edited by
              #6

              Hey samus8zero2x,

              EDIT: I am sorry if I made you think that, my bad, but QGLWIdget is only for GL content, it does not help to subclass the widgets you are trying to use.

              I am probably not the best code optimizer, but I know some sources to recommend to you:
              I found this "link":http://www.slideshare.net/qtbynokia/optimizing-performance-in-qtbased-applications about some Qt optimizations.
              There is also some "videos":http://developer.qt.nokia.com/videos in the elearning main qtdev page.
              I saw somethings that might handy:"
              "Optimizing Performance in Qt-Based Applications (Qt 4.6)":http://developer.qt.nokia.com/videos/watch/optimizing_performance_in_qt_based_applications
              "Performance: Do Graphics the Right Way":http://developer.qt.nokia.com/videos/watch/performance_do_graphics_the_right_way
              "Qt Tips and Tricks":http://developer.qt.nokia.com/videos/watch/qt_tips_and_tricks
              "Accelerating Performance of Qt on TI’s Embedded Processors":http://developer.qt.nokia.com/videos/watch/accelerating_performance_of_qt_on_tis_embedded_processors

              Please let me know if you find something useful.
              Very best regards,
              VitorAMJ

              1 Reply Last reply
              0

              • Login

              • Login or register to search.
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • Users
              • Groups
              • Search
              • Get Qt Extensions
              • Unsolved