Marius Vlad
May 25, 2023
Reading time:
Weston is a Wayland compositor designed for correctness, reliability, predictability, and performance.
Last week, on May 17, Weston 12.0 was released. Here's a look at some of the changes that have landed in this new version.
In terms of features we have two new backends, support for multiple scanout devices, and have added a couple of new protocol implementations. Alongside these features, we also have been adding multiple fixes and internal changes that would further facilitate integration of functionality like color management or the ability to load up multiple backends at the same time.
The backend-drm has seen quite a lot of updates and changes: plane rotation, alpha, and HDMI content type properties have been integrated. Depending on the client's content buffer, the compositor can now leverage the properties to fully make use of the available display hardware capabilities.
Furthermore, support for multiple GPUs as scanout devices (KMS) has landed in this version; support which can be enabled by passing additional devices when starting up the compositor.
As an alternative for parsing EDIDs, we make use of the libdisplay-info library. We now make use of writeback connectors when taking a screenshot, alongside with the backend infrastructure to make that work.
Still on the backend-drm, we now check if we can do async page flips, and together with the tearing-protocol implementation we can explicitly support tearing for clients that request that.
As we're heading towards having the ability to load multiple backends, two new ones have seen the day in this new release: backend-vnc, which is similar to backend-rdp, is based on aml and neatvnc libraries. It has TLS support and user authentication. The other backend added is the PipeWire one; it creates a node for each output and like the plugin with the same backend name, it can be used to capture Weston outputs for processing with other applications.
Some further improvements towards multi-head support have been added to the backend-rdp, while backend-headless now makes use of output decorations as to be able to test out the color-lcms plugin. Resizing of windows is now possible for the nested, backend-wayland.
A short-form for loading backends, shells, and renderers has been added, while still supporting the older command invocation. For instance, for the headless backend we can load it with "--backend=headless", for desktop shell, we can load it with "--shell=desktop" while specifying the pixman renderer can now be done with "--renderer=pixman".
With this release, the color-lcms plugin has seen various improvements in color transformation precision and performance.
In this version launcher-logind has been deprecated and disabled by default. As launcher-libseat supports logind, this shouldn't cause any regressions. Our plan is to remove launcher-logind entirely and just rely on launcher-libseat. See our weston 11 release notes which expands further on this matter.
libweston/desktop (formally libweston-desktop) will now take into account a client pending state when there's no buffer attached. It is useful in situations where the clients would like to start from the beginning in a maximized/fullscreen state. Additionally, attaching an empty NULL buffer after previously having one valid will cause a signal emission such that shell clients implementing weston_desktop_api
will be able to handle it accordingly.
Various fixes related to seat handling, selection, and window state as well as supporting the xwayland_shell_v1 protocol have landed in the xwayland component of libweston.
Clients, like simple-egl, have seen a few changes: the ability for testing out tearing, dropped unused linux-dmabuf Y_INVERT
flag, and fractional-scale support have been added, while support for simple-dmabuf-v4l2 was added to handle NV12 devices that combine planes.
For ivi-shell, we now have keyboard focus activation for xdg-shell type of surfaces, similar to how we handle that in desktop and kiosk-shell. A few more updates have landed, as well as bug-fixes. This includes additional signal event handling (output creation and destruction) but also specific signals for controller destruction. Finally, input panel support has been added as well.
Many more bug-fixes have landed across the board: desktop, kiosk and ivi-shell, DRM virtual API (remoting/pipewire plugins) and screen-share module, are some of the components that received bug-fixes.
libweston-desktop DSO has been incorporated into libweston. Linking now with libweston would provide access to the former libweston-desktop library. Users of libweston-desktop would need to adjust their headers to <libweston/desktop.h>
rather than using <libweston-desktop/libweston-desktop.h>
. Otherwise, the API itself remains the same.
Furthermore, for ivi-shell, ivi-layout has seen some API simplification: struct ivi_layout_interface
function pointers have their return values removed, and now contain in-lined asserts for data validation (users would need to provide suitable data).
Some API changes have also landed in this change. It's worth mentioning the functionality to throttle log messages; a family of coordinate vector structures for coordinate pairs (weston_coord
) and a couple of functions to set the Weston output DPMS state to on or off when the compositor state allows it. For the actual API function names and more details, head out to release notes.
15/11/2024
The Linux Foundation Member Summit is an opportune time to gather on the state of open source. Our talk will address the concerns and challenges…
14/11/2024
Today, we are delighted to announce a growing collaboration with MediaTek which will enable Collabora to introduce, improve, and maintain…
06/11/2024
Join us at electronica 2024! In partnership with Renesas, Collabora will be showcasing GStreamer open source AI video analytics on the Renesas…
Comments (0)
Add a Comment