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. Qt5.2.0 static + eglfs cannot run example hellogl_es2
Qt 6.11 is out! See what's new in the release blog

Qt5.2.0 static + eglfs cannot run example hellogl_es2

Scheduled Pinned Locked Moved Mobile and Embedded
5 Posts 3 Posters 8.8k Views 1 Watching
  • 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.
  • ? Offline
    ? Offline
    A Former User
    wrote on last edited by
    #1

    Hello all,

    I downloaded t Qt5.2.0 version and wanted to compile it with static build
    and platform eglfs which can run on imx6 board.

    Here is my configure option:

    ./configure -prefix /usr/local/Qt5.2.0-imx6-static -v -opensource -confirm-licen
    se -release -static -opengl es2 -device imx6 -device-option CROSS_COMPILE=/opt/freescale/
    usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-l
    inux-gnueabi- -sysroot /my_rootfs -no-gcc-sysroot -nomake examples -no-xcb
    -eglfs -no-pch -no-javascript-jit -no-c++11 -no-icu

    There was no any error when ran on the steps configure, make, make install.
    Therefore I wanted to run a simple example with static version.

    I compiled this example of Qt5.2:
    Qt5.2.0/static-qt-everywhere-opensource-src-5.2.0/qtbase/examples/opengl/hellogl_es2

    and I modified the .pro and main.cpp file like this:

    .pro:
    @QT += opengl widgets

    SOURCES += main.cpp
    SOURCES += glwidget.cpp
    SOURCES += mainwindow.cpp
    SOURCES += bubble.cpp

    HEADERS += glwidget.h
    HEADERS += mainwindow.h
    HEADERS += bubble.h

    RESOURCES += texture.qrc

    install

    target.path = $$[QT_INSTALL_EXAMPLES]/opengl/hellogl_es2
    INSTALLS += target

    maemo5 {
    # Debian package name may not contain numbers or special characters
    # such as '_', lets change this in Maemo.
    TARGET = helloglestwo
    CONFIG += qt_example
    }

    the following is the new added

    CONFIG += static
    contains(CONFIG, static) {
    DEFINES += QTAPP_CONFIG_STATIC
    LIBS += -L/my_rootfs/usr/local/Qt5.2.0-imx6-static/plugins/platforms/
    LIBS += -L/my_rootfs/usr/local/Qt5.2.0-imx6-static/plugins/generic/
    LIBS += -lqtslibplugin -lqeglfs
    }@

    main.cpp:

    @#include <QApplication>
    #include <QMainWindow>
    #include "mainwindow.h"

    //Here is the new added
    #ifdef QTAPP_CONFIG_STATIC
    #include <QtPlugin>
    Q_IMPORT_PLUGIN(QEglFSIntegrationPlugin);
    //Q_IMPORT_PLUGIN(qtslibplugin);
    #endif

    int main( int argc, char ** argv )
    {
    Q_INIT_RESOURCE(texture);
    QApplication a( argc, argv );
    MainWindow mw;
    mw.showMaximized();
    return a.exec();
    }
    @

    There was no error when compiling this example,
    but when I wanted to run this example with these options:

    ./hellogl_es2 -platform eglfs

    It appeared these messages:

    This plugin does not support propagateSizeHints()
    This plugin does not support setParent!
    EGLFS: OpenGL windows cannot be mixed with others.
    Aborted

    By the way, I also modifed the file qeglfshooks_imx6.cpp in the path
    Qt5.2.0/static-qt-everywhere-opensource-src-5.2.0/qtbase/mkspecs/devices/linux-imx6-g++
    and added a function like this:

    @EGLNativeWindowType QEglFSImx6Hooks::createNativeWindow(QPlatformWindow *platformWindow,
    const QSize &size,
    const QSurfaceFormat &format)
    {
    Q_UNUSED(format);
    EGLNativeWindowType eglWindow = fbCreateWindow(mNativeDisplay, 0, 0, size.width(), size.height());
    return eglWindow;
    }@

    Because I found that without this function, the program would call the function createNativeWindow
    in the qeglfshooks_stub.cpp and would result in m_surface error in the function resetSurface() and cause the warning :
    EGL Error : Could not create the egl surface: error = 0x300b

    But I am not sure whether it is a bug or not.

    Anyway, I could not run this program normally, so I modified another example "hellowindow".
    The hellowindow result looks like this:
    EGLFS: OpenGL windows cannot be mixed with others.
    (I noticed that no appeared the message "This plugin does not...")

    I searched on the internet but do not see the similar problem,
    so I post here to ask for help.
    If there is similar or the same problem, please also inform me.

    Thank you all.
    Best Regards

    1 Reply Last reply
    0
    • A Offline
      A Offline
      agocs
      wrote on last edited by
      #2

      Ok, the hooks may be broken in 5.2.0 then. They are correct in 5.2.1 and 5.3.

      As for the other question, see http://qt-project.org/wiki/i.MX-6
      The application terminates as expected.
      The inability to mix OpenGL windows with other content will be resolved later by the introduction of QOpenGLWidget and QQuickWidget. These will then be properly supported on all platforms.

      For the time being, avoid having mixed UIs like the one in hellogl_es2.

      1 Reply Last reply
      0
      • ? Offline
        ? Offline
        A Former User
        wrote on last edited by
        #3

        Thanks for agocs' reply.

        I downloaded Qt5.2.1 version and rebuilt it again with the same configure option, and there was no any error.
        However the problem of examples hellogl_es2 and hellowindow is the same like before:

        This plugin does not support propagateSizeHints()
        This plugin does not support setParent!
        EGLFS: OpenGL windows cannot be mixed with others.
        Aborted

        So Qt5.2.1 version doesn't correct this problem yet? :(

        By the way, I looked about the code in the qeglfshooks_imx6.cpp, and it was really modified like I modified before.

        I also tested another simple program I wrote, and I found some error.
        Here is my program:

        main.cpp:

        @#include <QGuiApplication>
        #include <QtQuick/QQuickView>
        #include <QTextCodec>

        #ifdef QTAPP_CONFIG_STATIC
        #include <QtPlugin>
        Q_IMPORT_PLUGIN(QEglFSIntegrationPlugin);
        Q_IMPORT_PLUGIN(QTsLibPlugin);
        #endif

        int main(int argc, char **argv)
        {
        QGuiApplication app(argc, argv);
        QTextCodec *codec = QTextCodec::codecForName("Utf-8");
        QTextCodec::setCodecForLocale(codec);

        QQuickView view;
        view.setSource(QUrl("qml/main.qml"));
        view.show();

        return app.exec();
        }
        @

        main.qml :

        @import QtQuick 2.0

        Item {
        width: 800
        height: 480

        Rectangle {
            id: rect
            width: 800
            height: 480
            color:  "lime"
        
            Text {
                text: "Hello"
                color: "red"
                anchors.centerIn: parent
            }
        }
        

        }@

        When I ran this program like this:

        ./simple_qt5 -platform eglfs

        I saw the warning:

        Warning: distance-field glyph is not available with index 0

        Even I copied the folder fonts to /Qt5.2.1-imx6-static/lib/, it showed the same warning.

        Is this a problem in Qt5.2.1 too?

        Anyway, thank you all for helping me.
        Best Regards.

        1 Reply Last reply
        0
        • A Offline
          A Offline
          agocs
          wrote on last edited by
          #4

          It (the error about multiple opengl windows) is not a bug, it's a feature. :) hellogl_es2 will never work on platforms like eglfs.

          As for hellowindow, that works fine, just launch with --single. By default it tries to open 3 windows which won't fly.

          As for the text rendering issue, not sure. I have also seen the the warning about glyphs not being available before but then it went away with recent Qt versions, I think. Perhaps just retest with 5.2.1.

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Morix Dev
            wrote on last edited by
            #5

            Hello, I am quite late but I just faced more or less the same problem (with Qt 5.2.1 on TI AM335x) and I found a solution.

            Even in my case Qt said "Warning: distance-field glyph in not available with index 0" and in my case it was due to the fact that Qt couldn't find fonts (in my case the text on screen appeared as a set of squares).

            This was due to the fact that Qt was cross-compiled with fontconfig support (and system freetype) and so Qt searched for fonts in /usr/share/fonts (at least on my system) instead of /prefix-path/lib/fonts. Copying fonts to /usr/share/fonts fixed the problem.

            The issue is quite subtle because fontconfig and system freetype were enabled by ./configure (due to pkgconfig in my sysroot)... if you want to use Qt embedded support for fonts I think it is enough to cross-compile it specifying -no-fontconfig and -qt-freetype (in this case fonts should be in /prefix-path/lib/fonts).

            /Morix

            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