Multiple Screen Outputs using Boot to Qt

Hello community,

Following Boot to Qt for Embedded Linux and Building Your Own Embedded Linux Image
I created the image for b2qt-automotive:

bitbake b2qt-automotive-qt5-image

I modified my local.conf to work only with EGLFS, adding the line:

DISTRO_FEATURES_remove = "X11 wayland"

I also modified my device tree to work with LVDS and according to i.MX6 Multiple Outputs I set my u-boot vidargs to work with HDMI and LVDS

setenv vidargs 'video=mxcfb0:dev=ldb video=mxcfb1:dev=hdmi,1280x1024M@60,if=RGB24 video=mxcfb2:off video=mxcfb3:off fbmem=32M'

Finally the result is that I can run the Qt Neptune demo or other Qt app in one screen or the other, even both at the same time, setting QT_QPA_EGLFS_FB to the correct fb (/dev/fb0 for LVDS and /dev/fb2 for HDMI) before executing the app, or just random pixels with cat /dev/urandom > /dev/fb2

so far so good, right?

But now I’d like to modify the Neptune configuration to work something like this Neptune 3 UI - Configuring Screens on Embedded Linux

But when I execute qtdiag I get:

Screens: 1, High DPI scaling: inactive
# 0 "" Depth: 16 Primary: yes
  Manufacturer:
  Model:
  Serial number:
  Geometry: 1920x720+0+0 Available: 1920x720+0+0
  Physical size: 487.68x182.88 mm  Refresh: 62 Hz Power state: 0
  Physical DPI: 100,100 Logical DPI: 100,100 Subpixel_None
  DevicePixelRatio: 1 Pixel density: 1
  Primary orientation: 2 Orientation: 2 Native orientation: 0 OrientationUpdateMask: 0

Or in my Qt App using:

QList<QScreen *> screens = QGuiApplication::screens();
printf("Screens = %d\n", screens.count());

I only get 1 as screens count

It looks like I am missing to set up a configuration for the Qt Stack to detect both screens but I don’t know.

Has somebody has had any experience working with multiple screens in Boot to Qt?

Thanks!

dmesg.txt

hi @q325mg

EGLFS is working only with one screen on iMX6. This is a limitation of Qt combined with vivante Driver. You might use the Etnaviv driver, however we don’t have any experience with this driver.

Best regards,
Jaski

Hello everyone
I have the same problem.
Please comment if you know how to solve it.

Hi @LEEBAK

I think it is now possible to use Qt with multiple displays even with EGLFS:
https://doc.qt.io/qt-5/embedded-linux.html
However, you will need to use the Etnaviv driver because I think the proprietary driver still doesn’t support this feature. However, Etnaviv may anyway be a good idea to use. I did some tests with it and it works well. You can enable the etnaviv (mainline kernel/gpu driver) by setting the following in your local.conf:

MACHINEOVERRIDES = ":use-mainline-bsp"

Regards,
Stefan