Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Could not initialize egl display on Odroid board
QtWS25 Last Chance

Could not initialize egl display on Odroid board

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
10 Posts 2 Posters 5.4k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ccptleuC Offline
    ccptleuC Offline
    ccptleu
    wrote on last edited by ccptleu
    #1

    Hi,

    I've cross compiled Qt 5.7.0 for my Odroid board running linux 16.04 LTS but when i run my application, i can only use the xcb plugin option. The problem with xcb is that i'm seeing image flickering/tearing when displaying images on screen. I've read that for embedded boards, eglfs option is better and so i'm trying to see if using the eglfs plugin may help.

    I've configured mkspecs qmake.conf file like this:

    MAKEFILE_GENERATOR = UNIX
    CONFIG += incremental
    QMAKE_INCREMENTAL_STYLE = sublib

    include(../common/linux.conf)
    include(../common/gcc-base-unix.conf)
    include(../common/g++-unix.conf)

    QMAKE_INCDIR_EGL = ../usr/include/EGL
    QMAKE_INCDIR_OPENGL_ES2 = ../usr/include/GLES2
    QMAKE_LIBDIR_OPENGL_ES2 = ../usr/lib/arm-linux-gnueabi/

    QMAKE_LIBS_EGL += -lEGL
    QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lEGL
    load(qt_config)

    Configured Qt with the following options:

    ../qt-5.7.0/qtbase/configure -prefix /opt/Qt5.7.0 -opensource -confirm-license -opengl es2 -eglfs -qt-xcb -no-icu -zlib -libjpeg -libpng -nomake examples -nomake tests

    The config summary looks like this:

    OpenGL / OpenVG:
    EGL .................. yes
    OpenGL ............... yes (OpenGL ES 2.0+)
    OpenVG ............... no
    PCRE ................... system
    pkg-config ............. yes
    PulseAudio ............. yes
    QPA backends:
    DirectFB ............. no
    EGLFS ................ yes
    EGLFS i.MX6 ........ no
    EGLFS i.MX6 Wayland. no
    EGLFS EGLDevice .... no
    EGLFS GBM .......... yes
    EGLFS Mali ......... no
    EGLFS Raspberry Pi . no
    EGLFS X11 .......... yes
    LinuxFB .............. yes
    Mir client............ no
    XCB .................. yes (bundled copy)
    EGL on X ........... yes
    GLX ................ yes
    MIT-SHM ............ yes
    Xcb-Xlib ........... yes
    Xcursor ............ yes (loaded at runtime)
    Xfixes ............. yes (loaded at runtime)
    Xi2 ................ yes
    Xrandr ............. yes (loaded at runtime)
    Xrender ............ yes
    XKB ................ yes
    XShape ............. yes
    XSync .............. yes
    Session management ..... yes
    SQL drivers:
    DB2 .................. no
    InterBase ............ no
    MySQL ................ yes (plugin)
    OCI .................. no
    ODBC ................. yes (plugin)
    PostgreSQL ........... yes (plugin)
    SQLite 2 ............. no
    SQLite ............... yes (plugin, using bundled copy)
    TDS .................. yes (plugin)
    tslib .................. no
    udev ................... yes
    xkbcommon-x11........... yes (system library)
    xkbcommon-evdev......... yes
    zlib ................... yes (bundled copy)

    The issue i'm running into is that when i'm running my application, i get the following error message:

    Debug: (null) ((null):0, Got keys from plugin meta data ("xcb"))
    Debug: (null) ((null):0, loaded library "/home/odroid/svneglfs/bin/platforms/libqeglfs.so")
    Debug: (null) ((null):0, QFactoryLoader::QFactoryLoader() checking directory path "/home/odroid/svneglfs/bin/egldeviceintegrations" ...)
    Fatal: (null) ((null):0, Could not initialize egl display)

    I'm not sure why it's not able to initialize egl display. I already made sure that egl related dependencies are installed on my Odroid board by installing libegl1-mesa libgles2-mesa libgles2-mesa-dev. When ldd checking the libqeglfs.so, the links seem correct.

    linux-vdso.so.1 =>  (0x0000007f96ecc000)
    libQt5EglDeviceIntegration.so.5 => /home/odroid/svneglfs/bin/platforms/./../../lib/libQt5EglDeviceIntegration.so.5 (0x0000007f96df6000)
    libQt5Gui.so.5 => /home/odroid/svneglfs/bin/platforms/./../../lib/libQt5Gui.so.5 (0x0000007f96922000)
    libQt5Core.so.5 => /home/odroid/svneglfs/bin/platforms/./../../lib/libQt5Core.so.5 (0x0000007f96387000)
    libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007f961db000)
    libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f96093000)
    libfontconfig.so.1 => /usr/lib/aarch64-linux-gnu/libfontconfig.so.1 (0x0000007f96046000)
    libfreetype.so.6 => /usr/lib/aarch64-linux-gnu/libfreetype.so.6 (0x0000007f95fa9000)
    libQt5DBus.so.5 => /home/odroid/svneglfs/bin/platforms/./../../lib/libQt5DBus.so.5 (0x0000007f95f16000)
    libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007f95f03000)
    libglib-2.0.so.0 => /lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000007f95dfc000)
    libinput.so.10 => /usr/lib/aarch64-linux-gnu/libinput.so.10 (0x0000007f95dc2000)
    libxkbcommon.so.0 => /usr/lib/aarch64-linux-gnu/libxkbcommon.so.0 (0x0000007f95d78000)
    libudev.so.1 => /lib/aarch64-linux-gnu/libudev.so.1 (0x0000007f95d47000)
    libmtdev.so.1 => /usr/lib/aarch64-linux-gnu/libmtdev.so.1 (0x0000007f95d31000)
    libEGL.so.1 => /usr/lib/aarch64-linux-gnu/libEGL.so.1 (0x0000007f95bed000)
    libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f95bc1000)
    /lib/ld-linux-aarch64.so.1 (0x00000055556c2000)
    libharfbuzz.so.0 => /usr/lib/aarch64-linux-gnu/libharfbuzz.so.0 (0x0000007f95b5d000)
    libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f95ab0000)
    libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f95a8f000)
    libpcre16.so.3 => /usr/lib/aarch64-linux-gnu/libpcre16.so.3 (0x0000007f95a28000)
    libexpat.so.1 => /lib/aarch64-linux-gnu/libexpat.so.1 (0x0000007f959f4000)
    libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000007f959cc000)
    libpng12.so.0 => /lib/aarch64-linux-gnu/libpng12.so.0 (0x0000007f9599d000)
    libdbus-1.so.3 => /lib/aarch64-linux-gnu/libdbus-1.so.3 (0x0000007f9594c000)
    libpcre.so.3 => /lib/aarch64-linux-gnu/libpcre.so.3 (0x0000007f958db000)
    libevdev.so.2 => /usr/lib/aarch64-linux-gnu/libevdev.so.2 (0x0000007f958b2000)
    libwacom.so.2 => /usr/lib/aarch64-linux-gnu/libwacom.so.2 (0x0000007f95899000)
    libUMP.so => /usr/lib/aarch64-linux-gnu/libUMP.so (0x0000007f95880000)
    libX11.so.6 => /usr/lib/aarch64-linux-gnu/libX11.so.6 (0x0000007f95758000)
    libdrm.so.2 => /usr/lib/aarch64-linux-gnu/libdrm.so.2 (0x0000007f95738000)
    libXfixes.so.3 => /usr/lib/aarch64-linux-gnu/libXfixes.so.3 (0x0000007f95722000)
    libXext.so.6 => /usr/lib/aarch64-linux-gnu/libXext.so.6 (0x0000007f95702000)
    libXdamage.so.1 => /usr/lib/aarch64-linux-gnu/libXdamage.so.1 (0x0000007f956ef000)
    librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000007f956d7000)
    libgraphite2.so.3 => /usr/lib/aarch64-linux-gnu/libgraphite2.so.3 (0x0000007f956ab000)
    libsystemd.so.0 => /lib/aarch64-linux-gnu/libsystemd.so.0 (0x0000007f95628000)
    libgudev-1.0.so.0 => /usr/lib/aarch64-linux-gnu/libgudev-1.0.so.0 (0x0000007f9560f000)
    libgobject-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libgobject-2.0.so.0 (0x0000007f955b3000)
    libxcb.so.1 => /usr/lib/aarch64-linux-gnu/libxcb.so.1 (0x0000007f95587000)
    libselinux.so.1 => /lib/aarch64-linux-gnu/libselinux.so.1 (0x0000007f9555a000)
    liblzma.so.5 => /lib/aarch64-linux-gnu/liblzma.so.5 (0x0000007f9552c000)
    libgcrypt.so.20 => /lib/aarch64-linux-gnu/libgcrypt.so.20 (0x0000007f95493000)
    libffi.so.6 => /usr/lib/aarch64-linux-gnu/libffi.so.6 (0x0000007f9547b000)
    libXau.so.6 => /usr/lib/aarch64-linux-gnu/libXau.so.6 (0x0000007f95467000)
    libXdmcp.so.6 => /usr/lib/aarch64-linux-gnu/libXdmcp.so.6 (0x0000007f95452000)
    libgpg-error.so.0 => /lib/aarch64-linux-gnu/libgpg-error.so.0 (0x0000007f95431000)
    

    Is there something else i'm missing? Racking my brain as to why this isn't working and any help would be greatly appreciated.

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      @ccptleu said in Could not initialize egl display on Odroid board:

      -eglfs -qt-xcb

      Pick either one.

      Are you sure that configure picks up the mkspecs you have created? I don't see -platform flag in the configure line.

      (Z(:^

      ccptleuC 1 Reply Last reply
      0
      • sierdzioS sierdzio

        @ccptleu said in Could not initialize egl display on Odroid board:

        -eglfs -qt-xcb

        Pick either one.

        Are you sure that configure picks up the mkspecs you have created? I don't see -platform flag in the configure line.

        ccptleuC Offline
        ccptleuC Offline
        ccptleu
        wrote on last edited by ccptleu
        #3

        @sierdzio
        I will give that a try. Didn't know that I need to choose between one option or the other for eglfs or xcb during the configure stage. So if I want to try different plugins on the arm board i would need to use differently compiled Qt libraries? Can the same Qt arm build work on different boards?(eg. Odroid and Nvidia?)

        I've compiled Qt on a separate Linux machine using chroot to arm sysroot. I know it chose my custom mkspec as when I didn't specify the EGL paths the configure stage complained I didn't specify them.

        sierdzioS 1 Reply Last reply
        0
        • ccptleuC ccptleu

          @sierdzio
          I will give that a try. Didn't know that I need to choose between one option or the other for eglfs or xcb during the configure stage. So if I want to try different plugins on the arm board i would need to use differently compiled Qt libraries? Can the same Qt arm build work on different boards?(eg. Odroid and Nvidia?)

          I've compiled Qt on a separate Linux machine using chroot to arm sysroot. I know it chose my custom mkspec as when I didn't specify the EGL paths the configure stage complained I didn't specify them.

          sierdzioS Offline
          sierdzioS Offline
          sierdzio
          Moderators
          wrote on last edited by
          #4

          @ccptleu said in Could not initialize egl display on Odroid board:

          Didn't know that I need to choose between one option or the other for eglfs or xcb during the configure stage.

          Well it depends. I'm not sure about Odroid, but for example on Raspberry Pi, EGLFS on X is not available. So you can compile for EGLFS or xcb, but I'm not sure if you can have both. I think the last time I tried it worked, but xcb performance was abysmally bad.

          On desktop it is definitely possible to compile multiple plugins and choose one at runtime. So most probably my recommendation to pick one was wrong.

          So if I want to try different plugins on the arm board i would need to use differently compiled Qt libraries? Can the same Qt arm build work on different boards?(eg. Odroid and Nvidia?)

          I'm sorry but I don't have enough experience to answer with certainty here.

          (Z(:^

          ccptleuC 1 Reply Last reply
          0
          • sierdzioS sierdzio

            @ccptleu said in Could not initialize egl display on Odroid board:

            Didn't know that I need to choose between one option or the other for eglfs or xcb during the configure stage.

            Well it depends. I'm not sure about Odroid, but for example on Raspberry Pi, EGLFS on X is not available. So you can compile for EGLFS or xcb, but I'm not sure if you can have both. I think the last time I tried it worked, but xcb performance was abysmally bad.

            On desktop it is definitely possible to compile multiple plugins and choose one at runtime. So most probably my recommendation to pick one was wrong.

            So if I want to try different plugins on the arm board i would need to use differently compiled Qt libraries? Can the same Qt arm build work on different boards?(eg. Odroid and Nvidia?)

            I'm sorry but I don't have enough experience to answer with certainty here.

            ccptleuC Offline
            ccptleuC Offline
            ccptleu
            wrote on last edited by
            #5

            @sierdzio I've tried recompiling anyways hoping it might work if i only set eglfs on configuration. But still no luck running with eglfs, i'm getting the exact same error as before.

            1 Reply Last reply
            0
            • ccptleuC Offline
              ccptleuC Offline
              ccptleu
              wrote on last edited by ccptleu
              #6

              Actually i may know why im not able to run with eglfs. My application runs with multiple dock widgets on top of a main window and i read that multiple windows are not supported for eglfs. I've ported my application that was originally created for a linux desktop environment to arm embedded platform. Is my only option to use xcb or wayland to be able to run my application without changing the windowing?

              sierdzioS 1 Reply Last reply
              0
              • ccptleuC ccptleu

                Actually i may know why im not able to run with eglfs. My application runs with multiple dock widgets on top of a main window and i read that multiple windows are not supported for eglfs. I've ported my application that was originally created for a linux desktop environment to arm embedded platform. Is my only option to use xcb or wayland to be able to run my application without changing the windowing?

                sierdzioS Offline
                sierdzioS Offline
                sierdzio
                Moderators
                wrote on last edited by
                #7

                @ccptleu said in Could not initialize egl display on Odroid board:

                Actually i may know why im not able to run with eglfs. My application runs with multiple dock widgets on top of a main window and i read that multiple windows are not supported for eglfs.

                But these dock widgets are not separate windows, right?

                Anyway, that is easy to check: try creating a simple test app, just with single QWidget (or some simple QML application) and see if it runs. To me, the error message "Could not initialize egl display" sounds like it is failing even before it tries to create your UI.

                (Z(:^

                ccptleuC 1 Reply Last reply
                0
                • sierdzioS sierdzio

                  @ccptleu said in Could not initialize egl display on Odroid board:

                  Actually i may know why im not able to run with eglfs. My application runs with multiple dock widgets on top of a main window and i read that multiple windows are not supported for eglfs.

                  But these dock widgets are not separate windows, right?

                  Anyway, that is easy to check: try creating a simple test app, just with single QWidget (or some simple QML application) and see if it runs. To me, the error message "Could not initialize egl display" sounds like it is failing even before it tries to create your UI.

                  ccptleuC Offline
                  ccptleuC Offline
                  ccptleu
                  wrote on last edited by ccptleu
                  #8

                  @sierdzio You're correct. I tried running simple Qt GUI example and cannot open for eglfs. Even installing qt creator i cannot run with eglfs. I have to manually set it to xcb before i can run qtcreator but i also get this error "Plugin initialization failed: Cannot create OpenGL context" so that while it cannot load the QmlDesigner, QmlProfiler and Welcome pages, the rest of qtcreator loads.

                  1 Reply Last reply
                  0
                  • sierdzioS Offline
                    sierdzioS Offline
                    sierdzio
                    Moderators
                    wrote on last edited by
                    #9

                    Hm, are you sure you have all dependencies? Can you run some other OpenGL software, like glxgears?

                    You can try installing missing deps by running:

                    sudo apt-get build-dep qt5-default
                    

                    But it is surprising that your Qt config happily accepted OpenGL and EGLFS (which means that it also run the tests with good results), yet it does not run.

                    (Z(:^

                    1 Reply Last reply
                    0
                    • ccptleuC Offline
                      ccptleuC Offline
                      ccptleu
                      wrote on last edited by
                      #10

                      @sierdzio said in Could not initialize egl display on Odroid board:

                      Hm, are you sure you have all dependencies? Can you run some other OpenGL software, like glxgears?

                      You can try installing missing deps by running:

                      sudo apt-get build-dep qt5-default

                      I ran sudo apt-get build-dep qt5-default before on the arm board and checked again that i should have all the Qt dependencies.

                      I just tried running glxgears but it errors out with

                      X Error of failed request: BadValue (integer parameter out of range for operation)
                      Major opcode of failed request: 155 (GLX)
                      Minor opcode of failed request: 24 (X_GLXCreateNewContext)
                      Value in failed request: 0x0
                      Serial number of failed request: 35
                      Current serial number in output stream: 36

                      But it is surprising that your Qt config happily accepted OpenGL and EGLFS (which means that it also run the tests with good results), yet it does not run.

                      Yes, that's why it's puzzling. I cross compiled Qt for Arm from another Linux PC but all the dependencies i have on there i also have on the ARM board.

                      1 Reply Last reply
                      0

                      • Login

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users
                      • Groups
                      • Search
                      • Get Qt Extensions
                      • Unsolved