This repository has been archived by the owner on Nov 1, 2021. It is now read-only.
wlroots 0.14.0
Release highlights:
- Renderer refactoring work is well underway: everything now uses the new infrastructure under-the-hood except the DRM backend's primary plane.
- The Pixman renderer has been merged, alongside new allocators (shared memory for Wayland/X11 and DRM dumb buffers).
- Session management is now completely offloaded to libseat.
- Support for the xdg-activation-v1 protocol has been merged.
Full changelog
Aleksei Bavshin (2):
xwayland: query window PIDs via XResQueryClientIds
xwayland: remove _NET_WM_PID handler
Benoit Gschwind (1):
Document the wlr_output_layout_get function
Brian McKenna (1):
Flush events in virtual pointer example
Isaac Freund (1):
gtk-primary-selection: drop support
Kenny Levinsen (12):
backend/session: Remove logind backend
ci: Add libseat-dev to alpine
backend/session: Make libseat mandatory
backend/session: Remove direct backend
backend/session: Remove noop backend
backend/session: Remove session_impl
backend/session: Close fd in wlr_session_close_file
backend/session: Close remaining devices on destroy
backend/drm: Do not require mode commit on enable
meson: Make private static library symbols local
ci: Build both static and shared
Revert "meson: Make private static library symbols local"
Roman Gilg (1):
backend: move get_drm_fd to public interface
Ryan Farley (2):
util/uuid: replace with util/token, remove libuuid
xwayland/sockets: ensure proper permissions
Simon Ser (135):
build: bump version to 0.14.0
render: drop wlr_renderer_blit_dmabuf
render: remove wlr_texture_to_dmabuf
render: drop support for ellipses
Remove WLR_HAS_XCB_ERRORS
build: disable libseat subproject server and man pages
build: remove wayland-scanner fallback
backend/libinput: terminate display on error
backend/drm: terminate display on drmHandleEvent failure
backend/x11: check for connection errors
render/gles2: prevent imported DMA-BUF textures from being mutated
examples/rotation: error out on invalid option
readme: mark libseat as mandatory dep
buffer: introduce wlr_buffer_get_shm
render: introduce shared memory allocator
backend/wayland: add support for wl_shm buffers
backend/wayland: fallback to wl_shm on missing render node
examples: use wlr_output_preferred_mode
examples: remove dependency on GLES2 for compositor examples
Stop specifying xkb_rule_names
linux-dmabuf-v1: drop some from_resource helpers
linux-dmabuf-v1: split params and buffer
render/gles2: log when creating renderer
output: correctly handle outputs without a test() impl
render/pixman: cleanup when renderer is destroyed
render/gles2: destroy textures on renderer teardown
render/pixman: destroy textures on renderer teardown
render: remove NULL checks in wlr_texture_impl.destroy
readme: update and cleanup xcb deps
readme: mention IRC channel
readme: use webchat link for IRC channel
render: unconditionally read WLR_RENDERER
Log drmGetDevices2 error code
xcursor: quiet debug log
backend/drm: fail instead of stripping a modifier
backend/drm: clarify error message on drmModeAddFB fallback
backend/drm: destroy when parent is destroyed
backend/session: add wlr_device.events.remove
backend/drm: destroy backend on udev remove event
backend/drm: carry on when disabling a CRTC fails
Revert "backend/drm: fail instead of stripping a modifier"
buffer: add format param to get_data_ptr
render/pixman: check format is supported in create_buffer
Log when WLR_BACKENDS/WLR_RENDERER is set
backend/drm: reword wlr_renderer failure message
render: remove wlr_ prefix from wlr_renderer_autocreate_with_drm_fd
render/allocator: add allocator_autocreate_with_drm_fd
backend/drm: fix allocator DRM FD on multi-GPU setups
render/gles2: assert texture comes from the same renderer
backend/drm: take wlr_output_state as arg in crtc_commit
backend/drm: take wlr_output_state as arg in commit callers
backend/drm: fill scratch wlr_output_state for set_mode
backend/drm: remove wlr_drm_crtc.pending_modeset
backend/drm: remove wlr_drm_crtc_state.active
backend/drm: remove wlr_drm_crtc_state.mode
backend/drm: remove mode arg from drm_connector_init_renderer
backend/drm: remove mode arg from drm_connector_set_mode
backend/drm: take output state arg in drm_connector_commit_buffer
backend/drm: take a wlr_drm_connector instead of a wlr_output
backend/drm: introduce drm_connector_commit_state
backend/headless: dup DRM FD in wlr_headless_backend_create_with_renderer
build: move wayland-protocols dep to protocol/
render/egl: query and display EGL driver name
render: remove wlr_texture_get_size
render/gles2: remove unnecessary EGL import ext checks
linux-dmabuf-v1: implement wlr_buffer
render/gles2: add gles2_texture_create
render: introduce wlr_texture_from_buffer
render/gles2: implement texture_from_buffer
buffer: use wlr_texture_from_buffer for DMA-BUFs
screencopy-v1: stop using wlr_client_buffer
backend/drm: use wlr_texture_from_buffer
render/gbm_allocator: add support for gbm_bo_get_fd_for_plane
render/pixman: avoid sqrt() in render_quad without rotation
render: relax stride check in wlr_texture_from_pixels
backend: introduce wlr_backend_finish
backend: automatically create renderer
backend: automatically create allocator
backend/wayland: use common renderer and allocator
backend/headless: use common renderer and allocator
backend/x11: use common renderer and allocator
readme: add link to IRC web client
readme: fix broken IRC web client link
contributing: add link to IRC web chat
render/gles2: fix texture cleanup on destroy
render/drm_dumb_allocator: check for DRM master
render/allocator: add wlr_allocator.buffer_caps
backend: stop using renderer to get the buffer type
render: disallow wlr_renderer_destroy while rendering
render: add wlr_renderer_begin_with_buffer
output: add get_cursor_formats and get_cursor_size to interface
backend/wayland: implement get_cursor_formats
backend/drm: implement get_cursor_formats and get_cursor_size
backend/drm: remove format arg from drm_plane_init_surface
backend/drm: introduce drm_plane_pick_render_format
output: take a wlr_buffer in set_cursor
backend/drm: move cursor fields to wlr_drm_connector
xdg-activation-v1: new protocol implementation
xdg-activation-v1: add token timeout
surface: allow placing subsurfaces below parent
buffer: replace get_data_ptr with {begin,end}_data_ptr_access
render/gles2: add support for DATA_PTR buffers in texture_from_buffer
render/pixman: implement texture_from_buffer
buffer: introduce wlr_shm_client_buffer
buffer: use wlr_texture_from_buffer for wl_shm_buffer
output: add get_primary_formats to interface
output: split output_pick_cursor_format
output: make attach_render and rollback_render optional
backend/headless: remove swapchain
backend/x11: implement get_dmabuf_primary_formats
backend/x11: remove swapchain
backend/wayland: implement get_dmabuf_primary_formats
backend/wayland: remove swapchain
matrix: deprecate wlr_matrix_projection
screencopy-v1: use wlr_renderer_begin_with_buffer
output: use wlr_renderer_begin_with_buffer for cursor
backend/x11: use wlr_renderer_begin_with_buffer for cursor
render: drop wlr_ prefix from wlr_renderer_bind_buffer
render: add missing arg to wlr_renderer_impl.get_buffer_caps
backend/drm: use atomic test-only commits for modifier fallback
backend/drm: allow committing a buffer and a mode together
backend/drm: introduce drm_connector_alloc_crtc
backend/drm: allocate a CRTC in drm_connector_commit_state
backend/drm: allocate a CRTC in drm_connector_test
backend/drm: move drm_connector_set_pending_fb up
backend/drm: move session check from test_buffer to drm_connector_test
backend/drm: remove test_buffer
output: reset back buffer on failed commit
backend/drm: populate cursor plane's current_fb
backend/session: use drmIsKMS
backend/session: use DRM_PRIMARY_MINOR_NAME
build: simplify version script
xdg-activation-v1: fix wlr_xdg_activation_v1_create error path
backend: add output state allow-lists
Revert "build: workaround for meson disabler object not working with if not"
Simon Zeni (22):
render: rename get_dmabuf_render_formats into get_render_formats
buffer: introduce wlr_buffer_get_data_ptr
render: introduce pixman renderer
renderer: create pixman renderer if getting drm fd failed
examples: introduce quads example
examples/rotation: remove unused includes
render/gles2: introduce wlr_gles2_renderer_create_with_drm_fd
render: introduce WLR_RENDERER in wlr_renderer_autocreate_with_drm_fd
render/egl: fail on EGL_MESA_device_software
render/pixman: implement preferred_read_format
pixman: implement read pixels
types/wlr_screencopy_v1: log error on read pixels failure
render/gbm_allocator: make wlr_gbm_allocator_create return a wlr_allocator
render/shm_allocator: make wlr_shm_allocator_create return a wlr_allocator
types/wlr_buffer: introduce wlr_buffer_cap
backend: introduce backend_get_buffer_caps
render: introduce renderer_get_render_buffer_caps
render/allocator: introduce wlr_allocator_autocreate
backend: use wlr_allocator_autocreate
render/gbm_allocator: duplicate drm fd during creation process
render: add DRM dumb buffer allocator
Update IRC links
Stephan Hilb (1):
drm: check for PRIME support
Tadeo Kondrak (1):
backend/x11: add support for shm buffers
Thomas Weißschuh (1):
xwayland: actually use Xwayland from pkg-config
Tobias Stoeckmann (1):
xcursor: fix CVE-2013-2003
Tudor Brindus (3):
xwm: use correct list link when iterating over `unpaired_surfaces`
xwm: implement _NET_CLIENT_LIST_STACKING
xwm: prevent X11 clients from blowing our stack by opening too many windows
Yuya Nishihara (3):
Revert "xcursor: use strncat instead of strncpy"
xcursor: use memcpy() to append string of known size
virtual_keyboard: Emulate key release events on destroy
ayaka (1):
render: make GLES2 renderer optional
nyorain (1):
render: Assert that texture dimensions are > 0
tomKPZ (1):
Fix stuck keys on X11 backend
zccrs (4):
Make the xdg_popup_get_position to public
render/gles2: add wlr_renderer_is_gles2
render/pixman: add wlr_*_is_pixman and wlr_pixman_texture_get_image
render: add get native paint target of renderer
Changes for packagers
- session: Remove logind backend (#2786) and session: Remove direct and noop backends (#2839): wlroots now depends on libseat for logind support (instead of depending on systemd/elogind) and for daemon-less operation.
- util/uuid: replace with util/token, remove libuuid (#2833): wlroots no longer depends on libuuid.
- render: make GLES2 renderer optional (ed19248): GLES2 is now an optional dependency (note, many compositors still depend on GLES2)
Breaking changes for compositors
These changes can affect most compositors.
- render: drop
wlr_renderer_blit_dmabuf
(#2789): this functionality can be replaced withwlr_renderer_bind_buffer
- render: remove
wlr_texture_to_dmabuf
(#2806): instead, usewlr_buffer_get_dmabuf
- render: drop support for ellipses (#2808): instead, use rects or roll your own OpenGL shaders
- Drop gtk-primary-selection support (#2460): this protocol has been superseded by the standard primary-selection protocol
- Remove
WLR_HAS_XCB_ERRORS
(#2825) - session: Remove logind backend (#2786): libseat is now required for logind.
WLR_HAS_SYSTEMD
andWLR_HAS_ELOGIND
have been removed. - session: Remove direct and noop backends (#2839): libseat is now required unconditionally.
WLR_HAS_LIBSEAT
has been removed.wlr/session/interface.h
has been removed. - util/uuid: replace with util/token, remove libuuid (#2833):
WLR_HAS_XDG_FOREIGN
has been removed, because xdg-foreign support is now always enabled. - render: remove
wlr_texture_get_size
(#2922): compositors can just access thewlr_texture.width
andheight
fields directly. - surface: allow placing subsurfaces below parent (#2948):
wlr_surface.subsurfaces
has been split into two lists:subsurfaces_above
andsubsurfaces_below
. - matrix: deprecate
wlr_matrix_projection
(#2846)
Breaking changes for custom backends and renderers
These changes are unlikely to affect compositors that don't have a custom
backend or renderer.
- render: rename
get_dmabuf_render_formats
intoget_render_formats
(#2858) - linux-dmabuf-v1: split params and buffer (#2848):
wlr_dmabuf_v1_buffer_from_params_resource
andwlr_linux_dmabuf_v1_from_resource
have been removed. - buffer: add format param to
get_data_ptr
(#2894). wlr_allocator_autocreate
(#2884): renderers must implement the newget_render_buffer_caps
function.- Cache and re-use DMA-BUF textures (#2851): renderers must now implement the new
wlr_renderer_impl.texture_from_buffer
function to import client DMA-BUFs. - render/pixman: avoid copy when creating textures (#2892): renderers must now implement the new
wlr_renderer_impl.texture_from_buffer
function to import client shared memory buffers.