Skip to main content
Visitor II
January 22, 2025
Solved

Flickering issue with webkitgtk3 under wayland using gles

  • January 22, 2025
  • 2 replies
  • 2276 views

I'd like to move from mickledore to the current ST offering on scarthgap.  We are using the STM32MP157D.

We require a web browser, and WebKit worked well for us on mickledore using QT5.

Since QT has been spun out to a plug-in and it is unclear how well-supported it is (ST's documentation seems lagging), I decided to go with Weston/Wayland and use a simple GTK/GDK app.

Westion is working - the GPU `/usr/local/demo/bin/weston-st-egl-cube-tex` runs nicely.  Simple apps using GDK are also working.

Sadly, though, the app embedding a WebKit view has a hard-to-describe random flickering issue.  It renders the page but then randomly overlays a white screen that occasionally flashes on and off.

 

Anyone able to offer some experience:

- Has anyone got a lightweight browser working on the STM32MP1 using the GPU and the recent ST scarthgap releases?

- Or got QT6 working on STM32MP1.  Did you use the ST's "QT plug-in"?

- Any advice for configuring webkitgtk3 (found in meta-oe)?  I see it is untouched by the ST layers.

    This topic has been closed for replies.
    Best answer by james-cc

    So I chose to go with wpewebkit from meta-webkit layer found at https://github.com/Igalia/meta-webkit.git (scrathgap branch - ff17c29c - 2jan2025).

    I added the "wpewebkit libwpe wpebackend-fdo cog" packages.  `cog` renders the few simple pages I threw at it successfully.

    So using wayland (via wpebackend-fdo), no QT nor webkitgtk3.

    2 replies

    james-ccAuthor
    Visitor II
    January 23, 2025

    @james-cc wrote:

    Sadly, though, the app embedding a WebKit view has a hard-to-describe random flickering issue.  It renders the page but then randomly overlays a white screen that occasionally flashes on and off.

    This is rendering the text correctly, but none of the images.  I end up with large white boxarea being flashed at the top left.

    Software compositing works (slowly).

    Running the code with `GDK_GL=gles EGL_LOG_LEVEL=debug` tells me there is an invalid surface:

    libEGL debug: EGL user error 0x300d (EGL_BAD_SURFACE) in eglSwapInterval
    
    libEGL debug: EGL user error 0x300d (EGL_BAD_SURFACE) in eglSwapInterval
    
    libEGL debug: EGL user error 0x300d (EGL_BAD_SURFACE) in eglSwapInterval
    
    libEGL debug: EGL user error 0x300d (EGL_BAD_SURFACE) in eglSwapInterval
    
    ...

     Any advice is welcome.

    james-ccAuthorAnswer
    Visitor II
    January 24, 2025

    So I chose to go with wpewebkit from meta-webkit layer found at https://github.com/Igalia/meta-webkit.git (scrathgap branch - ff17c29c - 2jan2025).

    I added the "wpewebkit libwpe wpebackend-fdo cog" packages.  `cog` renders the few simple pages I threw at it successfully.

    So using wayland (via wpebackend-fdo), no QT nor webkitgtk3.

    ST Employee
    February 4, 2025

    Hi,

    Qt6 is officially supported, you can use the 2.0.1 X-LINUX-QT meta layer here: https://www.st.com/en/embedded-software/x-linux-qt.html
    Doc is here: https://wiki.st.com/stm32mpu/wiki/X-LINUX-QT_Expansion_Package

    But we have not integrated yet the webengine officially
    Anyway I can give you some indications:

     

    1- in st-image-qt.bb, add:

    # enable webengine feature
    DISTRO_FEATURES:append = " webengine"

     

    2- In  packagegroup-x-linux-qt.bb, add:

    # enable webengine feature
    DISTRO_FEATURES:append = " webengine"

     

    and 

    RDEPENDS:packagegroup-x-linux-qt-extra = "\

    ...

        qtwebengine                 \
       ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtwebengine-qmlplugins', '', d)} \
       ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'qtwebview', '', d)} \
       \

    ...
     

    3- Then you can use the webengine quicknanobrowser application delivered by Qt.

    with the following flags:

    # Qt Webengine flags
    export QTWEBENGINE_CHROMIUM_FLAGS=" \
       --ignore-gpu-blocklist --enable-gpu-rasterization \
       --enable-native-gpu-memory-buffers --num-raster-threads=4 \
       --enable-accelerated-video-decode \
       --disable-gpu-sandbox --disable-web-security \
       --enable-unsafe-webgpu \
       --enable-virtual-keyboard \
       --enable-wayland-ime \
       --enable-wayland-server \
       --enable-zero-copy \
       --hardware_video_decoding \
       --enable-hardware-overlays \
       --enable-native-gpu-memory-buffers \
       --vulkan --use-vulkan \
       --video-threads=4 \
       --enable-accelerated-2d-canvas \
    "

     

    Hope it can help.

    Official Qt6 webengine support should come around mid 2025.

     

    Philippe.

     


     

    james-ccAuthor
    Visitor II
    February 8, 2025

    Thanks.  We'll stick with wpewebkit at the moment (via weston) as it seems to be working well. We also seem to have saved quite a bit of space without having the QT libraries (although I didn't spend much effort pruning QT).