This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3358: Qt build issue

Other Parts Discussed in Thread: AM3354

Hi,

My target is run qtWebBrowser on BeagleBone Black with graphic acceleration.

To compile qtWebBrowser, I'm trying to compile Qt (https://download.qt.io/archive/qt/5.13/5.13.1/) with SDK(ti-processor-sdk-linux-am335x-evm-06.00.00.07-Linux-x86-Install.bin). However, a driver named qtWebEngine.so is not created.

This topic may qt issue, if possible please support.

Build environment is Ubuntu 16.04.1.

"make" command finished without error. But the driver is not created.

Configure before make have some error, so I'm thinking configuration as following is wrong.

./configure -no-gtk -device linux-beagleboard-g++ -device-option CROSS_COMPILE=/home/beaglebone/ti-processor-sdk-linux-am335x-evm-06.00.00.07/linux-devkit/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- -sysroot /home/beaglebone/ti-processor-sdk-linux-am335x-evm-06.00.00.07/linux-devkit/sysroots/armv7at2hf-neon-linux-gnueabi -opensource -confirm-license -release -nomake tests -prefix /usr/lib/qt -nomake examples

log of configure file is attached.

Best Regards,

Takase

0181.config.log

  • Hello Takase,

    Currently, there is a known GPU incompatibility issue with PSDK6.0 and the QtWebengine-based browser does not work. The issue is listed under the following link: http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Release_Specific_Release_Notes.html#sdk-known-issues (LCPD-15587).

    In the meantime, I am wondering if you could please try PSDK5.3. I have confirmed that the qtWebEngine.so library is present under the "linux-devkit/sysroots/armv7at2hf-neon-linux-gnueabi/usr/lib" location.

    Regards,
    Krunal

  • Hello Krunal,

    Thank you for your reply.

    We tried build with PSDK5.3.0.7. However, configure does not work well.

    Could you tell me which version of Qt did you confirmed?

    In addition, do you have version information for LCPD-15587?

    I want to know what version of qtWebEngine does not work with PSDK6.0.

  • Hello,

    On PSDK5.x, Qt5.9.7 (webengine) is used with Chromium v56 and on PSDK6.x, Qt5.11.3 (webengine) is used with Chromium v65.

    Regards,
    Krunal

  • I managed to compile the qwebengine in latest Qt-5.13.2 release, with PSDK6.0 and Ubuntu 16.04.1
    Here is what is need to be done:

    1. Recommend to replace ICU62 in the rootfs, because qwebengine asks for version>=63 to use system ICU. I compiled a ICU64.
    2. Recommend to replace libxml with ICU support enabled in the rootfs, otherwise qwebengine will not use system libxml. I compiled a libxml2.99
    3. Recommend to replace libharfbuzz 1.8 in the rootfs, because qwebengine asks for version>=2.2 to use system library. I compiled a libharfbuzz2.64.
    4. In function EGLDisplay QEglFSKmsGbmIntegration::createDisplay(EGLNativeDisplayType nativeDisplay)
    in qtbase/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmintegration.cpp,
    there is a type cast that is not supported by am335x, so a little modification here:

    if (getPlatformDisplay) {

    + // EGLNativeDisplayType may be int on some platforms but those
    + // won't hit this path. Have to keep it compiling nonetheless.
    + qintptr nativeDisplayPtr = reinterpret_cast<qintptr>(nativeDisplay);
    + display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, reinterpret_cast<void *>(nativeDisplayPtr), nullptr);
    - display = getPlatformDisplay(EGL_PLATFORM_GBM_KHR, nativeDisplay, nullptr);

    } else {

    qCDebug(qLcEglfsKmsDebug, "No eglGetPlatformDisplay for GBM, falling back to eglGetDisplay");
    display = eglGetDisplay(nativeDisplay);

    }

    5. In function bool GLOzoneEGLQt::LoadGLES2Bindings(gl::GLImplementation /*implementation*/)
    in qtwebengine/src/core/ozone/gl_ozone_egl_qt.cpp
    It's not able to get the GPU driver proc address, so just force it to use eglGetProcAddress():

    +if (!get_proc_address)
    + get_proc_address = &eglGetProcAddress;

    if (!get_proc_address) {

    LOG(ERROR) << "eglGetProcAddress not found.";
    base::UnloadNativeLibrary(eglgles2Library);
    return false;

    }

    6. Environment:
    export PKG_CONFIG_PATH=/usr/local/arago-2019.05/sysroots/armv7at2hf-neon-linux-gnueabi/usr/lib/pkgconfig
    export CPLUS_INCLUDE_PATH=/usr/include/nss:/usr/include/nspr
    export LIBRARY_PATH=/usr/lib/gcc/i686-linux-gnu/8:/usr/lib/x86_64-linux-gnu/nss
    Here you must provide x86 version of libstdc++ installed in your ubuntu. qwebengine will check v8_snapshot function at configure step, if libstdc++:i386 is not provided, qwebengine compilation will be skipped.

    7. Configure:
    ../qt-everywhere-src-5.13.2/configure -release -no-gtk -no-xkbcommon -device linux-beaglebone-g++ -device-option CROSS_COMPILE=/usr/local/arago-2019.05/sysroots/x86_64-arago-linux/usr/bin/arm-linux-gnueabihf- -sysroot /usr/local/arago-2019.05/sysroots/armv7at2hf-neon-linux-gnueabi -platform linux-g++-64 -skip qtx11extras -skip gamepad -egl -eglfs -opengl es2 -webengine-icu -system-sqlite

    8. In the generated file qtbase/src/gui/qtgui-config.pri, add -lEGL to variable QMAKE_LIBS_OPENGL_ES2. I don't know why it's lost in this file while it's already written in qmake.conf.

    9. make

  • Hello,

    Thank you for sharing your progress. I will be closing the thread and if you have any further questions, please feel free to post on the current thread.

    Regards,
    Krunal

  • Hi Krunal,

    Can you share the build configure parameters of the QT 5.11.3 libraries in PSDK6.0 rootfs image?

    There is a QT example located at examples/charts/openglseries. The binary in PSDK6.0 is able to run at 9.2fps on my 1GHz AM3354. But the QT binary I compiled will only give 7.8fps. I'm trying to figure out the reason..

    Thank you very much

  • Hello,

    We use the Yocto Project to integrate Qt into our PSDK and here are a couple of links to get you familiar with Yocto:
    1. http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Overview_Building_the_SDK.html
    2. https://training.ti.com/customizing-yocto-for-production-packagegroups

    Here is an image that describes all the recipes we have modified for Qt:
     

    Regards,
    Krunal