[OE] QT + eglfs backend


#1

Hello,

After having build my light OS (OE without X11 and Wayland) with QT opengl(es2) (Qt Base + QtEverywhereDemo) I try to start the QtDemo executable and I’m facing “EGL_EXT_device_base missing” error.
I have no clue about what could miss in my Yocto Build…
Does any one know about this opengl feature, I’m not sure where to look…

Thanks for any help,

Jérôme.


#2

i am not aware of anyone doing Qt5/EGLFS on DB410c right now, unfortunately. i used it a while ago on a different platform. Because DB410c uses mesa/gallium I would hope it should be fairly minimal work to get it up… when I used it , i remember we needed to have an instance of QEglFSHooks class for each platform/device. I don’t know how much this has changed, and for mesa (drm/gbm/kms) i suspect we could have a generic implementation for all platforms… I am not sure i will be able to look into that in the short term…


#3

Thanks @ndec,

I see. So I’m not sure where the modification need to be done :
Are they Qt side -> device conf missing (qtbase/mkspecs/devices/qeglfshooks_db410c.cpp, I found other devices implemented it like rpi/imx6 etc.) but that says that everything is ready freedreno/mesa side.

Are they board side -> enumeration is missing ( this is more a driver related problem)

If it is Qt side I guess that I should probably try to make a specific conf juste for my use case…
If it is more a driver problem I think I could’nt do much…

That says, it would mean that I have no solution to make QT work with openGL or accelerated graphic without X or Wayland, right?
So if you would have to advice what would be the solution in my case => go for Wayland?

Thanks for your time,

Jérôme.


#4

Did you manage to run the minimal image with QT with eglfs?
Thanks


#5

I was able to build the image with QT5.8 (need QT > 5.7 for the Qt compositor) + wayland (so with eglfs) but I haven’t succeed to run an application (I missed the tutorials to set the right env variable to launch Qt compositor).

Anyway I ran Qt5_CinematicExperience on weston with platform eglfs also started videotestsrc from gstreamer1.0.

Jérôme.


#6

Hi,

I get the same “EGL_EXT_device_base missing” and I guess it could be a missing library:

On DB410c I need a minimal eglfs system with Qt5.8 and without X11/wayland.
I started with the rpb-qt5-image from https://github.com/ndechesne/qcom-oe-manifest (Qt5.7)

Build Configuration:
BB_VERSION = "1.32.0"
BUILD_SYS = "x86_64-linux"
NATIVELSBSTRING = "Debian-8.7"
TARGET_SYS = "aarch64-linaro-linux"
MACHINE = "dragonboard-410c"
DISTRO = "rpb-eglfs"
DISTRO_VERSION = "2.0+linaro"
TUNE_FEATURES = "aarch64"
TARGET_FPU = ""
meta-rpb = "HEAD:5d0c55739d62f964bc1744720e4ccc002ec96cbc"
meta-oe
meta-gnome
meta-xfce
meta-initramfs
meta-multimedia
meta-networking
meta-webserver
meta-ruby
meta-filesystems
meta-perl
meta-python = "HEAD:1efa5d623bc64659b57389e50be2568b1355d5f7"
meta-browser = "HEAD:1b4f1e588b1901d8919ea2362b0fcba37c5023e0"
meta-qt5 = "HEAD:3601fd2c5306ac6d5d0d536e0be8cbb90da9b4c1"
meta-virtualization = "HEAD:5cacf8632da2c20dc994c3b33608f0d3cea9df13"
meta-96boards = "HEAD:1bf6e87d2650c9c640e51a007ca8dfdc6b592692"
meta-qcom = "HEAD:5cedef7037a574eac262d69ba6c9f3c617e458b0"
meta-st-cannes2 = "HEAD:a0e5515a0ea343bfd1edbf998c81f40ad8fb4677"
meta-ti = "HEAD:5a8ca1452fbcbea3d288ed8dca82c395da30d48d"
meta-linaro
meta-linaro-toolchain
meta-aarch64
meta-optee = "HEAD:39a1661ba3258b657759bbd98321b2d6b0ffd2ec"
meta-backports = "HEAD:59a3670f1d034cd8a60fcbe12620ac0bff206a28"
meta = “HEAD:55c835c73cc41b6fc809c941c295d62a612e49e0”

