Qt5.0 Graphics acceleration improvement
-
Question: Will enabling hardware graphics acceleration (requires >=Qt5.0) result in a worthwhile visual performance improvement in rendering HTML-based UIs?
Current configuration:
- Qt4.8.5
** Application is running in a very basic kiosk-browser configuration. The application points to a destination URL and serves the page(s) to the user.
** Framebuffer = 800x600px - Gumstix - Overo Firestorm-P module (Cortex-A8)
Proposed configuration:
- Qt5.0(+)
** Application to function the same. - Same Gumstix module
Statement: The current configuration demonstrates a visual latency when loading particular content (e.g. images) and with front-end page/pop-up/button transitions (e.g. with jQuery UIs). Depending on the functionality in question latency is 2(+) seconds before visual completion of the task. With the latency, the end user can sometimes see the transition incrementally occur from start to finish. The hardware graphics acceleration is non-functional with the current configuration. The end goal is to provide the user with a seamless experience, right now it's clunky.
Any insight on a best path forward, whether this is a waste of time or the like would be greatly appreciated. Hopefully this post was alright -- First post on any forum ever.
- Qt4.8.5
-
Hi and welcome to devnet,
Can you share more details about what you are using in Qt for your application ?
-
Hello @SGaist and thank you for the reply.
So the application is using the following functionality:- QWebSettings - modify caching
- QWebInspector - prepped, but not actively used
- QWebFrame - single frame architecture
- QTimer - page load timeout
- QWebPage - obvious reasons, need it for the ui window
- QMainWindow - obvious reasons, need it for the ui window
- QWidget - obvious reasons, need it for the ui window
Very basic Qt application; prepares a window in kiosk mode, hides the cursor, sets up a thread to monitor screen "click" coordinates, and displays the window to the user while attempting to connect with the provided destination URL.
It should be noted that lightweight, vanilla HTML/JavaScript/CSS user interfaces have been created for testing purposes and the Qt application can render the information without issue. Adding in the layers of JavaScript frameworks appears to be when the UI operation is less than desirable.
Hope this helps.
-
One thing I would first do if possible is to at least go with the latest of Qt 4 which is 4.8.7 but take into account that Qt 4 has reached EOL.
As for the performance, you should indeed check with Qt 5, especially the QtWebKit reboot from @Konstantin-Tokarev.
-
@SGaist would you mind clarifying your point about the "...QtWebKit reboot..."? Not sure I understand the lingo.
Hello @Konstantin-Tokarev - Generally speaking what visual performance improves might be gained by moving to Qt5.0+? I understand this is quite the loaded question on several fronts.
-
A new more up to update version of QtWebkit.
[edit: fixed auto-correct strangeness SGaist]
-
@danielheise said in Qt5.0 Graphics acceleration improvement:
Generally speaking what visual performance improves might be gained by moving to Qt5.0+? I understand this is quite the loaded question on several fronts.
I assume that you have widgets-based kiosk application where almost everything is done by Q(Graphics)WebView. In this case, moving to Qt 5.x may be very important for you because it allows you to use newer WebKit.
- If your application allows browsing untrusted content, e.g. arbitrary web sites, using older WebKit may be dangerous because of unfixed security vulnerabilities
- In addition to security matters, QtWebKit 5.212 is much more compatible with moder Web content than older versions
- Even if you have control over the content that you disaply in your "browser", using newer WebKit allows you to use modern Web technologies like ES6, new HTML and CSS features etc.
Now about "hardware graphics acceleration". It's possible with both Qt 4 and Qt 5. In Qt 4, hardware accelerated graphics is possible with DirectFB or platform-specific QWS plugins. You also can use OpenGL, in this case you need to use QGraphicsWebView with QGLWidget viewport (in Qt 5 there is newer QOpenGLWidget).