Install Qt5 with EGL for an Embedded System, not GLX.



  • Hi,
    I am building Qt5 with an OpenEmbedded (https://github.com/meta-qt5/meta-qt5) build environment for a TI am335x armv7 board using a gcc linaro v4.9 toolchain.

    I am able to build, compile, and install every Qt5 package I need... from qtbase and qtdeclarative to qtwebkit. However, here recently, when I try to run any QtQML app, I receive the following error message on my target hardware:

    • gbm_create_device: invalid fd: -1
      libEGL warning: GLX: failed to load GLX
      Could not initialize egl display

    I do not need GLX because I do not need a initialize OpenGL to an X Window System. I want to use EGL to initialize OpenGL, OpenGL ES1, and OpenGL ES2 to a Window System.
    How do I verify that my Qt packages are configuring, compiling, and installing with EGL and not GLX?

    Here is my configuration statement. As you can see, I have set to configure with items like opengl, eglfs, no-x, etc...

    • -opensource -confirm-license
      -sysroot ${STAGING_DIR_TARGET}
      -no-gcc-sysroot
      -prefix ${OE_QMAKE_PATH_PREFIX}
      -bindir ${OE_QMAKE_PATH_BINS}
      -libdir ${OE_QMAKE_PATH_LIBS}
      -datadir ${OE_QMAKE_PATH_DATA}
      -sysconfdir ${OE_QMAKE_PATH_SETTINGS}
      -docdir ${OE_QMAKE_PATH_DOCS}
      -headerdir ${OE_QMAKE_PATH_HEADERS}
      -archdatadir ${OE_QMAKE_PATH_ARCHDATA}
      -libexecdir ${OE_QMAKE_PATH_LIBEXECS}
      -plugindir ${OE_QMAKE_PATH_PLUGINS}
      -importdir ${OE_QMAKE_PATH_IMPORTS}
      -qmldir ${OE_QMAKE_PATH_QML}
      -translationdir ${OE_QMAKE_PATH_TRANSLATIONS}
      -testsdir ${OE_QMAKE_PATH_TESTS}
      -examplesdir ${OE_QMAKE_PATH_EXAMPLES}
      -hostbindir ${OE_QMAKE_PATH_HOST_BINS}
      -hostdatadir ${OE_QMAKE_PATH_HOST_DATA}
      -external-hostbindir ${OE_QMAKE_PATH_EXTERNAL_HOST_BINS}
      -platform ${OE_QMAKESPEC}
      -xplatform linux-oe-g++
      -qpa eglfs
      -no-xcursor
      -no-xinerama
      -no-xinput
      -no-xinput2
      -no-xfixes
      -no-xrandr
      -no-xrender
      -no-xshape
      -no-xsync
      -no-xvideo
      -eglfs
      -no-kms
      -opengl es2
      -shared \
      -silent
      -no-pch
      -no-rpath
      -pkg-config
      -no-xcb
      -no-sql-db2
      -no-mtdev \
      -no-gtkstyle
      -nomake tests
      -system-libjpeg
      -openssl-linked \
      -nomake examples
      -no-xfixes
      -no-sql-mysql
      -make tools
      -qt-pcre
      -no-iconv
      -no-xkb
      -no-xkbcommon
      -fontconfig
      -no-kms
      -sql-sqlite
      -system-libpng
      -tslib
      -icu
      -no-directfb
      -no-glib
      -freetype
      -no-sql-oci
      -no-xinerama
      -evdev
      -no-sql-sqlite2
      -accessibility
      -widgets
      -no-xrandr
      -no-linuxfb
      -libudev
      -no-xcursor
      -no-sql-psql
      -make libs
      -no-nis
      -no-openvg
      -no-xvideo
      -no-xsync
      -no-sql-tds
      -no-xshape
      -no-dbus
      -system-zlib
      -no-pulseaudio
      -no-xrender
      -no-mitshm
      -no-sm
      -no-xinput
      -no-sql-ibase
      -no-xinput2
      -no-alsa
      -no-sql-odbc
      -release

    Is there another Qt package for Qt command where I need to set to make sure the window systems & OpenGL for Qt are using EGL and -no-glx?

    Because I am using a TI hardware, I am using omap3 pkg to provide the egl, gles1, gles2 libs; the mesa pkg for gl libraries; and the PowerVR SGX series for gpu drivers.

    Maybe a more general question will at least point me in the right direction... What is the different between libEGL and EGL? I understood that EGL and GLX are the initialisms for window systems, but the error message says libEGL is trying to use GLX which makes me think there is a different between libEGL and EGL.

    Any help, suggestions, or general comments will be appreciated.
    Thanks.