[yocto] [meta-qt5][meta-raspberrypi]: Qt5 with EGL support for the Raspberry through linux-oe-g++

Julien Gueytat contact at jgueytat.fr
Sun Apr 24 10:57:23 PDT 2016


Hi,

you will find here two patches to get EGL enabled on RaspberryPi without 
any hack in meta-*bsp layers.
Please note that it is just a proposition of correction as I'm not aware 
of the best correction you would like to implement.

The result of those two patches on top of master for meta-raspberry and 
krogoth for meta-qt5 (jethro would have been the same correction) gives:
   QPA backends:
     DirectFB ............. no
     EGLFS ................ yes
       EGLFS i.MX6 ........ no
       EGLFS i.MX6 Wayland. no
       EGLFS EGLDevice .... no
       EGLFS GBM .......... no
       EGLFS Mali ......... no
       EGLFS Raspberry Pi . yes
       EGLFS X11 .......... no

As long as I understand there use to be a lot of hacks in either BSP 
layers or mkspecs files for Qt.
With proper pkg_config files we might have a simpler solution. Right now 
I'm quite sure that the master branch from Qt has some troubles to 
handle pkg-config stuff AND mkspecs at the same time. There is a bug 
report opened on that subject.

The patch on meta-qt5 is to "force" layers to implement pkg-config 
files. (I just did it for EGL...) As I said it's not a full rewrite of 
the configure file at all.
The patch on the Raspberry is just to add one library missing to get the 
EGLFS Raspberry Pi test passing (the EGL test one was already working 
with this meta-qt5 patch)

Best Regards,


