Yocto Scarthgap build of GStreamer QML sink does not run

Hello!

I’m trying to build gstreamer1.0-plugins-good, specifically for the qml6glsink plugin, as part of the host toolchain in Yocto.

The version for the recipe is 1.22.12 from openembedded-core scarthgap ( OpenEmbedded Layer Index - gstreamer1.0-plugins-good ), and we use the meta-qt6 layer at tags/v6.8.3 ( yocto/meta-qt6.git - Yocto layer for Qt6 commit 00c3bd954341a2a755fdee6b978af952f51793e7).

To get gstreamer1.0 and gstreamer1.0-plugins-good to built for the host sdk I’ve added the qt6 PACKAGECONFIG from a newer version of gstreamer

QT56WAYLANDDEPENDS = "${@bb.utils.contains("DISTRO_FEATURES", "wayland", "qtwayland", "", d)}"
PACKAGECONFIG[qt6] = "-Dqt6=enabled,-Dqt6=disabled,qtbase qtdeclarative qtbase-native qttools-native ${QT56WAYLANDDEPENDS},,,qt5"

…and also added the missing dependencies by creating .bbappend files for the missing them that do BBCLASSEXTEND += " native nativesdk ".

I also had to modify the qttools recipe to build with opengl

PACKAGECONFIG:remove:class-nativesdk = " no-opengl "
PACKAGECONFIG:append:class-nativesdk = " gl eglfs "

This allowed the libraries to build and link and be installed as part of the host toolchain, however when actually running the qml sink example code I’ve hit some errors:

  • libEGL warning: MESA-LOADER: failed to open radeonsi: /path/to/our/x86_64-sysroot/usr/lib/dri/radeonsi_dri.so: cannot open shared object file: No such file or directory (search paths /path/to/our/x86_64-sysroot/usr/lib/dri, suffix _dri)
    
    libEGL warning: MESA-LOADER: failed to open zink: /path/to/our/x86_64-sysroot/usr/lib/dri/zink_dri.so: cannot open shared object file: No such file or directory (search paths /path/to/our/x86_64-sysroot/usr/lib/dri, suffix _dri)
    

    I made sure the library load order is:

    • official host QT libraries (installed via qt online installer, not yocto)
    • sysroot libraries (for the gstreamer libs and dependencies)
    • default search paths

    It seems the code is loading a software renderer as a fallback since it cannot find the radeon or zink(?) drivers.

    The result is a black screen with the white overlay and no test pattern.

  • Then I added LIBGL_DRIVERS_PATH=/usr/lib64/dri to the environment, which is where the graphics drivers are located on my Fedora 41 install. I also kept the same library load order.
    This prints the following error
libEGL fatal: did not find extension DRI_Mesa version 1

My question is:

Has anyone built gstreamer 1.22.12 in Yocto for the host toolchain and got an example of it running, and if so how?

Thank you!

Did you get this to work, im trying to do the same?

Unfortunately no. We worked around it by requiring in CMakeLists.txt that on host, gstreamer and its plugins need to be installed system-wide, and simply skipping the example entirely on Windows.