I recently obtained a brand new Raspberry Pi4 device and took the free days around x-mas to play a little bit around with it. And I must say, I am very pleased with this device!
The important updates for me, comparing to the older Pis are:
- Two displays can be connected! Either two HDMI or one DSI plus one HDMI.
- It has a VideoCore VI GPU (very different to the IV from RPi3), which is driven by the MESA V3D driver.
My goal was to get a Yocto-built multi-display plasma-mobile environment on the device. Except two magic lines for the /boot/config.txt configuration that enabled multi-display output for me, it nearly worked out of the box.
RPi4 Multi-Display Setup
The important configuration step, compared to the default configuration as provided by meta-raspberry, are the following two lines that I had to add to the /boot/config.txt boot configuration:
Without these lines, the second screen always displayed just the Raspberry’s rainbow boot screen but it was never detected. I tested with both DSI+HDMI and HMDI+HDMI and both screens were always correctly detected at boot with these configuration.
Running Qt on Yocto-Build Image
Having the above configuration added, I was able to run a simple multi-screen QtWayland Compositor on the device. Note that I built Qt with
PACKAGECONFIG_append = " gbm kms eglfs"
and QtWayland with
PACKAGECONFIG_append_raspberrypi4 = " wayland-drm-egl-server-buffer"
With these options and having all requirements installed, the compositor runs via
export XDG_RUNTIME_DIR=/var/run/ export GALLIUM_HUD=fps # gives nice profiling information about fps export QT_QPA_EGLFS_ALWAYS_SET_MODE=1 export QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=linux-dmabuf-unstable-v1 qmlscene Compositor.qml -platform eglfs
It is important to note that qmlscene internally sets the Qt::AA_ShareOpenGLContexts attribute which you have to do yourself when running a compositor with your own main file.
Having this compositor running, I could run a simple spinning rectangle application via
export XDG_RUNTIME_DIR=/var/run/ qmlscene SpinningRectangle.qml -platform wayland-egl
The final step though was to get our KDE Demo Setup running. Since there were no live conferences this year, some parts were slightly outdated. So, this was a good opportunity to update our meta layers:
- meta-kf5 is now updated to KDE Frameworks 5.77.0. Note that we also cleaned up the license statements a few months ago, which was only possible due to much better license information via the SPDX/REUSE conversion of frameworks.
- meta-kde also gained an update to the latest Plasma release and to the latest KDE Applications release. The number of provided applications — additional to Plasma — is still small, but I also used the opportunity to add some more KDE Edu applications (Blinken, Marble, Kanagram, KHangman, GCompris).
Plasma mobile running with two screens \o/
PS: My whole test configuration if available by my (quick and dirty) umbrella test repository, in which I have all used meta layers integrated as submodules.