Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Running Qt on embedded target without a GPU



  • We are building our Qt app for the Xilinx ZCU106. This has a Mali 400 MP2 GPU. We can build Qt for this target and can run our app using the EGLFS Mali QPA backend when we have the GPU enabled.

    However, we need to disable the GPU for our use case. We are looking for the right QPA backend to use for this case. Also, we would like to avoid the extra overhead from X11 as our app will be full screen and we have no need for a Windowing system.

    Based on this, we should use EGLFS if we have a GPU:

    EGLFS is the recommended plugin for modern Embedded Linux devices that include a GPU.

    However, what is the recommended plugin for devices without a GPU?

    Is the LinuxFB the only existing QPA backend that supports platforms without a GPU?


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    That's the one yes.
    What other plugin do you have in mind ?



  • We also looked at directb , but I could not find any recent documentation on it.

    We saw this deprecation message with usinglinuxfb:

    However, since fbdev is being deprecated in the Linux kernel, the DRM dumb buffer support is also available, as of Qt 5.9.

    This made it sound like fbdev may not be the right solution for the long haul.

    The Xilinx embedded Linux image (i.e. PetaLinux) leverages Yocto for it's builds. The way we have it configured, it is also using DRM/KMS to define it's display pipeline. As far as I can tell, we also get a traditional Linux frame buffer that we can write to. Though, we have not confirmed this. We're looking for a way to tell our Qt app to use a display defined by DRM/KMS instead of a traditional Linux frame buffer. Also, there is a use case where we want our app to appear in multiple displays.

    It looks like we can tell our Qt app which display to use if we use the eglfs-kms-backen. Although, my understanding is that we would need a EGL and a GPU to make this work. I may be misunderstanding DRM/KMS though and a GPU is required in the DRM/KMS subsystem.

    More directly:
    Is there any way to define a custom DRM/KMS configuration when not using a GPU?

    Also, this is our configure summary when building Qt for this device:

     QPA backends:
       DirectFB ............................... no
       EGLFS .................................. yes
       EGLFS details:
         EGLFS OpenWFD ........................ no
         EGLFS i.Mx6 .......................... no
         EGLFS i.Mx6 Wayland .................. no
         EGLFS RCAR ........................... no
         EGLFS EGLDevice ...................... no
         EGLFS GBM ............................ no
         EGLFS VSP2 ........................... no
         EGLFS Mali ........................... yes
         EGLFS Raspberry Pi ................... no
         EGLFS X11 ............................ no
       LinuxFB ................................ yes
       VNC .................................... yes
    

    We haven't tried the linuxfb plugin yet, but we plan to in the near future. Based on my understanding it should satisfy most of our needs.


  • Lifetime Qt Champion

    You might be interested by this article.


Log in to reply