Laszlo Agocs

Graphics improvements for Embedded Linux in Qt 5.7

Published Tuesday June 7th, 2016
6 Comments on Graphics improvements for Embedded Linux in Qt 5.7
Posted in Dev Loop, Embedded, Graphics, News, OpenGL, QPA, Qt, Wayland

As is the tradition around Qt releases, it is now time to take a look at what is new on the Embedded Linux graphics front in Qt 5.7.

NVIDIA DRIVE CX

The linux-drive-cx-g++ device spec introduces support for the NVIDIA DRIVE CX platform. This is especially interesting for the automotive world and is one of the foundations of Qt’s automotive offering. Also, DRIVE CX is in fact the first fully supported embedded system with a 64-bit ARM architecture (AArch64). When it comes to graphics, the core enablers for the eglfs and wayland platform plugins were mostly in place for Qt 5.6 since the stack is very similar to what we had on the previous generation Jetson Pro systems. There are nonetheless a number of notable improvements in Qt 5.7:

  • The JIT is now enabled in the QML JavaScript engine for 64-bit ARM platforms. In previous releases this was disabled due to not having had received sufficient testing. Note that the JIT continues to stay disabled on mobile platforms like iOS due to app store requirements.
  • eglfs, the platform plugin to run OpenGL applications without a windowing system, has improved its backend that provides support for setting up EGL and OpenGL via DRM and the EGLDevice/EGLOutput/EGLStream extensions. The code for handling outputs is now unified with the GBM-based DRM backend (that is typically used on platforms using Mesa), which means that multiple screens are now supported on the NVIDIA systems as well. See the documentation for embedded for more information.
  • When it comes to creating systems with multiple GUI processes and a dedicated compositor application based on Wayland, QtWayland improves a lot. In Qt 5.6 the NVIDIA-specific support was limited to C++-based compositors and the old, unofficial compositor API. This limitation is removed in 5.7, introducing the possibility of creating compositor applications with QML and Qt Quick using the modern, more powerful compositor API which is provided as a technology preview in Qt 5.7.

    One notable limitation for Qt Quick-based compositors (with no serious consequences in practice) on the DRIVE CX is the requirement for using a single-threaded render loop. The default threaded one is fine for applications, but the compositor process requires to be launched with the environment variable QSG_RENDER_LOOP=basic (or windows) for the time being. This may be lifted in future releases.

  • If Qt-based compositors are not desired, Qt applications continue to function well as clients to other compositors, namely the patched Weston version that comes with NVIDIA’s software stack.

NXP i.MX7

Qt is not just for the high-end, though. Qt 5.7 introduces a linux-imx7-g++ device spec as well, which, as the name suggests, targets systems built on the NXP i.MX7. This features no GPU at the moment, which would have been a deal breaker for Qt Quick in the past. This is not the case anymore.

With the Qt Quick 2D Renderer such systems can too use most of the features and tools Qt Quick offers for application development. See our earlier post for an overview. Previously commercial-only, Qt 5.7 makes the 2D Renderer available to everyone under a dual GPLv3/commercial license. What is more, development is underway to further improve performance and integrate it more closely with Qt Quick in future releases.

That’s it for now, enjoy Qt 5.7!

Do you like this? Share it
Share on LinkedInGoogle+Share on FacebookTweet about this on Twitter

Posted in Dev Loop, Embedded, Graphics, News, OpenGL, QPA, Qt, Wayland

6 comments

seaman says:

good news

Sys says:

> Qt 5.7 makes the 2D Renderer
> available to everyone under a dual
> GPLv3/commercial license. What is
> more, development is underway to
> further improve performance and
> integrate it more closely with Qt
> Quick in future releases.

Nice!

Jake Petroules Jake Petroules says:

> Also, DRIVE CX is in fact the first fully supported embedded system with a 64-bit ARM architecture (AArch64).

Not the first if you consider iOS an “embedded system”. ๐Ÿ˜‰

Laszlo Agocs Laszlo Agocs says:

In general Qt does not consider iOS an “embedded” system. It counts as “mobile” and is a target platform for application development, not device creation.

Dan says:

Hello,

my question is about another article (https://blog.qt.io/blog/2015/05/11/integrating-custom-opengl-rendering-with-qt-quick-via-qquickframebufferobject/) but the comments are closed there, so… I had no better idea for now.

Is it possible to force the recreation of the FBO when you want? Except for the resize and screen properties change?

Laszlo Agocs Laszlo Agocs says:

You could try using http://doc.qt.io/qt-5/qquickframebufferobject-renderer.html#invalidateFramebufferObject in synchronize(). This should then lead to a new call to createFramebufferObject().

Commenting closed.

Get started today with Qt Download now