wlroots 0.16.0 Release highlights: - Support for the new ext-session-lock-v1, idle-notify-v1 and single-pixel-buffer-v1 protocols has been added. - The scene-graph API has many new features and optimizations. - CPU readback for Vulkan renderer is now implemented. The Vulkan renderer should be more stable. - The input device API has been reworked. - A new `wlr_damage_ring` helper supersedes wlr_output_damage without being as invasive. - Minor version 5 of xdg-shell has been implemented, adding support for popup repositioning, configure bounds and WM capabilities. - High-res scroll wheel events are now supported. - Minor version 4 of wlr_output_management-v1 has been implemented, adding support for managing adaptive sync (VRR). - Internal refactoring of the wl_surface and DRM backend code. Full commit history below. Alexander Orzechowski (84): scene_graph: use wlr_scene_output_send_frame_done scene_graph: remove unused outputs list scene_graph: Simplify computation for offset of new surfaces. This became possible after the usage of wlr_surface_send_frame_done. xdg-foreign: Fix crash on destroy of degenerate surface wlr_output_damage: Use wlr_output_damage_add for wlr_output_damage_add_box wlr_output_damage: Don't schedule a new frame if damage region does not intersect with output types/wlr_output: Handle subpixel hints through output commits seat: Don't finish wlr_keyboard if server was never started wlr_scene: Allow buffer in wlr_scene_buffer to be NULL wlr_scene: Add setter for buffer of a wlr_scene_buffer wlr_scene_output: Send output leave events before destroying the output wlr_scene: Add output_enter/output_leave signals wlr_scene: Fix missing calls to scene_node_update_outputs wlr_scene: Make wlr_scene_render_output private wlr_scene: Add presentation signal for wlr_scene_buffer wlr_scene: Add primary_output property to wlr_scene_buffer wlr_scene: Add frame_done signal for wlr_scene_buffer wlr_scene: Add a way to choose when input interactions happen on a buffer wlr_scene: Add a function to also specify damage when applying a buffer to wlr_scene_buffer wlr_scene: Make scene_buffer_from_node public wlr_scene: Pull scene_node_get_root into a private header wlr_scene: Change out surface specific iterator functions wlr_scene: Make presentation object public wlr_scene: Introduce addons to scene nodes wlr_scene: Refactor wlr_scene_surface to be a helper on top of wlr_scene_buffer wlr_scene: Parse out WLR_SCENE_DEBUG_DAMAGE wlr_scene: Hook up RERENDER logic wlr_scene: Hook up HIGHLIGHT logic wlr_scene: Refactor wlr_scene (the root element) to encase a wlr_scene_tree wlr_scene: Only allow parenting on a wlr_scene_tree wlr_scene: Inline wlr_scene_node_state wlr_scene: Move children list from wlr_scene_node to wlr_scene_tree wlr_scene_buffer: Call output enter/leave after primary_output calculation wlr_scene_buffer: Update primary_output on output destroy wlr_output_commit_state: Make sure to clear the back buffer dmabuf: Don't leak file descriptors on error path wlr_scene: Use direct assignment for damage indicator timestamps wlr_scene: Maintain damage highlight regions per output wlr_scene: Add option to disable direct scanout wlr_scene: Introduce scene_nodes_in_box wlr_scene: Damage scene on node destroy by disabling node wlr_scene: Add per scene node visibility wlr_scene: Rework damage handling wlr_scene_set_buffer_with_damage: Only damage the visible parts of the node wlr_scene: Only send frame done events for visible buffers wlr_scene: Don't render non visible parts of textures/rects wlr_scene: Rewrite direct scan out logic to rely on visibility wlr_scene: Introduce buffer opaque region metadata wlr_scene/surface: Hook through opaque metadata wlr_scene: Calculate output intersections based on node visibility wlr_scene: Account for occlusion by other scene nodes when calculating visibility wlr_scene: Remove unused typedef util/box: Introduce wlr_box_equal util/box: Introduce wlr_fbox_equal wlr_scene: Use wlr_fbox_equals wlr_scene: Use wlr_box_equal Use wl_signal_emit_mutable Remove wlr_signal_emit_safe wlr_scene: Simplify calculate_visibilty option wlr_scene: Only enable black rect optimization if culling is enabled wlr_scene: Cull background wlr_scene: Improve awkward code style util: Introduce env helpers Use env helpers wlr_scene: Initialize region32 before trying to use it wlr_compositor: Use wlr_fbox_equal wlr_scene: Only consider visible parts of the node when culling background wlr_scene: More sanity checking wlr_scene: Don't leak a region32 when texture failed to upload wlr_compositor: Don't leak region32 when calculating opaque region wlr_scene: Consider screen position when culling background wlr_scene: Clarify surface commit frame events pixel_format: RGBA4444 and RGBA5551 have alpha components wlr_scene: Be resilient against overflow conditions wlr_scene: Fix not updating the scene node when setting a new buffer wlr_scene: Ignore disabled outputs wlr_scene: Apply source box translation backend/drm/legacy: Fix whitespace wlr_scene: use wl_container_of() instead of casts wlr_scene: Destroy the texture when setting a new buffer. xwayland: Simplify net_wm_edges_to_wlr wlr_scene: Handle fractional scaling better wlr_scene: Fix texture reuse wlr_scene: Remove duplicate buffer check when submitting a new buffer Antonin Décimo (1): xcursor: check that XDG base directory path is absolute Bernardo Meurer (1): render/vulkan: fix memory type detection Consolatis (4): wlr_scene: Fix scaling with default source_box scene/output_layout: Fix crash in scene_output_layout_output_destroy wlr_virtual_pointer_v1: fix discrete scrolling screencopy-v1: make sure wlr_buffer enum is visible David96 (4): types/wlr_tablet_tool: remove name ambiguity render/vulkan: Implement vulkan_read_pixels render/vulkan: implement vulkan_preferred_read_format render/vulkan: add caching to vulkan_read_pixels Dean (1): Free drmDevice in get_egl_device_from_drm_fd() Dominique Martinet (2): Xwayland: rename notify pipe 'p' to notify_fd Xwayland: use -displayfd instead of USR1 Ferdinand Bachmann (3): types/wlr_pointer_gestures_v1: null-check both focused_surface and focused_client types/wlr_pointer_gestures_v1.c: get client from seat client instead of resource types/seat/wlr_seat.c: fix focused_client being null after seat_client recreation Gentaiii (1): Fixed false allocation failed Guido Günther (4): examples/input-method: Don't crash on NULL surrounding text layer-shell: Make wlr_layer_surface_v1_from_resource public xdg-activation: Deduplicate token creation code seat: Allow to cancel touches Isaac Freund (20): layer-shell: fix type of margins wlr_texture: remove wlr_texture_from_wl_drm() from header tinywl: fix check whether client is focused or not foreign-toplevel: send enter if needed on output bind xdg-output: remove dead code ext-session-lock-v1: new protocol implementation wlr_cursor: constify map to region box arguments wlr_switch: remove WLR_SWITCH_STATE_TOGGLE backend/drm: fix check for no-op commits backend/drm: fix NULL pointer deference due to typo output: fix leak of empty back buffer lock wlr_input_device: remove anon union field Document NULL return value of foo_from_wlr_surface() functions wlr-output-management: Implement version 3 release requests wlr-output-management: fix broken asserts output: clean up after modifierless test failure backend/wayland: report adaptive sync as enabled backend/x11: report adaptive sync as enabled output: remove unknown adaptive sync state wlr-output-management: implement adaptive sync Johan Malm (1): scene/layer_shell_v1.c: fix bug in width/height calculations Johannes (1): examples/egl_common: switch rgba format John Lindgren (6): Revert "Copy xcb_icccm structs into wlroots" wlr_drm_lease_v1: Fix use-after-free in backend_destroy() cursor: Add a more general check for infinite/NaN cursor position cursor: Don't warp to (0,0) when last output is disconnected backend/libinput: Fix SIGSEGV found in low-memory fuzzing render/vulkan: Fix type-punned pointer warning/error Joshua Ashton (1): xwayland: Add support for -force-xrandr-emulation José Expósito (8): build: bump Wayland to v1.21 build: check if libinput supports high-res scroll pointer: transform low-res to high-res axis events backend/libinput: handle high-res scroll events backend/libinput: code style consistency backend/wayland: handle high-res scroll events seat: support high-resolution clients seat: support low-resolution clients Keith Bowes (1): Fixed compiling with FFmpeg 5.0 Kenny Levinsen (8): scene: Add layer_shell_v1 helper meson: soversion arg should be string wlr_{keyboard,pointer,touch}: Update event docs Set mapped before firing map/unmap events xdg_shell: Destroy popups after unmap event scene/layer_shell: Ignore unmapped exclusion zone util/array: Add array_realloc for wl_array wlr_scene: Convert render_list to wl_array Kirill Chibisov (1): meson: use target_machine instead of host_machine Kirill Primak (103): scene/subsurface_tree: fix handling subsurface destruction subcompositor: split out from compositor surface: introduce events.client_commit surface: move impl to types/wlr_{sub,}compositor.c surface: move decl to wlr_{sub,}compositor.h surface: deprecate wlr_surface.h surface: improve role precommit hook compositor: damage the whole buffer on viewport src change subsurface: unlock cached state on commit if desynced output-layout: make wlr_output_layout_get_box() take a box as parameter output-layout: remove useless types/fields cursor: store mapped_box as value cursor: ensure mapping box is always initialized xdg-shell: rename surface role handlers xdg-shell: fix create_xdg_popup() param type xdg-toplevel: fix functions' main argument type xdg-popup: fix functions' main argument type xdg-shell: remove "xdg" from docs xdg-shell: unify function arguments' names xdg-toplevel: change parent type to xdg-toplevel xdg-toplevel: change object type in event structs xdg-shell: extract role-specific unmap logic xdg-shell: fix potential use-after-free xdg-popup: destroy popup-less grab xdg-surface: minor consistency renaming xdg-shell: drop wlr_xdg_toplevel_set_fullscreen_event xdg-toplevel: fix `requested` doc xdg-surface: avoid emitting signals with their owner object xdg-popup: send invalid_positioner to the right resource CONTRIBUTING.md: update construction/destruction functions' description xdg-{toplevel,popup}: extract destructors xdg-positioner: rename structs xdg-positioner: rewrite unconstraining, untie from xdg-popup xdg-positioner: fix sliding regression tinywl: don't generate xdg-shell-protocol.c tinywl: remove outdated non-feature from README.md xdg-toplevel: treat unmapped parents as NULL xdg-foreign-v1: treat unmapped parents as NULL xdg-foreign-v2: treat unmapped parents as NULL xdg-toplevel: don't schedule configures on state requests scene/output-layout: fix scene destroy handler backend/wayland/pointer: fix indentation backend/wayland: zero out finished input devices CONTRIBUTING.md: update init/finish description backend/wayland: reset active pointer on destroy examples/layer-shell: premultiply alpha xdg-toplevel: store states on the stack scene/output: check for NULL in destructor util/addon: avoid calling finish() twice xdg-popup: add proper configure flow xdg-popup: use current/pending state pattern xdg-positioner: add v3 parameters xdg-popup: add reposition support xdg-shell: bump version to 3 tinywl: use xdg-shell v3 scene/wlr_scene.h: fix indentation scene: add wlr_scene_output.events.destroy scene/output-layout: improve ownership logic scene/output-layout: add initial outputs xdg-shell: improve shell version check subcompositor: consider map on creation xdg-toplevel: post no memory on strdup() fail xdg-popup: use configure fields types: add wlr_damage_ring scene: switch to wlr_damage_ring scene: add missing output damage listener seat/pointer: rework sending axis events util/array: unclutter util/set: overhaul cursor: avoid uninitialized wlr_box fields output-layout: avoid uninitialized wlr_box fields output-layout: improve wlr_output_layout_output_in_direction() xdg-foreign-v1: s/unmap/destroy xdg-foreign-v2: s/unmap/destroy subcompositor: move+rename subsurface_parent_commit() subcompositor: consider mapping after adding xdg-toplevel: validate resize_edge foreign-toplevel-management: fix indentation output-damage: fix setting pending_attach_render output-damage: drop precommit listener output-damage: drop unused pending_attach_render output: add a swapchain NULL check in wlr_output_commit_state() tablet-v2: fix event parameters xdg-toplevel: send invalid_parent error scene: fix buffer source box transforming xdg-shell: fix geometry types compositor: introduce wlr_surface_destroy_role_object() layer-shell: use role object destroy handler subcompositor: use role object destroy handler session-lock: use role object destroy handler input-method: use role object destroy handler drag-icon: use role object destroy handler xdg-shell: use role object destroy handler xwayland/xwm: use role object destroy handler compositor: drop role object NULL checks in handlers compositor: enforce surface destruction order tinywl: handle view unmap while grabbed compositor: use the correct input region scene: fix output damage expansion render/pixman: apply source image cropping Revert "render/pixman: apply source image cropping" damage-ring: add missing headers output-damage: deprecate Leonardo Hernández Hernández (1): seat: take wlr_keyboard in wlr_seat_set_keyboard() Manuel Stoeckl (3): render/gles: add support for some 16-bpc unsigned shm formats screencopy-v1: Fix frame stride for formats with bpp != 32 render/gles2: simplify alpha depth check Mark Bolhuis (1): types/wlr_xdg_output_v1: Fix wl_output.done bug. Moon Sungjoon (1): xcursor: support XDG Base Directory Specification Quantum (1): seat/pointer: fix uninitialized variable warning Roman Gilg (2): output: clear buffer created for test render: allow texture creation while rendering Rouven Czerwinski (3): relative_pointer: handle inert pointer objects cursor: re-enable NULL buffer for cursor meson: update default options for libdrm Samuel Čavoj (1): Pass O_CLOEXEC to drmModeCreateLease calls Sebastian Krzyszkowiak (1): wlr_output_layout_contains_point: handle outputs that aren't in the layout Simon Ser (192): build: bump to version 0.16.0 build: bump soversion Remove wlr_box.h redirection build: simplify Meson subproject fallbacks backend: error out in autocreate without libinput support scene: schedule an output frame on wl_surface.frame readme: drop mention of the Sway project render/vulkan: log physical device driver name editorconfig: set max_line_length subcompositor: document subsurface_from_resource subcompositor: destroy subsurface with parent scene: try to import buffers as textures before rendering buffer: extract interface to separate header Revert "scene: try to import buffers as textures before rendering" util/addon: fix public include Zero-initialize structs in init functions Revert "backend/wayland: zero out finished input devices" drm-lease-v1: skip device on wlr_drm_backend_get_non_master_fd failure xwayland: add wlr_xwayland_server_options.terminate_delay xwayland: terminate when no client is connected backend/headless: allow variable refresh rate tinywl: don't crash when there is no keyboard backend/drm: fetch EDID manufacturer from udev_hwdb util/shm: clear mode permission bits in allocate_shm_file_pair xdg-shell: specify version in wlr_xdg_shell_create xwayland: use dict to collect supported features build: bump version to 0.16.0-dev backend/drm: allow non-linear modifiers for multi-GPU backend/drm: remove wlr_drm_surface.{width,height} contributing: add section about documentation conventions Reformat doc comments render/egl: drop MESA_EGL_NO_X11_HEADERS render/egl: add wlr_egl_get_{context,display} render/egl: make wlr_egl struct opaque render/egl: make wlr_egl_{make,unset,is}_current private render/egl: document wlr_egl_create_with_context backend/drm: fix crash in init_drm_surface output: turn make/model/serial into char * linux-dmabuf-v1: fix MOD_INVALID handling in feedback tranches backend/x11: fix output model strdup call docs/env_vars: fix case of WLR_SCENE_DEBUG_DAMAGE values gitignore: remove unnecessary entries, add subprojects/ output: pass wlr_output_state to backend output: pass wlr_output_state to output_pending_resolution output: pass wlr_output_state to rendering functions output: add wlr_output_test_state output: add wlr_output_event_precommit.state output: add output_state_{init,finish} output: add wlr_output_commit_state build: make GBM optional relative-pointer-v1: remove unnecessary comments relative-pointer-v1: remove unnecessary log messages relative-pointer-v1: don't allocate when inert backend/drm: improve atomic commit flag logging output: remove noop backend check in wlr_output_cursor_set_image output: introduce wlr_output_cursor_set_buffer output: re-implement set_image with set_buffer output: drop wlr_output_cursor.events.destroy compositor: send WL_SURFACE_ERROR_INVALID_SIZE for non-cursor surfaces xdg-shell: add support for v4 backend/drm: make commits without a buffer blocking backend/drm: short-circuit no-op commits examples/text-input: stop using strcpy/strcat examples/screencopy-dmabuf: stop using strncpy Remove remaining wl_signal_emit calls backend/drm: unconditionally set "content type" to graphics backend/drm: make serial optional output: fix make/model/serial memory leak util/global: fix memory leak on display destroy in wlr_global_destroy_safe output: add output state setters output: compare state before commit output: use state setters in wlr_output_set_* render/gles2: simplify flipped projection matrix: remove wlr_matrix_projection() gitignore: remove build dir entries render/texture: drop wlr_texture_is_opaque output-management-v1: add wlr_output_head_v1_state_apply() backend/drm: remove unused CRTC count check backend/drm: set "max bpc" to the max render/gles2: check GBM is found render: use internal_features to indicate EGL support build: fix enabled GBM when allocators=auto and auto_features=disabled output: fix missing buffer when using direct scanout backend/drm: use drmModeGetConnectorTypeName backend/drm: use drmModeConnectorGetPossibleCrtcs xdg-shell: add support for v5 single-pixel-buffer-v1: new protocol implementation backend/drm: remove unused WLR_DRM_CONN_CLEANUP backend/drm: drop WLR_DRM_CONN_NEEDS_MODESET backend/drm: drop enum wlr_drm_connector_status backend/wayland: fix touch device not added on startup render: replace wlr_texture_write_pixels with update_from_buffer surface: add WLR_SURFACE_STATE_OFFSET surface: implement wl_surface.offset output: fail commits if adaptive sync cannot be enabled compositor: fix wlr_surface_set_role return value docs render/vulkan: drop ext params from vulkan_device_create() render/vulkan: drop wlr_vk_device.extensions render/vulkan: fix format features check for shm textures render/vulkan: remove unnecessary casts backend/wayland: drop output_set_custom_mode() xdg-foreign-v1: return wlr_xdg_toplevel in verify_is_toplevel() xdg-foreign-v2: return wlr_xdg_toplevel in verify_is_toplevel() render/egl: improve DMA-BUF format/modifier logging render/allocator/gbm: log human-readable format and modifier output/render: log human-readable format render/vulkan: improve format logging output/cursor: downgrade error messages buffer: split into multiple files single-pixel-buffer-v1: fix header guard name output: fix wlr_output_set_gamma() with zero size render/egl: add support for EGL_KHR_display_reference render/vulkan: add error handling for vulkan_find_mem_type() output: inline output_attach_render() output: drop back_buffer variable in wlr_output_commit_state() output: rejigger attach/clear for back buffer backend/drm: de-duplicate wlr_drm_mode creation output: fix back buffer checks output: add wlr_output_mode.picture_aspect_ratio backend/drm: pass through mode picture aspect ratio screencopy-v1: rename wlr_screencopy_frame_v1.{format,fourcc} screencopy-v1: use DRM format code for shm buffers screencopy-v1: rename wlr_screencopy_frame_v1.stride screencopy-v1: use wlr_buffer APIs render: drop trailing whitespace output: add wlr_output_state.allow_artifacts backend/drm: fix missing wlr_output_state.allow_artifacts render/vulkan: use addon for wlr_vk_render_buffer render/vulkan: use addon for wlr_vk_texture output: fix typo in error message render: don't automatically fall back to Vulkan render: don't fall back to Pixman if we have a render node render/pixman: advertise support for linear format modifier render/allocator/drm_dumb: advertise LINEAR instead of INVALID modifier render/allocator/drm_dumb: check modifier list render/allocator/drm_dumb: get format info before allocating render/allocator/drm_dumb: fix error handling render/allocator/drm_dumb: drop finish_buffer() backend/drm: don't unconditionally set desired_enabled backend/drm: remove outdated TODO screencopy-v1: fix frame_shm_copy() error path screencopy-v1: simplify frame_dma_copy() error path render: drop wlr_renderer_read_pixels() flags build: alphabetically sort protocol lists backend/drm: drop unnecessary wlr_drm_connector.crtc checks backend/drm: nuke wlr_drm_connector.desired_enabled output/render: early return in output_ensure_buffer() output/render: make output_ensure_buffer() no-op when missing renderer output: allocate swapchain on first commit drm-lease-v1: fix error codepath drm-lease-v1: send finished event on failure in submit request drm-lease-v1: reject the lease request by default backend/drm: drop drm_connector_set_mode() render/gles2: assert that GL_OES_EGL_image_external is supported output: fix crash in output_test_with_back_buffer() render/vulkan: drop wlr_vk_instance.extensions backend: use global output name counters backend/drm: use wl_container_of() instead of casts for wlr_drm_mode idle-notify-v1: new protocol implementation backend/drm: use atomic API to fetch current connector's CRTC backend/drm: extract connect_drm_connector() logic backend/drm: extract current mode logic into separate function backend/drm: fix EINVAL atomic commits after VT switch backend/drm: log when restoring mode after VT switch fails backend/drm: drop drm_crtc_page_flip() backend/drm: log failures in drm_surface_blit() render/vulkan: add missing entries in vulkan_strerror() backend/drm: fetch current CRTC once on startup xwyland/xwm: simplify unpaired_link handling output: try to use fixed mode in wlr_output_set_custom_mode() output: clarify custom modes warning egl: add WLR_EGL_NO_MODIFIERS render/gles2: remove stale gles2_texture_from_wl_drm() prototype render/gles2: log error on shader compilation failure render/gles2: move shaders to individual files render/gles2: move color uniform from quad.vert to quad.frag render/gles2: de-duplicate vertex shaders backend/drm: extract create_drm_connector() backend/drm: get possible CRTCs in create_drm_connector() xwayland: split headers render/vulkan: remove exts arg from vulkan_instance_create() render/vulkan: drop outdated comments render/vulkan: simplify extension checks render/vulkan: use struct initializers render/vulkan: simplify texture VkPipelineShaderStageCreateInfo render/vulkan: fix and add missing wl_list comments render/vulkan: use wl_array for wlr_vk_shared_buffer.allocs scene: fix whitespace scene: destroy addons before cleaning up internal state Revert "backend/drm: fetch EDID manufacturer from udev_hwdb" backend/drm: request page-flip event on modeset build: bump to version 0.16.0 Simon Zeni (57): backend/headless: remove unused wlr_headless_input_device types/wlr_input_device: default vendor and product id to 0 interfaces/wlr_input_device: introduce wlr_input_device_finish types/wlr_input_device: call the specialized input device destroy function on destroy types/wlr_keyboard: add base wlr_input_device types/wlr_pointer: add base wlr_input_device types/wlr_switch: add base wlr_input_device types/wlr_tablet_pad: add base wlr_input_device types/wlr_tablet_tool: add base wlr_input_device types/wlr_touch: add base wlr_input_device types/wlr_tablet_pad: constify impl types/wlr_switch: constify impl backend/x11: remove wlr_input_device_impl backend/wayland: remove wlr_input_device_impl backend/libinput: remove wlr_input_device_impl interfaces: remove wlr_input_device_impl types/wlr_virtual_keyboard_v1: fix wlr_keyboard destroy sequence types/wlr_virtual_pointer_v1: fix wlr_pointer destroy sequence backend/libinput: add devices wl_list backend/libinput: rework keyboard interface backend/libinput: rework pointer interface backend/libinput: rework switch interface backend/libinput: rework touch interface backend/libinput: rework tablet interface backend/libinput: rework tablet_pad interface backend/libinput: public API cleanup interface/wlr_keyboard: rework destroy sequence interface/wlr_pointer: rework destroy sequence interface/wlr_switch: rework destroy sequence interface/wlr_tablet_pad: rework destroy sequence interface/wlr_tablet_tool: rework destroy sequence interface/wlr_touch: rework destroy sequence tinywl: destroy keyboard on wlr_input_device event types/wlr_input_device: remove wlr_input_device_destroy types/wlr_input_device: move init and finish function to private API types/wlr_keyboard: remove destroy event types/wlr_virtual_keyboard_v1: remove destroy event types/wlr_virtual_pointer_v1: remove destroy event tinywl: init cursor_mode backend/wayland: give wlr_keyboard ownership to wlr_wl_seat backend/wayland: give wlr_pointer ownership to wlr_wl_seat backend/wayland: drop wlr_switch support backend/wayland: give wlr_touch ownership to wlr_wl_seat backend/wayland/tablet_v2: give wlr_tablet_* ownership to wlr_wl_seat backend/wayland: remove wlr_wl_input_device backend/wayland: remove wl_seat_listener from public API types/wlr_input_device: move output_name field to wlr_pointer and wlr_touch types/wlr_input_device: move width_mm and height_mm fields to wlr_tablet and wlr_touch types/wlr_pointer: uniformize events name types/wlr_keyboard: uniformize events name types/wlr_switch: uniformize events name types/wlr_tablet_pad: uniformize events name types/wlr_tablet_tool: uniformize events name types/wlr_touch: uniformize events name tinywl: exit on backend, renderer or allocator creation failure build: remove libkms option and disable tests for libdrm fallback backend/drm: allocate connector CRTC on lease creation Steven Newbury (1): util: Fix infinite loop in recursive function Tadeo Kondrak (1): input_method_v2: improve mapping detection Thomas Hebb (1): render/gles2: don't constrain shm formats to ones that support reading Vlad Zahorodnii (1): xcursor: garbage collect XcursorLibraryLoadImages bi4k8 (3): render/vulkan/pixel_format: do not leak props->... Add missing & render/egl: don't leak memory on error return fakechen (1): egl: modify egl_init_display function definition illiliti (2): meson: replace join_paths() with / operator backend/drm: use pnp.ids to fetch EDID data nyorain (1): vulkan: Fix imported image layout tiosgz (1): CONTRIBUTING.md: make forks public to let the CI run vanfanel (2): Initialize connectors current mode to the mode used by KMS on startup. Only set max_bpc when full modesetting is being done. vaxerski (1): backend/drm: fix crash with null serial xiaoyaobing (1): tinywl/tinywl: clean up tinywl_output when wlr_output is gone yiqiang (2): wlr_scene: fix color value when filtering black boxes scene/wlr_scene:fix judgment of invisible node zccrs (2): render/vulkan: fix undefined reference to wlr_texture_is_vk render/vulkan: add some interfaces to allow compositors to integrate zsugabubus (1): xwayland: do not double free server on destroy