Le 21/04/2016 19:10, Andrei Gherzan a écrit :
> Hi Julien,
>
> On Thu, Apr 21, 2016 at 10:15:23AM +0200, Julien Gueytat wrote:
>> Just to keep you informed that a bug report has been opened to Qt:
>> https://bugreports.qt.io/browse/QTBUG-52739
>>
>> We might save some patches in layers by solving this,
>> Thanks for helping,
>>
> Great Julien. Here is a hint - would this help your problem?
> https://lists.yoctoproject.org/pipermail/yocto/2016-February/028277.html
>
>> Le 20/04/2016 01:46, Julien Gueytat a écrit :
>>> Hi again guys,
>>>
>>> after more investigations:
>>>
>>> I found out that the default value -lEGL comes from
>>> ./mkspecs/common/linux.conf which is included in
>>> ./mkspecs/linux-oe-g++/qmake.conf
>>>
>>> linux-oe-g++ being the only generic mkspecs that should be used in Yocto
>>>
>>> So! At the time the configuration enters egl.pro the content of the
>>> variables LIBS and QMAKE_EGL_LIBS are still a bit weird for me :
>>>
>>> 1- LIBS already has the content of the QMAKE_EGL_LIBS content from the
>>> result of the pkg-config command.
>>> 2- QMAKE_EGL_LIBS has the content of the default value found in
>>> ./mkspecs/common/linux.conf
>>>
>>> There are two options to have it properly working:
>>> - First and easy option : remove the QMAKE_EGL_LIBS default variable in
>>> ./mkspecs/linux-oe-g++/qmake.conf since the good libs seems to already
>>> been present in the LIBS variable.
>>> - Second option : understand why the LIBS variable is already properly
>>> set and why the QMAKE_EGL_LIBS properly computed in the configure and
>>> present .qmake.vars is not used. (I would say that the device spec
>>> overrides the one from qmake spec... I did not dig further yet.)
>>>
>>> Anyway I'm pretty sure the trouble comes from meta-qt5 side now. I'm
>>> pretty sure meta-raspberrypi maintainers can confirm that their master
>>> branch handles pkg-config stuff now.
>>>
>>> Thanks advance for having a look on this guys,
>>> Best Regards
>>>
>>>
>>> Le 19/04/2016 10:46, Julien Gueytat a écrit :
>>>> Hi,
>>>>
>>>> I still can't figure out the patch to apply in meta-qt5 to get EGL
>>>> support with the Raspberry.
>>>>
>>>> The test to check EGL does not pass and fails with the following command:
>>>>
>>>> arm-poky-linux-gnueabi-g++  -march=armv7-a -marm -mthumb-interwork
>>>> -mfloat-abi=hard -mfpu=neon-vfpv4 -mtune=cortex-a7 --sysroot=/home/jgueytat/projects/LightPixels/poky/build/tmp/sysroots/lightpixels
>>>> -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-O1 -o egl egl.o
>>>> -lGLESv2 -lbcm_host -lvchostif -lvcos -lvchiq_arm -pthread -lEGL
>>>>
>>>>
>>>> Here is the content of the file egl.pro:
>>>>
>>>> $ cat egl.pro
>>>> SOURCES = egl.cpp
>>>>
>>>> for(p, QMAKE_LIBDIR_EGL) {
>>>>      exists($$p):LIBS += -L$$p
>>>> }
>>>>
>>>> message("In egl.pro - 1: QMAKE_LIBS_EGL = $$QMAKE_LIBS_EGL")
>>>> message("In egl.pro - 1: LIBS = $$LIBS")
>>>>
>>>> !isEmpty(QMAKE_INCDIR_EGL): INCLUDEPATH += $$QMAKE_INCDIR_EGL
>>>> !isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL
>>>>
>>>> message("In egl.pro - 2: QMAKE_LIBS_EGL = $$QMAKE_LIBS_EGL")
>>>> message("In egl.pro - 2: LIBS = $$LIBS")
>>>>
>>>> CONFIG -= qt
>>>>
>>>> In the main ./configure file of qtbase:
>>>>
>>>> | In configure #1: QMAKE_LIBS_EGL =
>>>> | In configure #2: QMAKE_LIBS_EGL = -lEGL -lGLESv2 -lbcm_host
>>>> -lvchostif -lbcm_host -lvcos -lvchiq_arm -pthread
>>>>
>>>> The variable QMAKE_LIBS_EGL is set properly.
>>>>
>>>>
>>>> In the ./config.tests/qpa/egl/egl.pro file:
>>>>
>>>> | Project MESSAGE: In egl.pro - 1: QMAKE_LIBS_EGL = -lEGL
>>>> | Project MESSAGE: In egl.pro - 1: LIBS = -lEGL -lGLESv2 -lbcm_host
>>>> -lvchostif -lvcos -lvchiq_arm -pthread
>>>> | Project MESSAGE: In egl.pro - 2: QMAKE_LIBS_EGL = -lEGL
>>>> | Project MESSAGE: In egl.pro - 2: LIBS = -lEGL -lGLESv2 -lbcm_host
>>>> -lvchostif -lvcos -lvchiq_arm -pthread -lEGL
>>>>
>>>>
>>>> *What I see is that:*
>>>> In the configure file the variable QMAKE_LIBS_EGL is properly set
>>>> through pkg-config.
>>>> In the egl.pro file... The variable LIBS gets the content of
>>>> QMAKE_LIBS_EGL and the variable QMAKE_LIBS_EGL gets back to its
>>>> default -lEGL.
>>>>
>>>> In the end with have -lGLESv2 before -lEGL and this does not link.
>>>>
>>>> I checked also the content of .qmake.vars:
>>>> grep QMAKE_LIBS_EGL .qmake.vars
>>>> QMAKE_LIBS_EGL = -lEGL -lGLESv2 -lbcm_host -lvchostif -lbcm_host
>>>> -lvcos -lvchiq_arm -pthread
>>>>
>>>>
>>>> The command QMakeVar set QMAKE_LIBS_EGL "$QMAKE_LIBS_EGL" seems to
>>>> have his job done too late...
>>>>
>>>> If someone has an idea to get the proper correction done...
>>>>
>>>> Best Regards,
>>>> Julien
>>>>
>>>>
>>>>
>> --
>> _______________________________________________
>> yocto mailing list
>> yocto at yoctoproject.org
>> https://lists.yoctoproject.org/listinfo/yocto
>
> --
> Andrei Gherzan

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-lvchostif-for-the-EGLFS-RaspberryPi-test-from-Qt.patch
Type: text/x-patch
Size: 852 bytes
Desc: not available
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20160424/f843a2aa/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Use-completely-PKG_CONFIG-which-set-the-variables-li.patch
Type: text/x-patch
Size: 3558 bytes
Desc: not available
URL: <http://lists.yoctoproject.org/pipermail/yocto/attachments/20160424/f843a2aa/attachment-0001.bin>


More information about the yocto mailing list