CEF with Qt & QCefView without X on ARM
Posted: Thu Jul 21, 2022 3:02 pm
Hi,
I have a Qt 5.2 app running on a 1GHz single core (no GPU) 512MB ARM device and I'm trying to integrate CEF3 to make some evaluation of how it may perform on this hardware. The QtWebKit used in this Qt version runs well on the platform but is not actively maintained so I'm looking for alternatives. A newer Qt with the bundled chromium might be another option but not without a bit more work. Even if performance due to the specs isn't very good, I'm interested to try this out first.
The platform does not have X installed, instead the input and display (framebuffer) are integrated using a QPA module for the Qt version. The approach I'm trying to use is to embed a QCefView (this was posted in another thread) widget in my app (that handles integrating the Qt & CEF event loops) with OSR, linking in CEF/Chromium. I'm not sure if it'll work on the arm build, but I did an x86 build (which does use X), using one of the Spotify builds and it worked nicely.
Trying something similar with the ARM spotify build didn't work, as it has X dependencies, so I'm trying to build without those now to see if it'll work. With a bit of googling I found some of the issues on Bitbucket where people were trying to build for similar use cases. It seems like the ozone platform abstraction allows this, but I'm not sure if it needs another backend (EGL, wayland etc.) or if it could work with the OSR in QCefView and thus go through the QPA and framebuffer.
I'm building according to the instructions here with the following configuration:
I've seen this issue just now.. so maybe this approach can't work without that?
I have a Qt 5.2 app running on a 1GHz single core (no GPU) 512MB ARM device and I'm trying to integrate CEF3 to make some evaluation of how it may perform on this hardware. The QtWebKit used in this Qt version runs well on the platform but is not actively maintained so I'm looking for alternatives. A newer Qt with the bundled chromium might be another option but not without a bit more work. Even if performance due to the specs isn't very good, I'm interested to try this out first.
The platform does not have X installed, instead the input and display (framebuffer) are integrated using a QPA module for the Qt version. The approach I'm trying to use is to embed a QCefView (this was posted in another thread) widget in my app (that handles integrating the Qt & CEF event loops) with OSR, linking in CEF/Chromium. I'm not sure if it'll work on the arm build, but I did an x86 build (which does use X), using one of the Spotify builds and it worked nicely.
Trying something similar with the ARM spotify build didn't work, as it has X dependencies, so I'm trying to build without those now to see if it'll work. With a bit of googling I found some of the issues on Bitbucket where people were trying to build for similar use cases. It seems like the ozone platform abstraction allows this, but I'm not sure if it needs another backend (EGL, wayland etc.) or if it could work with the OSR in QCefView and thus go through the QPA and framebuffer.
I'm building according to the instructions here with the following configuration:
- Code: Select all
$ python ../automate/automate-git.py --download-dir=$WORKSPACE/cef_build/chromium_git_arm --branch=5112 --depot-tools-dir=$WORKSPACE/cef_build/depot_tools --arm-build --no-distrib --no-build
$ export CEF_INSTALL_SYSROOT=arm
$ export GN_DEFINES="is_debug=false target_cpu=\"arm\" use_ozone=true ozone_platform_x11=false blink_symbol_level=0 use_sysroot=true use_allocator=none symbol_level=0 is_cfi=false use_thin_lto=false use_vaapi=false"
...
I've seen this issue just now.. so maybe this approach can't work without that?