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