cancel
Showing results for 
Search instead for 
Did you mean: 

Flickering issue with webkitgtk3 under wayland using gles

james-cc
Associate II

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.

1 ACCEPTED SOLUTION

Accepted Solutions
james-cc
Associate II

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.

View solution in original post

4 REPLIES 4
james-cc
Associate II

@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-cc
Associate II

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.

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.

 


 

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

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).