Skip to content
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 software 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 below.

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