2025-01-22 9:09 AM
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.
Solved! Go to Solution.
2025-01-24 4:31 AM
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.
2025-01-23 3:28 AM
@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.
2025-01-24 4:31 AM
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.
2025-02-04 5:39 AM
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.
2025-02-07 11:19 PM
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).
2026-03-05 9:25 PM
Hi @james-cc
Can you please let me know the process of the compilation and with version you are using. And is your cog browser is supported GPU & video hardware accelerator.
have you tested from your side.
2026-03-07 4:56 AM
I'm no longer working on that project, so I don't have access to provide you with the bbrecipe.
However, I was confident that it was using the GPU, tested by doing some WebGL performance tests. Of course, it'll fall back to software on webGL primatives it doesn't support. Some of our javascript did use features not supported - a glowing animation ended up consuming considerable GPU.
I updated a couple of times since this posting last year. It was a relatively straightforward import of the bitbake meta layer mentioned above, and we added the packages listed above.
Sorry I can't be more help. All the best for your project.