wlroots 0.18.0
Alexander Orzechowski (54):
output: Drop transform matrix
render/gles2: Don't track has_alpha in pixel_format
renderer: Drop wlr_renderer_begin
output: Drop wlr_output_attach_render
output: Drop back_buffer
render: Drop rendering_with_buffer
render/gles2: Lazily create buffer fbo
renderer/gles2: Bail rendering to external buffers when binding them
render/gles2: Destroy textures first
render/gles2: Don't double import dmabuf
render/gles2: Don't track image in texture
render/gles2: Don't attach texture as buffer addon
render/gles2: Inline texture invalidation
wlr_texture: Introduce wlr_texture_read_pixels
wlr_texture: Introduce wlr_texture_read_pixels_options helpers
render/pixman: Implement texture_read_pixels
render/gles2: Implement texture_read_pixels
render/vulkan: Implement texture_read_pixels
wlr_texture: Introduce wlr_texture_preferred_read_format
render: Implement texture_preferred_read_format
backend/x11: Use wlr_texture_read_pixels
screencopy_v1: Use new read pixels API
render: Nuke old read pixels API
renderer: Drop buffer binding
swapchain: Add wlr_swapchain_has_buffer
wlr_scene: Track output damage separately
wlr_scene: Use wlr_damage_ring_rotate_buffer()
wlr_scene: Don't damage whole damage ring when exiting direct scanout
wlr_scene: Apply output damage once
wlr_scene: fix transformed outputs backend damage clearing
wlr_damage_ring: Fix inverted conditional
output: Drop pending state
wlr_damage_ring: Replace wlr_damage_ring_rotate_buffer with original list impl
backend/drm: Init connector after we try to allocate a crtc for it
backend/drm: Remove dead code
backend/drm: Ensure a primary fb is available when configuring an output
wlr_scene: Call surface enter scale events on surface create
wlr_scene: Assert that buffer returned from swapchain is the right size
wlr_scene: Decide when to commit output damage with buffers in damage ring
wlr_scene: Add support for custom swapchains
wlr_scene: Fix crash when committing NULL buffer
wlr_scene: Track damage of null textures
screencopy: Remove dead code
screencopy: Add some logging
wlr_scene: Fix WLR_SCENE_DEBUG_DAMAGE_HIGHLIGHT output damage
wlr_scene: Schedule new frame for WLR_SCENE_DEBUG_DAMAGE_HIGHLIGHT in output commit handler
wlr_scene: Set `wlr_damage_ring_set_bounds` earlier
wlr_scene: Add WLR_SCENE_HIGHLIGHT_TRANSPARENT_REGION env
docs: Add notes about WLR_SCENE_DISABLE_VISIBILITY effectively disabling direct scanout.
wlr_scene: send preferred buffer transform
wlr_scene: Drop map/unmap listeners from xdg_shell
wlr_scene: Drop map/unmap listeners from drag_icon
wlr_scene: Drop map/unmap listeners from layer_shell_v1
wlr_scene: Don't disable scene nodes at creation time
Andri Yngvason (1):
Create & implement transient seat protocol
Austin Shafer (2):
allocator: remove backend parameter in allocator_autocreate_with_drm_fd
linux_dmabuf_v1: allow callbacks for checking dmabuf import
Biswapriyo Nath (1):
render/vulkan: Fix clang compiler error in 32 bit ARM Android
Chloé Vulquin (1):
xcursor: catch theme inheritance loops
Consolatis (2):
scene: do not reset scene_buffer state on buffer release
xwayland: remove saved_{width,height}
David Turner (6):
render/pixman: fix flipped transforms
render/pixman: Fix source crop
render/pixman: Improve transform performance
render/pixman: half-pixel shift to match GPUs
render/pixman: Remove half-pixel shift
render/pixman: Fix non-uniform scale with rotation
Félix Poisot (1):
render/vulkan: correct sRBG gamma expansion in shader
Grigory Kirillov (1):
xwayland: add support for _NET_WM_WINDOW_TYPE_DESKTOP atom
Guido Günther (2):
input-method: Simplify resetting of input state
gles2: Avoid crash when glGetInteger64vEXT is missing
He Yong (1):
tinywl: destroy wlr_renderer, wlr_allocator and wlr_cursor
Ian Forbes (1):
drm/backend: add support for cursor hotspots
Ilia Bozhinov (2):
seat: add serials to touch up events
xwayland: add a size-safe wrapper for xcb_send_event
Isaac Freund (14):
keyboard: fix type of wlr_keyboard_modifiers.group
input-device: unconfuse tablet naming
wlr_tablet_v2: fix destroy listener name
mailmap: map Isaac's old email to the new one
cursor-shape-v1: expose tablet tool in event
tablet_v2: destroy tablet seats on manager destroy
wlr_shm: make wl_global public
idle-notify: make wl_global public
single-pixel-buffer: make wl_global public
security-context: constify lookup_client()
scene: constify subsurface_tree_set_clip()
touch: make cancel functions take a wlr_seat_client
scene: ensure layer surface usable area >0
wlr_surface: update get_root_surface() docs
JiDe Zhang (1):
output: reset hardware_cursor on failure
John Lindgren (4):
xwayland: add map_request signal
util: fix non-linear behavior of wlr_box_closest_point()
vulkan: perform sRGB-to-linear conversion correctly for premultiplied values
util: let wlr_box_closest_point() be within 1/65536 of right/bottom edge
Kenny Levinsen (22):
backend/drm: Free current_modeinfo on error
backend/drm: Remove erroneous free
drm-lease-v1: Free the wlr_drm_lease_v1 on error
xwayland/xwm: Avoid zero-size allocaiton
xwayland/xwm: Allocate to the right variable
render/drm_format_set: Clean up on union failure
render/vulkan: Avoid double-free on calloc error
gamma-control-v1: Remove dead variable assignment
xwayland/xwm: Initialize client_id_cookie
wlr_gamma_control: Store gamma size when creating control
backend/drm: Skip multi-gpu outputs in backend tests
backend/drm: Free drm device name on error
wlr_scene: Skip direct scanout on color transform
editorconfig: Unset maximum line length for .git
wlr_output: Add adaptive_sync_supported
backend/drm: Use cached vrr support flag
render/vulkan: Recycle memory maps for stage spans
render/vulkan: Unmap span before freeing memory
render/vulkan: Use new span map handling for 3dlut
render/vulkan: Unref color transform on pass submit
render/vulkan: Fix 3dlut stage span map offset
render/vulkan: vkMapMemory stage spans up front
Kirill Primak (63):
input-inhibitor: drop
xdg-{shell,decoration}: improve events
layer-shell: emit new_surface event at the proper time
subcompositor: don't map unadded subsurfaces
subcompositor: emit new_subsurface immediately
output: fix display destroy listener double removal
compositor: deprecate wlr/types/wlr_region.h
Revert "subcompositor: emit new_subsurface immediately"
backend/x11: check buffer format in output_test()
backend/x11: don't send ConfigureRequest with the same size
xwm: don't do anything except mapping on MapRequest
tinywl: don't send configures to uninitialized xdg_surfaces
tinywl: check initialized instead of initial_commit
tinywl: depend on the server xdg-shell header
render/vulkan: fix possible double free
render/drm_format_set: fix possible leak on realloc error
backend/x11: handle touchpoint allocation failure
xwayland: close pipe fds on set_cloexec() error
security-context-v1: fix possible leaks on wl_client_create() and state copying errors
single-pixel-buffer: send wl_buffer.release
layer-shell: forbid set_size with values ≥INT32_MAX
xwayland/xwm: associate even on xcb_get_property() failure
compositor: introduce wlr_surface_reject_pending()
compositor: don't get buffer from pending buffer resource too early
backend/drm: use wlr_drm_backend.name for fd cloning
cursor: fix and simplify region mapping
compositor: drop wlr_surface.external_damage
compositor: don't handle size or viewport src change in surface_update_damage()
xdg-shell: drop automatic surface configuration
pointer-constraints: handle inert pointer resources correctly
ext-foreign-toplevel-list-v1: improve/fix update_state()
backend/drm: set adaptive_sync_status again
viewporter: fix "has buffer" check
viewporter: fix outdated docs
Avoid using wayland-{client,server}.h
alpha-modifier-v1: add a missing NULL check in wlr_alpha_modifier_v1_get_surface_state()
scene: fix double scaling of opaque region for blend mode optimization
xdg-toplevel: allow edge_none for resizing
output: extract hardware cursor disabling logic
output: disable hardware cursor when falling back to software
render/vulkan: fix texture clip region leak
render/vulkan: free pipeline layouts on destroy
render/vulkan: free render format setups on destroy
render/vulkan: don't free a descriptor set from an already destroyed lut3d dummy pool
backend/x11: send correct keyboard layout
fullscreen-shell: deprecate
backend/drm: add libliftoff log handler
backend/drm: avoid "maybe uninitialized" warning
backend/wayland: store output xdg_toplevel title
backend/wayland: don't request a state too early
backend/wayland: don't ack a configure event too early
backend/wayland: commit null buffer only on unmap
backend/wayland: improve/fix xdg_toplevel (re-)initialization
backend/wayland: don't ack outdated configures
xdg-popup: don't emit parent's new_popup signal too early
xdg-popup: validate positioner on reposition request
input-method: unmap popup surfaces on deactivate
backend/wayland: dispatch remote display when waiting for a configure event
backend/wayland: destroy ignored tablet proxies
backend/drm: store drm prop lists as structs
backend/wayland: introduce wlr_wl_output_set_app_id()
Fix __VA_OPT__ macro invocations
meson: bump wayland dep version to 1.23
Leo Li (2):
render/pixel-format: Move has_alpha into it's own array
render/gles2: Fixup dropping has_alpha from pixel_format
Leonardo Hernández Hernández (4):
add an option to enable/disable libliftoff
tinywl: don't try to remove xdg-shell-protocol.c
tinywl: split compilation into two steps
tinywl: allow specify pkg-config binary
Manuel Stoeckl (13):
xdg-toplevel: check that title provided actually is UTF-8
render/vulkan: track and use _UNORM variants of _SRGB formats
render/vulkan: extract shm texture format query into function
render/vulkan: detect which _UNORM formats support _SRGB views
render/vulkan: create VkImage with option for _SRGB view, if possible
render/vulkan: constify vulkan_format_props_find_modifier
render/vulkan: use _SRGB image view when possible
render/vulkan: add dummy 3d lookup table to output shader
render/vulkan: add lut3d output shader option
render/vulkan: create plain framebuffers on demand
render/vulkan: add support for output color transforms
wlr_scene: add color transform argument for rendering
renderer: add field to indicate color transform support
MaxVerevkin (1):
fix outdated comment in wlr_output.h
Paul Cercueil (1):
Add more POSIX compliance macros to fix uClibc support
Roman Gilg (1):
render/pixman: add wlr_pixman_renderer_get_buffer_image()
Sarunas Valaskevicius (1):
Fix disappearing menus in QT apps
Sergei Trofimovich (1):
backend: fix build against upcoming `gcc-14` (`-Werror=calloc-transposed-args`)
Simon Ser (213):
tinywl: fix wlroots dependency constraint in Makefile
build: bump version to 0.18.0-dev
render: drop legacy render pass
output/cursor: drop legacy rendering API
render/gles2: drop legacy rendering API
render/pixman: drop legacy rendering API
render/vulkan: drop legacy rendering API
render: drop legacy rendering API
util/transform: move over wl_output_transform helpers
util/transform: add wlr_output_transform_coords()
backend/session: take wl_event_loop instead of wl_display
output-layout: take wl_display in constructor
output: take wl_display in wlr_output_create_global()
output: setup display destroy listener in wlr_output_create_global()
output: take wl_event_loop in wlr_output_init()
Cleanup wlr_matrix.h includes
matrix: deprecate
viewporter: rename state var in viewport_handle_surface_commit()
viewporter: listen to client_commit
viewporter: fix src buffer bounds check
render/vulkan: drop current_command_buffer
render/egl: fallback to GBM FD if EGLDevice is not available
backend/drm: use DRM_IOCTL_MODE_CLOSEFB instead of RMFB
render/gles2: check external-only flag in get_or_create_buffer()
damage_ring: add wlr_damage_ring_rotate_buffer()
backend/drm: split wlr_drm_fb related functions into separate file
backend/drm: move drm_plane_finish_surface() to drm.c
backend/drm: remove wlr_drm_renderer.backend
render/gles2: reword wlr_gles2_texture comments
output: drop stale references to wlr_output_attach_render()
render/gles2: document EGL context gotchas
render/gles2: save/restore context when creating/submitting a render pass
output: replace wlr_render_timer arg with wlr_buffer_pass_options
render: disable linux-dmabuf without DRM FD
cursor: send surface scale events
compositor: drop surface precommit event
render/gles2: add wlr_gles2_renderer_get_buffer_fbo()
build: automatically compute soversion
ci: drop stale dependencies
backend/drm: add wlr_drm_backend_get_parent()
linux-dmabuf-v1: ignore scanout output for secondary DRM backends
backend/drm: return secondary backend DRM FD
cursor: fix initial cursor position for new outputs
cursor: drop unnecessary commented code
xcursor: fix duplicate cursor check check in load_callback()
input-method-v2: drop unnecessary variable and cast
output-layout: fix missing global for outputs with a custom mode
compositor: reset wlr_surface.current.committed on commit
pointer-constraints-v1: add cursor_hint.enabled
pointer-constraints-v1: reset committed on commit
compositor: adjust surface_state_move() comment
compositor: remove unnecessary wlr_surface.has_buffer
compositor: fix wlr_surface_has_buffer() doc comment
compositor: add wlr_surface_state_has_buffer()
compositor: add wlr_surface_synced
compositor: add wlr_surface_role.client_commit
xdg-shell: use wlr_surface_synced for wlr_xdg_surface
xdg-shell: use wlr_surface_synced for toplevel
xdg-shell: use wlr_surface_synced for popups
presentation-time: use wlr_surface_synced
subcompositor: use wlr_surface_synced
xdg-decoration: use wlr_surface_synced for toplevel
layer-shell-v1: use wlr_surface_synced
pointer-constraints-v1: use wlr_surface_synced
content-type-v1: use wlr_surface_synced
session-lock-v1: drop negative buffer size checks
session-lock-v1: use wlr_surface_synced
tearing-control-v1: synchronize state with surface
presentation-time: drop wlr_presentation arg
scene: drop wlr_scene_set_presentation()
backend/drm: save current refresh rate
region: add docs for wlr_region_scale_xy() and wlr_region_confine()
wl_drm: add deprecation notice
render: stop auto-creating wl_drm
Fix bool return types
xdg-shell: assert that configure events carry positive or zero sizes
pointer: add support for axis relative direction
seat/pointer: add support for axis_relative_direction event
backend/libinput: populate pointer axis relative direction
backend/wayland: populate pointer axis relative direction
backend/multi: emit destroy signal before destroying child backends
backend: make attempt_drm_backend() return the primary backend
backend: destroy multi backend when primary backend is
backend: stop calling wl_display_terminate()
backend/headless: take wl_event_loop instead of wl_display
backend/libinput: drop wl_display argument
backend/wayland: take wl_event_loop instead of wl_display
backend/x11: take wl_event_loop instead of wl_display
backend/drm: drop wl_display argument
backend/multi: take wl_event_loop instead of wl_display
backend: take wl_event_loop instead of wl_display in wlr_backend_autocreate()
scene: release shm buffers once uploaded
backend/drm: add support for atomic tearing page-flips
linux-dmabuf-v1: fix include guard name
linux-dmabuf-v1: switch to stable
linux-dmabuf-v1: bump to v5
backend/session: add docs
switch: add docs
backend/drm: drop unnecessary _XOPEN_SOURCE
backend/drm: fix fb_damage_clips_arr memory leak
backend/drm: add drm_page_flip_create()
backend/drm: drop wlr_drm_backend arg from create_mode_blob()
backend/drm: add destroy_blob()
backend/drm: use early return in handle_session_active()
backend/drm: extract logic to build current connector state
backend/drm: call get_drm_connector_props() when creating connector
backend/drm: atomically reset state after VT switch
backend/drm: move restore logic to drm.c
backend/drm: fix typo in restore_drm_device() comment
backend/drm: skip reset after VT switch if possible
util/log: drop unnecessary _XOPEN_SOURCE
Define _POSIX_C_SOURCE globally
scene: ignore duplicate wlr_scene_output_layout_add_output() calls
buffer: add single-pixel-buffer-v1 special case in buffer_is_opaque()
backend/drm: fix broken link to KMS property docs
backend/drm: don't destroy previous DRM master blobs
render/egl: add save_context parameter to wlr_egl_make_current()
render/egl: drop wlr_egl_save_context()
render/egl: drop wlr_egl_is_current()
backend/drm: use output_pending_enabled()
output: use output_pending_enabled() in output_basic_test()
backend/drm: fix primary FB check
backend/drm: move primary FB check after pending buffer logic
backend/drm: improve CRTC reallocation pretty printing
backend/drm: use CRTC pointers instead of indices in realloc_crtcs()
input-device: add doc comments
pointer: drop enum wlr_axis_source
pointer: use enum wl_pointer_button_state
pointer: drop enum wlr_axis_relative_direction
pointer: drop enum wlr_axis_orientation
backend/libinput: use NULL to indicate missing device name
tablet-v2: only send id event is vendor is set
input-device: fix WLR_INPUT_DEVICE_TABLET_TOOL doc comment
cursor: use switch for input device type
backend/x11: add error logging to query_dri3_drm_fd()
backend/drm: fix queued cursor FB overwritten with NULL
backend/drm: clear pending cursor FB in drm_connector_set_cursor()
backend/drm: add drm_fb_copy()
backend/drm: track cursor FB in wlr_drm_connector_state
tinywl: fix wlr_seat use-after-free on exit
backend/drm: ensure CRTC is set up in drm_connector_state_init()
cursor-shape-v1: handle inert tablet tool client
tablet-tool: add usb_vendor_id and usb_product_id to wlr_tablet
tablet-v2: use wlr_tablet.usb_{vendor,product}_id
input-device: drop wlr_input_device.{vendor,product}
backend/libinput: check bus type before setting tablet USB IDs
scene: simplify scene_node_update() condition when setting buffer
compositor: handle renderer destroy
compositor: use compositor to get renderer
compositor: add wlr_compositor_set_renderer()
buffer: listen to renderer destroy in wlr_client_buffer
output: listen to renderer destroy in wlr_output_cursor
scene: add scene_buffer_set_texture()
scene: listen to renderer destroy in wlr_scene_buffer
backend/drm: add wlr_drm_connector_state.connector
backend/drm: extract post-commit logic into functions
backend/drm: drop VRR debug message
backend/drm: track pending atomic state in wlr_drm_connector_state
backend/drm: add infrastructure for device-wide commits
backend/drm: rework struct wlr_drm_page_flip for multiple connectors
backend: add wlr_backend_{test,commit}()
backend/multi: implement wlr_backend_impl.{test,commit}
output-management-v1: add wlr_output_configuration_v1_build_state()
backend/drm: unify connector test and commit codepaths
backend/drm: drop drm_device_state_init_single()
backend/drm: move post-commit disable logic to drm_connector_apply_commit()
backend/drm: add drm_connector_prepare()
backend/drm: fix adaptive sync no-op changes
backend/drm: implement wlr_backend_impl.{test,commit}
output-swapchain-manager: new helper
backend/libinput: drop outdated gesture cap logging
backend/libinput: drop stray space
examples: send xdg_toplevel configure events
tablet-tool: document event data
xwayland: add a few docs
render: unify getter for texture formats
render: drop wlr_renderer_get_dmabuf_texture_formats()
renderer: replace get_render_buffer_caps() with struct field
render/color: introduce wlr_color_transform
backend/drm: handle errors when fetching DRM name/version
render/color: split off lcms2 code
ci: convert last remnant from "meson setup" migration
alpha-modifier-v1: new protocol implementation
scene/surface: add support for alpha-modifier-v1
render/vulkan: don't use UNDEFINED layout for imported DMA-BUFs
render/allocator: document struct wlr_allocator
seat/keyboard: drop unnecessary check in handle_keyboard_keymap()
build: override versioned name
backend/drm: add support for libliftoff v0.5.0
render/color: add fallback stub when LCMS2 is disabled
ci: add debugoptimized GCC build
render/drm_syncobj: introduce wlr_drm_syncobj_timeline
render/drm_syncobj: add wlr_drm_syncobj_timeline_import()
render/drm_syncobj: add helpers to wait for timeline points
linux-drm-syncobj-v1: new protocol implementation
backend/session: log when loading WLR_DRM_DEVICES
backend/session: use "KMS" instead of "DRM" in log messages
build: check eglext.h header version
Switch to stable tablet-v2 protocol
render/color: fix return value type
backend/drm: fix return value type in create_drm_connector()
backend/drm: fix swapped calloc() arguments in get_or_create_layer()
Use standard __VA_OPT__ instead of GNU's ##__VA_ARGS__
build: build with C23 if supported
build: require libinput v1.19
shm: add support for wl_shm version 2
backend/wayland: use wl_shm.release if available
render: init wl_shm version 2
build: use auto_features=disabled for libdrm subproject
backend/drm: add support for SIZE_HINTS property
ci: use tinywl built by Meson
scene: only skip bottom-most black rects with fractional scaling
build: bump version to 0.18.0
Simon Zeni (4):
types/output: emit destroy event before destroying global
xcursor/wlr_xcursor: properly clean xcursor in case of realloc failure in load_callback
backend/libinput: avoid potential NULL access in wlr_libinput_get_device_handle
backend/x11: don't exit on dri3 DRM FD query failure
Vaxry (2):
xwayland: add wlr_xwayland_get_xwm_connection
types/text-input-v3: assert on invalid _leave() and _enter() calls
Violet Purcell (2):
Version pkgconfig, headers, and library for parallel installation
tinywl: update for versioned pkg-config file
columbarius (1):
ext-foreign-toplevel-list-v1: new protocol implementation
groveer (2):
wlr_pointer_gestures_v1: init destroy signal
wlr_pointer_gestures_v1: emit destroy signal in destroy function
nerdopolis (1):
backend/libinput: Fix call of handle_libinput_readable() when WLR_LIBINPUT_NO_DEVICES is set
novenary (2):
xwm: avoid restacking managed surfaces above OR surfaces
xwm: ensure stack list only contains mapped managed surfaces
pastel raschke (2):
input-method-v2: free current strings on commit
input-method-v2: validate commit serial