Wayland's Weston Brought To The Raspberry Pi
Pekka Paalanen has published initial patches that allow Wayland's Weston reference compositor to run from the popular low-cost Raspberry Pi ARM computer.
Pekka's patches for Weston allow for a configurable Weston back-end at build time, contains a small fix to the OpenGL ES 2.0 support, and introduces a Raspberry Pi back-end for the compositor. The "RPI" back-end is around 2,000 lines of new code for Weston.
With the open-source Raspberry Pi graphics driver being lackluster, the Wayland/DRM back-end isn't applicable here so a Raspberry Pi specific back-end was written for Weston. Here's Pekka's description for how this new back-end functions:
This backend uses the DispmanX API to initialise the display, and create an EGLSurface, so that GLESv2 rendering is shown on the "framebuffer". No X server is involved. All compositing happens through GLESv2.These Weston patches are currently floating on the Wayland-devel list.
The created EGLSurface is specifically configured as buffer content preserving, otherwise Weston wouuld show only the latest damage and everything else was black. This may be sub-optimal, since we are not alternating between two buffers, like the DRM backend is, and content preserving may imply a fullscreen copy on each frame.
Page flips are not properly hooked up yet. The display update will block, and we use a timer to call weston_output_finish_frame(), just like the x11 backend does.
This backend handles the VT and tty just like the DRM backend does. While VT switching works in theory, the display output seems to be frozen while switched away from Weston. You can still switch back.
Seats and connectors cannot be explicitly specified, and multiple seats are not expected.
Udev is used to find the input devices. Input devices are opened directly, weston-launch is not supported at this time. You may need to confirm that your pi user has access to input device nodes.
The Raspberry Pi backend is built by default. It can be build-tested without the Raspberry Pi headers and libraries, because we provide stubs in rpi-bcm-stubs.h, but such resulting binary is non-functional. If using stubs, the backend is built but not installed.
VT and tty handling, and udev related code are pretty much copied from the DRM backend, hence the copyrights. The rpi-bcm-stubs.h code is copied from the headers on Raspberry Pi, including their copyright notice, and modified.