This configuration works as expected (test with Qt5_CinematicExperience -platform eglfs).
In the next step I compiled this image with Qt5.8, different meta-qt5 commits, at last the commit

meta-qt5 = “jansa/master:18603cd3ac949b560e60c66b029e2e23f4cc2950”

if I start the demo I get always:

Reference-Platform-Build-EGLFS 2.0+linaro dragonboard-410c ttyMSM0

dragonboard-410c login: root
root@dragonboard-410c:~# Qt5_CinematicExperience -platform eglfs
EGL_EXT_device_base missing
Aborted (core dumped)
root@dragonboard-410c:~#

I guess it could be a missing library
Qt5.7:
ls /usr/lib64/qt5/plugins/egldeviceintegrations
libqeglfs-kms-egldevice-integration.so libqeglfs-kms-integration.so

Qt5.8:
ls /usr/lib64/qt5/plugins/egldeviceintegrations
libqeglfs-kms-egldevice-integration.so

If I remove this libqeglfs-kms-integration.so in the Qt5.7 image I get the “EGL_EXT_device_base missing”.
Is there a OE-way to to get this library in rpb-qt5-image?

Thanks in advance
Andreas


#7

hi,

recently @ldts did some work to enable Qt5/EGLFS on the DB410c, this work was merged in the meta-rpb distro layer, and is available here

The OE RPB (using meta-rpb) has become our default ‘reference platform’ for OE builds nowadays, i recommend to have a look at it

It should be possible to bring in the meta-rpb layer into your build based on the qcom-oe-manifest if you really want though.

Hopefully this will work for you, otherwise we will try to get it fixed, but it’s simpler if you use the recent work instead.

Note: I am aware that the current master branch is broken for db410c when build OE/core + meta-qcom , it will be fixed next week (was travelling this week). A workaround is to remove the alsa-lib_%.bbappend in meta-qcom.


#8

thank you @ndec

I have tested the 96boards/oe-rpb-manifest with rpb-eglfs with the same result.
Qt5.7 works as expected, Qt5.8 fails with “EGL_EXT_device_base missing”

If this is a meta-qt5 problem, where should I report this?


#9

found it

From 4eab644438a19794f0782422b9fc0056cdf1aa56 Mon Sep 17 00:00:00 2001
From: Andreas Wellner aw@amedtec.de
Date: Mon, 13 Mar 2017 15:53:21 +0100
Subject: [PATCH] eglfs and Qt5.8: add gbm to PACKAGECONFIG

bugfix for "EGL_EXT_device_base missing"
gbm is needed for the creation of the libqeglfs-kms-integration.so plugin

conf/distro/rpb-eglfs.conf | 2 ±
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/conf/distro/rpb-eglfs.conf b/conf/distro/rpb-eglfs.conf
index fc1038f…1254173 100644
— a/conf/distro/rpb-eglfs.conf
+++ b/conf/distro/rpb-eglfs.conf
@@ -2,6 +2,6 @@ require conf/distro/include/rpb.inc

DISTRO_NAME = “Reference-Platform-Build-EGLFS”

-PACKAGECONFIG_append_pn-qtbase = " eglfs kms"
+PACKAGECONFIG_append_pn-qtbase = " eglfs kms gbm"

DISTRO_FEATURES_remove = “wayland x11”

2.12.0

this patch is not tested against Qt versions <5.8!

thanks again
Andreas


#10

ah, nice. thanks!

any chance you can put your patch on github directly? e.g. here https://github.com/96boards/meta-rpb, if you don’t, I can take it from here… but it’s easier (and better) as a direct pull request.

I don’t think that adding gbm would hurt on earlier Qt5…


#11

np, tomorrow in the office