Qt 4.8.5 with OpenGL

  • Hi,
    I'm trying to run the Qt 4.8.5 OpenGL example application "hellogl_es2" application on a efus a9 starter kit. Unfortunately, the application crashes with a SegFault.


    What I've done so far:

    • Enabled "CONFIG_EFUSA9_HDMI" switch in build/linux-3.0.35-fsimx6-V2.0/arch/arm/mach-mx6/board-mx6q-efusa9.h to activate the HDMI interface as fb0
    • Configured buildroot (from fsimx6-V2.0 archive) to use the minimal defcon and added these packages:

      • Freescale i.MX libraries: firmware-imx, gpu-viv-bin-mx6q
      • directfb
      • Qt: demos, examples, OpenGL ES v2.x support, and some other stuff I need
    • After compiling, I flashed the new bins via NBoot/U-Boot and set the envvar "extra" to "video=mxcfb0:dev=hdmi,1920x1080M@60,if=RGB24", so my FB will be initialized with the correct resolution.


    What I want to to:
    cd /usr/share/qt/examples/opengl/hellogl_es2
    ./hellogl_es2 -qws -display directfb


    Output:

    ~~~~~~~~~~~~~~~~~~~~~~~~~~| DirectFB 1.6.3 |~~~~~~~~~~~~~~~~~~~~~~~~~~
    (c) 2012-2013 DirectFB integrated media GmbH
    (c) 2001-2013 The world wide DirectFB Open Source Community
    (c) 2000-2004 Convergence (integrated media) GmbH
    ----------------------------------------------------------------


    (*) DirectFB/Core: Single Application Core. (2015-05-09 12:04)
    (*) Direct/Memcpy: Using libc memcpy()
    (*) Direct/Thread: Started 'Fusion Dispatch' (-1) [MESSAGING OTHER/OTHER 0/0] <8388608>...
    (*) Direct/Thread: Started 'VT Switcher' (-1) [CRITICAL OTHER/OTHER 0/0] <8388608>...
    (*) Direct/Thread: Started 'VT Flusher' (-1) [DEFAULT OTHER/OTHER 0/0] <8388608>...
    (*) DirectFB/FBDev: Found 'DISP3 BG - DI1' (ID 0) with frame buffer at 0x18000000, 8100k (MMIO 0x00000000, 0k)
    (*) Direct/Thread: Started 'Keyboard Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
    (*) DirectFB/Input: Keyboard 0.9 (directfb.org)
    (*) Direct/Thread: Started 'PS/2 Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
    (*) DirectFB/Input: IMPS/2 Mouse (1) 1.0 (directfb.org)
    (*) Direct/Thread: Started 'PS/2 Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
    (*) DirectFB/Input: IMPS/2 Mouse (2) 1.0 (directfb.org)
    (*) Direct/Thread: Started 'Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
    (*) DirectFB/Input: gpio-keys 0.1 (directfb.org)
    (*) Direct/Thread: Started 'Hotplug with Linux Input' (-1) [INPUT OTHER/OTHER 0/0] <8388608>...
    (*) DirectFB/Input: Hot-plug detection enabled with Linux Input Driver
    (*) DirectFB/Graphics: Generic Software Rasterizer 0.7 (directfb.org)
    (*) DirectFB/Core/WM: Default 0.3 (directfb.org)
    (*) FBDev/Mode: Setting 1920x1080 RGB32
    (*) FBDev/Mode: Switched to 1920x1080 (virtual 1920x1080) at 32 bit (RGB32), pitch 7680
    (*) FBDev/Mode: Setting 1920x1080 RGB32
    (*) FBDev/Mode: Switched to 1920x1080 (virtual 1920x1080) at 32 bit (RGB32), pitch 7680
    (!!!) *** WARNING [letting unprivileged IDirectFBDisplayLayer::GetSurface() call pass until cooperative level handling is finished] *** [idirectfbdisplaylayer.c:183 in IDirectFBDisplayLayer_GetSurface()]
    (*) Direct/Thread: Started 'EventBufferFeed' (-1) [MESSAGING OTHER/OTHER 0/0] <8388608>...
    (*) Direct/Thread: Started 'EventBufferFeed' (-1) [MESSAGING OTHER/OTHER 0/0] <8388608>...
    Segmentation fault




    Other Qt demo applications, which don't need OpenGL, are executed properly. What am I doing wrong?



    Btw: I've read that the efus a9 will show a fs-net logo while booting. But my screen remains black until a opengl application is started. I could bend the console to tty0, so I'd get a visual feedback while booting. But I'd rather have a logo, so what do I have to do to show it up?




    Thanks in advance.



    Kind regards,
    mavoka

  • Okay, I think I could figure out that it's a problem with the Vivante GPU drivers. Even the pre-installed gpu samples (/usr/share/examples) don't start, they crash immediately with a segfault. The directfb examples (e.g. df_andi) are running without a problem (like the Qt examples which don't use OpenGL).


    At the embedded world fair you'd running a demo application to show multi-touch and some other things. As you've said, this example was written with Qt with OpenGL support. But what do I have to do to get it work?



    Greetings,
    mavoka

  • Problem solved. I compiled Qt 5 for I.MX6 by myself (not using the buildroot package) and also upgraded the provided vivante gpu driver to the latest version. Now the Vivante OpenGL example apps run and also I can execute Qt 5 applications with eglfs platform (OGLES2 support).

  • Thanks for the feedback. Can you give us the exact versions of Qt and the Vivante GPU driver files that work in your configuration? We are also working on solving this, but of course within Buildroot.


    Your F&S Support Team

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Hi,
    I've used Qt 5.4.1 (currently the latest version) and version 3.10.17-1.0.2 of the Vivante GPU driver files. I didn't test Qt 4.x anymore as there's no reason to use it.


    Greetings.