Skip to content

Tags

Tags give the ability to mark specific points in history as being important
  • 0.18.1
    wlroots 0.18.1
    
    Alexander Orzechowski (6):
          wlr_scene: Force blend mode to PREMULTIPLIED if calculate visibility is disabled
          wlr_scene: Funnel all damage operations through scene_output_damage
          wlr_scene: Immediately apply pending output commit damage
          wlr_scene: Inline output_state_apply_damage
          wlr_scene: Don't special case swapchain buffers
          wlr_scene: Fix WLR_SCENE_DEBUG_DAMAGE_HIGHLIGHT when output is transformed
    
    Bill Li (1):
          ci: use package x11-servers/xwayland instead of x11-servers/xwayland-devel
    
    Consolatis (1):
          ext-foreign-toplevel-list: use correct interface and add missing handler
    
    Dudemanguy (1):
          backend/drm: fix a use-after-free
    
    Isaac Freund (3):
          wlr_output: remove dead function
          docs: update comments for wlr_output API changes
          backend/drm: don't set vsync present flag if page flip was async
    
    Kirill Primak (7):
          output-power-management: send zwlr_output_power_v1.failed on output destroy
          xdg-popup: don't set a role resource destroy handler
          pointer-constraints: don't init/finish current/pending states
          linux-drm-syncobj: add missing decls in the header
          backend/wayland: process initial events from globals correctly
          scene: update output geom on commit after dropping pending damage
          scene: resize damage ring on geometry update
    
    Leonardo Hernández Hernández (1):
          linux-drm-syncobj-v1: actually use the requested version
    
    Simon Ser (3):
          backend/drm: use CRTCs in-order
          render/vulkan: use non-coherent memory for read_pixels()
          build: bump version to 0.18.1
    
    chenyongxing (1):
          render/vulkan: Fix draw rect clip region invalid in blend none mod
    
    project-repo (2):
          Fix memory leak in drm.c
          Fix memory leak in xwayland.c
    
    zhoulei (1):
          xwayland/xwm: listen shell destroy signal
    
  • 0.18.0
    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
    
    
  • 0.17.3
    wlroots 0.17.3
    
    Alexander Orzechowski (1):
          wlr_scene: Schedule new frame for WLR_SCENE_DEBUG_DAMAGE_HIGHLIGHT in output commit handler
    
    Biswapriyo Nath (1):
          render/vulkan: Fix clang compiler error in 32 bit ARM Android
    
    Chloé Vulquin (1):
          xcursor: catch theme inheritance loops
    
    David Turner (2):
          render/pixman: fix flipped transforms
          render/pixman: Fix source crop
    
    Guido Günther (1):
          gles2: Avoid crash when glGetInteger64vEXT is missing
    
    Ilia Bozhinov (1):
          xwayland: add a size-safe wrapper for xcb_send_event
    
    Isaac Freund (2):
          tablet_v2: destroy tablet seats on manager destroy
          scene: ensure layer surface usable area >0
    
    John Lindgren (2):
          vulkan: perform sRGB-to-linear conversion correctly for premultiplied values
          util: fix non-linear behavior of wlr_box_closest_point()
    
    Kenny Levinsen (2):
          wlr_gamma_control: Store gamma size when creating control
          render/vulkan: Avoid double-free on calloc error
    
    Kirill Primak (1):
          viewporter: fix "has buffer" check
    
    Simon Ser (1):
          build: bump version to 0.17.3
    
  • 0.17.2
    wlroots 0.17.2
    
    Félix Poisot (1):
          render/vulkan: correct sRBG gamma expansion in shader
    
    Kirill Primak (6):
          tinywl: depend on the server xdg-shell header
          layer-shell: forbid set_size with values ≥INT32_MAX
          xwayland/xwm: associate even on xcb_get_property() failure
          backend/drm: use wlr_drm_backend.name for fd cloning
          cursor: fix and simplify region mapping
          pointer-constraints: handle inert pointer resources correctly
    
    MaxVerevkin (1):
          fix outdated comment in wlr_output.h
    
    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 (5):
          backend/drm: save current refresh rate
          backend/drm: fix fb_damage_clips_arr memory leak
          backend/drm: fix queued cursor FB overwritten with NULL
          cursor-shape-v1: handle inert tablet tool client
          build: bump version to 0.17.2
    
  • 0.17.1
    wlroots 0.17.1
    
    Kirill Primak (2):
          backend/x11: don't send ConfigureRequest with the same size
          backend/x11: check buffer format in output_test()
    
    Simon Ser (12):
          tinywl: fix wlroots dependency constraint in Makefile
          viewporter: rename state var in viewport_handle_surface_commit()
          viewporter: listen to client_commit
          viewporter: fix src buffer bounds check
          render/egl: fallback to GBM FD if EGLDevice is not available
          render: disable linux-dmabuf without DRM FD
          cursor: send surface scale events
          cursor: fix initial cursor position for new outputs
          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
          build: bump vesion to 0.17.1
    
    Simon Zeni (1):
          types/output: emit destroy event before destroying global
    
    pastel raschke (2):
          input-method-v2: free current strings on commit
          input-method-v2: validate commit serial
    
  • 0.17.0
    wlroots 0.17.0
    
    Alexander Orzechowski (146):
          wlr_scene: Add drag icon helper
          output: Initialize request_state
          wlr_scene: Don't cull the entire output when entering direct scanout
          wlr_scene: Expand damage cull region with fractional scales
          wlr_texture: Expose owning renderer
          output_init_render: Allow re-initialization
          wlr_drm: Add missing wlr_buffer import
          addon: Add more logging
          addon: Remove extra newline from logging
          tinywl: Nuke view->{x, y}
          subcompositor: Clarify comment on subsurface mapped consideration
          subcompositor: Clean up subsurface_consider_map
          wlr_scene: Send intersecting list of scene outputs for outputs_update signal
          wlr_scene: Rename wlr_scene_surface_from_buffer
          wlr_scene: Cleanup header includes
          wlr_scene: Extract considering logic for direct scanout
          wlr_scene: Add dmabuf_feedback helper
          wlr_scene: Skip direct scanout if there is no damage
          output: Drop output_is_direct_scanout
          wlr_scene: Send presentation event before direct scanout output commit
          wlr_scene: Fix potential use-after-free in wlr_scene_buffer_set_buffer
          tinywl: Release everything before destroy
          linux_dmabuf_v1: Use wlr_drm_format_set_union
          drm_format_set: Mark as unstable
          wlr_compositer: Keep track if surface has committed a buffer before.
          wlr_compositor: Decide opacity from new has_buffer flag.
          drm_format_set_union: Require initialized dst and remove assert
          drm_format_set_intersect: Require initialized dst and remove assert
          wlr_cursor: Consider surface state when setting new cursor surface
          wlr_cursor: Don't multiply hotspot by scale^2
          wlr_drm_format: Introduce drm_format_finish
          wlr_drm_format_set: Remove redundant text in comment for finish function
          wlr_drm_format: Make structure constant length
          wlr_drm_format: Don't take double pointer in wlr_drm_format_add
          wlr_drm_format: Change wlr_drm_format_create to init
          wlr_drm_format: Change wlr_drm_format_dup to copy
          wlr_drm_format: Rework wlr_drm_format_intersect
          wlr_drm_format_set: Store formats on array
          wlr_drm_format_set_intersect: Clear destination before trying to write to it
          output_pick_format: Fail if no format could be chosen
          wlr_{box, fbox}_equal: Handle NULL
          wlr_{box, fbox}_equal: Consider empty boxes NULL
          renderer/gles2: Interpret matrix as column major in shader
          renderer/gles2: Merge get_buffer and create_buffer
          renderer/gles2: Compute texture coordinates based off of vertex positions
          renderer/gles2: Implement render pass interface
          wlr_scene: Add documentation to wlr_scene_buffer_from_node
          wlr_scene: Make scene_tree_from_node public
          wlr_scene: Make scene_rect_from_node public
          wlr_scene: Introduce wlr_scene_buffer_set_opacity
          examples: Drop quads
          renderer: Don't pass NULL options
          render/gles2: Handle NULL timer
          wlr_seat_pointer: cursor surfaces are always mapped
          wlr_tablet_v2_tool: Tablet tool surfaces are always mapped
          output: introduce wlr_output_state_set_damage()
          scene: Don't rely on output current state during rendering
          scene: introduce wlr_scene_output_build_state()
          wlr_output_state: Consider buffer uninitialized if not committed
          wlr_output_state: Consider gamma_lut uninitialized if not committed
          wlr_scene: Don't use direct scanout if trying to commit a new render_format
          examples: Drop usage of wlr_output.pending
          tinywl: Drop usage of wlr_output.pending
          output: add documentation for wlr_output_state
          wlr_scene: Fix transforms with non 1 scale
          wlr_damage_ring_set_bounds: Ignore duplicate size requests
          wlr_scene: Reset damage ring bounds every frame
          wlr_scene: Clear damage ring on scale change
          wlr_scene: Clear damage ring on transform change
          render/vulkan: Dynamically handle pipeline creation for textures
          render/vulkan: Handle quad pipeline through generic pipeline path
          render/vulkan/pipeline_key: Add blending
          render/vulkan: Dynamically create pipeline layouts
          render/vulkan: Inline init_sampler
          render/vulkan: Dynamically create texture views
          output_state: Gamma lut should be freed only if committed
          renderer: Introduce wlr_scale_filter_mode
          pixman: Remove dead code
          render: Introduce wlr_render_texture_options.blend_mode
          backend/drm: Use texture blend_mode for multigpu blit
          render/vulkan: Initialize to fix compilation error
          wlr_scene: Introduce wlr_scene_buffer_set_filter_mode
          backend/drm: Fix typo
          render/vulkan: Don't compute texture.has_alpha until first... ...texture view is dynamically created
          output: Introduce wlr_output_state_copy()
          scene: Use wlr_output_state_copy for direct scanout path
          examples/tablet: Don't use new render API and old render API together
          wlr_scene: Add opaque region blend mode optimization
          backend/drm: Don't add pollute fixed modes list with custom modes
          backend/x11: Reject non 0 refresh rate mode sets
          backend/wayland: Reject non 0 refresh rate mode sets
          output: Set output mode during main commit
          wlr_scene_buffer: Publicize some state
          wlr_scene: Wrap render_list nodes in struct
          wlr_scene: Simplify direct scanout handling
          wlr_scene: Don't recompute node location during rendering
          wlr_scene: Fix buffer damage for output state
          wlr_scene: Fix damage tracking with non atomic opaque region configuration
          wlr_scene: Don't damage when setting opaque region
          screencopy_v1: Use new renderer API for gpu blit path
          screencopy_v1: Implement copy regions with gpu blit path
          renderer: Sanity check texture source bounds
          output: Extract common commit logic
          output: Add initialization state to wlr_output_init
          backend/x11: Use output state to set init custom mode
          backend/wayland: Use output state to set init custom mode
          backend/headless: Use output state to set init custom mode
          backend/drm: Move output variable up in connect_drm_connector
          backend/drm: Use output state to set init mode
          wlr_output: Make wlr_output_update_{custom,}_mode private
          output: Inline wlr_output_update_{custom,}_mode
          output: Schedule mode updates to happen with rest of output events
          wlr_output: Nuke wlr_output_update_enabled
          renderer/vulkan: Defer device lost signal until end of pass
          egl: Remove dead code
          egl: Don't assume display is owned when KHR_display_reference is unsupported
          wlr_output: Set current_mode during new custom mode
          backend/drm: Compute custom mode correctly
          output: Mutate frame_pending needs_frame when there is an explicit output commit
          render/pass: Introduce wlr_render_rect_options_get_box
          renderer: Use wlr_render_rect_options_get_box
          render/pass: Remove empty box early return
          cursor: Unset cursor image when there is not available xcursor theme
          cursor: Remove dead code
          cursor: Unset cursor if texture upload failed
          output_defer_present: Calloc right struct
          treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practical
          renderer_autocreate_with_drm_fd: Ensure fd isn't bogus
          renderer: Don't crash when trying to fallback to pixman
          wlr_output: Add applied state to commit event
          output_event_commit: Remove committed and buffer
          scene_output_layout: Don't destroy output when output layout is destroyed
          scene/output_layout: Add assert for duplicate output insertion
          wlr_scene: Amend scene_buffer.point_accepts_input to take coordinate pointers
          wlr_scene_subsurface_tree: Addon to scene
          set_buffer_with_surface_state: Take whole surface struct
          wlr_scene_surface: Introduce scene_surface_set_clip
          wlr_scene: Introduce wlr_scene_subsurface_tree_set_clip
          wlr_scene: Update outputs when output scale/transform changes
          wlr_scene: Update outputs when primary output is changed
          wlr_scene: Update outputs if subpixel status changes
          backend/drm: Track page flips in list
          backend/drm: Destroy page flips on backend destroy
          screencopy: Define proper destination for dmabuf copy
          screencopy: Move frame bounds sanity check into common code
          screencopy: Use box size instead for shm copy
    
    Andri Yngvason (3):
          wlr_seat: Extract seat_client_create() function
          seat: Let client manage its own resources
          seat: Provide dummy resources for inert seats
    
    Austin Shafer (3):
          Add union function for format sets
          drm_plane_pick_render_format: return false if no format could be found
          dmabuf: Remove assumption that all mods are in fallback tranche
    
    Brett Ernst (6):
          vulkan: increase max stage size to support large buffers
          drm_format_set: fix realloc size
          add minimalist cairo example
          backend/wayland: log output test failure reasons
          backend/x11: log output test failure reasons
          renderer/vulkan: don't add two alphas together in blend func
    
    Brian J. Tarricone (1):
          Fix possible crash in server-decoration when surface destroyed
    
    Christopher Snowhill (1):
          xwayland: fix memory leak
    
    Clayton Craft (1):
          backend/drm: use panel_orientation if it is set
    
    Consolatis (2):
          xcursors: Alias existing cursor defaults to cursor-spec cursor names
          xdg-activation: accept pointer focus for new tokens
    
    Edgars Cīrulis (1):
          xcursor: Resolve warning in xcursor_build_theme_dir
    
    Eric Engestrom (1):
          render/egl: skip incompatible EGL devices
    
    Evyatar Stalinsky (1):
          util/log: fix buffer overflow
    
    Guido Günther (1):
          seat/pointer: Initialize low_res_value
    
    Isaac Freund (3):
          session-lock: send more protocol errors
          xdg-shell: improve validation of resize edges
          xdg-decoration: send missing protocol errors
    
    Jan Beich (1):
          vulkan: silence -Wint-conversion on 32-bit architectures
    
    JiDe Zhang (5):
          wlr_output_cursor: assert renderer isn't NULL
          wlr_output: update cursor when scale changed
          xwayland: fix double free wlr_xwayland_shell_v1
          Fix output layers order error on wayland backend
          Remove unnecessary code
    
    Johan Malm (2):
          scene/layer_shell_v1.c: set exclusive zone correctly
          scene/layer_shell_v1.c: remove redundant comment
    
    John Lindgren (6):
          xwayland: Read and publish _NET_WM_STRUT_PARTIAL property
          xwayland: Send synthetic ConfigureNotify per ICCCM 4.1.5
          wlr_gamma_control: add missing forward declarations
          wlr_scene: clarify wlr_scene_output ownership semantics
          xwayland: stop translating _NET_WM_STRUT_PARTIAL coordinates
          xwayland: add wlr_xwayland_set_workareas()
    
    Kenny Levinsen (6):
          addon: Allow NULL owner of addon
          wp-fractional-scale-v1: new protocol implementation
          scene: Add fractional scale handling
          gamma-control: Read ramps using pread
          output: allow_artifacts -> allow_reconfiguration
          backend/drm: Automatic non-blocking commits
    
    Kirill Primak (104):
          xwayland: fix wlr_xwayland_surface_from_wlr_surface() docs
          input-inhibitor: deprecate
          xdg-shell: send invalid_size errors
          Nuke deprecated include/wlr/types/wlr_surface.h
          scene: introduce wlr_scene_buffer.events.outputs_update
          scene: fix output damage expansion condition
          output-layout: fix function decl indentation
          output-layout: remove wlr_output_layout_output_state
          output-layout: improve API
          tinywl: handle wlr_output.events.request_state
          xdg-shell: use defunct_role_object error
          util/region: forbid "shrinking" a region with wlr_region_expand()
          xwayland/xwm: constify needles
          render/vulkan: remove NULL renderer check on texture destroy
          render/vulkan: always finish buffer addon on texture destroy
          util/addon: ensure the set is empty after finish
          xwayland/xwm: dissociate even if surface is NULL
          presentation-time: finish surface addon
          backend/x11: fix delta_discrete value
          output-layout: improve closest point for no outputs case
          xwayland/xwm: introduce wlr_xwayland_surface_try_from_wlr_surface()
          subcompositor: fix mapped parent check
          xwayland/shell: actually use wlr_xwayland_surface_v1.link
          layer-shell: forbid changing the existing popup parent
          tinywl: init server to zeros
          xwm: remove misleading comment
          xwm: make atom_map static
          xwm: emit new_surface/destroy on associate/dissociate
          xdg-shell: improve unmapping logic slightly
          subcompositor: simplify get_subsurface handler
          subcompositor: use bad_parent error
          compositor: use defunct_role_object error
          keyboard: use the new data in wlr_keyboard_set_keymap()
          util/box: simplify empty box case in wlr_box_intersection()
          util/box: always treat NULL boxes as empty
          util/box: transform empty boxes' origins
          Revert "xwm: emit new_surface/destroy on associate/dissociate"
          xwm: introduce associate/dissociate events
          compositor: introduce unified map logic
          subcompositor: use unified map logic
          xdg-shell: use unified map logic
          layer-shell: use unified map logic
          session-lock: use unified map logic
          input-method: use unified map logic
          drag: use unified map logic
          xwm: use unified map logic
          compositor: remove wlr_surface_role.precommit
          xwm: check for a buffer before mapping
          session-lock: remove unused wlr_session_lock_surface_v1.events.map
          session-lock: fix buffer check
          subcompositor: consider mapping on parent map
          compositor: notify subsurfaces about a commit in the rendering order
          compositor: unmap subsurfaces too on unmap
          Add some missing includes/declarations
          compositor: add a note about ignored input regions
          Clear input regions if they're ignored
          subcompositor: simplify subsurface_consider_map(), call on add
          cursor: fix applying hotspot offset
          drag: don't set icon's role_data
          subcompositor: set role_data with wlr_surface_set_role()
          compositor: improve role-specific documentation
          seat: remove a TODO comment about simulating keyboard events
          compositor: add wlr_surface_role.no_object
          compositor: fix wlr_surface_set_role() error messages
          compositor: introduce wlr_surface_set_role_object()
          compositor: don't call role unmap hook without an object
          fullscreen-shell: set surface role
          viewporter: check for an existing viewport
          subcompositor: don't remove inert role resource
          layer-shell: don't remove inert role resource
          session-lock: don't remove inert role resource
          xwayland-shell: don't remove inert role resource
          input-method-v2: don't remove inert role resource
          xdg-shell: update stale docs
          data-device: remove undefined grab interface decls
          xwayland/shell: don't listen to wlr_surface.events.destroy
          Unmap wlr_surface before making its role object inert
          compositor: add "mapped" flag doc
          xdg-shell: don't return anything from create_xdg_surface()
          Don't assume xdg_surface.{toplevel,popup} is non-NULL
          xdg-popup: avoid using wlr_surface_destroy_role_object()
          xdg-shell: rework roles
          Unify signal data docs
          xdg-popup: validate parent
          xdg-surface: assert that xdg_surface isn't inert
          xdg-surface: fix init state flow
          docs: replace the less commonly used "::" with "."
          seat: remove wlr_seat_validate_grab_serial()
          scene-output-layout: assert lo->output == so->output
          util/addon: make wlr_addon_set_finish() safer
          layer-shell: check for NULL in wlr_layer_surface_v1_destroy()
          xdg-shell: fix wlr_xdg_popup_destroy() docs
          Drop wl_client and user data assertions in bind handlers
          layer-shell: check the configured flag earlier
          compositor: add wlr_surface.unmap_commit
          layer-shell: don't use wlr_surface_role.unmap hook
          layer-shell: track surface init state
          xdg-shell: use wlr_surface.unmap_commit
          xdg-toplevel: don't send maximized if tiled is requested but not supported
          tinywl: fix xdg_toplevel_destroy() docs
          tinywl: don't use "I"/"my" in docs
          Add missing type declarations in headers
          xcursor: fix NULL deref on malloc() fail
          xcursor: don't store NULL xcursors
    
    Leo Li (1):
          wlr_scene: Use cached node coordinates where possible
    
    Leonardo Hernández Hernández (3):
          scene: send wl_surface.preferred_buffer_scale
          xdg-shell: add support for v6
          xdg-decoration: store an xdg_toplevel instead of xdg_surface
    
    Manuel Stoeckl (13):
          render/vulkan: update shm texture data in one batch
          render/vulkan: add support for RGB565 texture format
          render/vulkan: align staging buffers for texture upload
          render/gles2: use byte-aligned rows for glReadPixels
          render/vulkan: increase next descriptor pool size
          render/vulkan: allow rendering to non-8-bit buffers
          screencopy-v1: fix logical->physical region transform
          render: ensure wlr_render_rect_options->box is nonempty
          render/vulkan: fix validation error with vkCmdBlitImage
          screencopy_v1: only bind, not render with, buffer in shm copy path
          util: add struct to track union of rectangles
          render/vulkan: constrain blend to output subpass to redrawn region
          render/vulkan: undo alpha premult for 8-bpc ARGB/ABGR
    
    Ronan Pigott (2):
          wlr_xdg_activation_v1: add new_token event
          scene: apply rounding when translating buffer damage
    
    Rose Hudson (14):
          examples/touch: fix incorrect event type
          backend/wayland: support touch cancel events
          examples/touch: support touch cancel events
          util: add timespec_to_nsec
          add render timer API
          render/gles2: implement timer API
          scene_output: optionally record and report timings
          export-dmabuf, screencopy: schedule_frame -> needs_frame
          output_layout: return wlr_output_layout_output when adding output
          scene_output_layout: make output adding explicit
          backend/drm: don't set frame_pending on modeset
          backend/drm: report !presented if session is inactive
          output: don't forbid multiple commits per frame
          output: defer fake present events until after commit
    
    Rouven Czerwinski (1):
          session-lock: add missing lock_surface_destroy
    
    Simon Ser (468):
          build: bump version to 0.17.0-dev
          render/vulkan: add helper to load command function pointer
          render/vulkan: switch to timeline semaphores
          render/vulkan: add a command buffer pool
          render/vulkan: use command buffer pool for stage
          render/vulkan: always wait for last stage to complete before rendering
          render/vulkan: wait for device to become idle in vulkan_destroy()
          render/vulkan: use initializer for VkBufferImageCopy
          backend/drm: ensure disconnected outputs are disabled after VT switch
          build: move udev dep to backend/
          build: add subproject fallback for Pixman
          build: bump pixman version
          backend: remove const casts for pixman_region32_t
          util/region: constify
          render/texture: constify wlr_texture_update_from_buffer()
          buffer: constify wlr_client_buffer_apply_damage()
          damage-ring: constify wlr_damage_ring_add()
          output-damage: constify wlr_output_damage_add()
          output: constify damage APIs
          region: constify
          scene: constify region APIs
          layer-shell-v1: specify version in constructor
          backend/drm: log refresh rate in Hz
          backend/drm: log modesetting commits
          backend/drm: fix FPE when disabling output
          compositor: drop wlr_surface.{sx,sy}
          backend/drm: only request page-flip if active
          content-type-v1: new protocol implementation
          output: introduce request_state event
          backend/wayland: use request_state when toplevel is resized
          backend/x11: use request_state when window is resized
          content-type-v1: add version param to wlr_content_type_manager_v1_create()
          render: add docs for wlr_renderer
          render: make some wlr_renderer fields private
          render: allow wlr_renderer_impl.begin to fail
          render: make wlr_renderer_begin return a bool
          output: check wlr_renderer_begin return value
          scene: check wlr_renderer_begin return value
          render: add wlr_renderer.events.lost
          render/gles2: query glGetGraphicsResetStatusKHR
          render/egl: enable EGL_LOSE_CONTEXT_ON_RESET
          render/vulkan: detect device loss
          render/pixel_format: import pixel_format_info_check_stride()
          Introduce wlr_shm
          render: use wlr_shm in wlr_renderer_init_wl_shm()
          buffer: drop wlr_shm_client_buffer
          shm: allow accessing multiple shm mapping concurrently
          backend: return wlr_session in wlr_backend_autocreate() call
          backend: drop wlr_backend_get_session()
          backend: rename backend to multi in wlr_backend_autocreate()
          allocator/drm_dumb: use libdrm dumb buffer helpers
          output: call wlr_output_update_enabled() after commit
          backend/drm: don't damage output on CRTC change
          output: drop wlr_output_damage_whole()
          linux-dmabuf-v1: use resource interface
          wl-drm: use resource interface
          xwayland-shell-v1: new protocol implementation
          xwayland: add wlr_xwayland_shell_v1_set_client()
          xwayland: add wlr_xwayland_shell_v1_destroy()
          xwayland/server: add start signal
          xwayland/server: delay non-lazy startup
          xwayland/shell: add wlr_xwayland_shell_v1_surface_from_serial()
          xwayland/xwm: add support for xwayland-shell-v1
          Relax 80 column limit
          render: stop pulling <wlr/backend.h>
          backend/session: drop unused <libudev.h>
          backend: stop pulling <wlr/backend/session.h>
          render/gles2, render/pixman: stop pulling <wlr/backend.h>
          backend/multi: stop pulling <wlr/backend/session.h>
          compsitor: document wlr_compositor_create()
          compositor: release current buffer after commit event
          compositor: make renderer optional
          shm: add create() function without a wlr_renderer
          backend/session: disable libseat examples for subproject by default
          backend: error out when missing DRM and libinput in wlr_backend_autocreate()
          util/time: use int64_t return value for get_current_time_msec()
          backend: use time helpers to implement timeouts
          backend/session: make optional
          scene: use wlr_output_state for direct scanout
          scene: set output damage during direct scan-out
          build: exclude <wlr/types/wlr_drm_lease_v1.h> without DRM backend
          render/vulkan: drop unused fields from wlr_vk_format_modifier_props
          render/vulkan: destroy textures after command buffer completes
          render/vulkan: release stage buffers after command buffer completes
          render/dmabuf: add dmabuf_import_sync_file
          render/vulkan: import semaphore to DMA-BUF instead of blocking
          linux-dmabuf-v1: add "_with_renderer" suffix to create() function
          linux-dmabuf-v1: add version arg to create()
          linux-dmabuf-v1: don't use wlr_renderer to sanity check DMA-BUFs
          linux-dmabuf-v1: don't use wlr_renderer to send legacy format list
          linux-dmabuf-v1: drop wlr_renderer field
          linux-dmabuf-v1: introduce wlr_linux_dmabuf_v1_create()
          scene: stop listening for output enable/mode events
          output-damage: stop listening for output mode events
          output-layout: stop listening for output mode events
          output: drop enable/mode events
          render/vulkan: drop "_format" in wlr_vk_format fields
          render/vulkan: explain format mapping with DRM
          render/pixel-format: add various new formats
          render/pixel-format: drop unnecessary fields in the table
          render/vulkan: add more 8 bits per channel formats
          render/vulkan: add more packed formats
          render/vulkan: add 64-bit UNORM and SFLOAT formats
          render/drm-format-set: add wlr_drm_format_set_copy()
          wl-drm: don't store wlr_renderer
          wl-drm: only advertise formats supporting implicit modifiers
          render/vulkan: extract DMA-BUF format query to separate function
          render/vulkan: simplify vulkan_format_props_query()
          render/vulkan: improve message on format prop error
          render/vulkan: check for barrier array alloc failure
          render/vulkan: make vulkan_format_props_find_modifier() return value const
          render/vulkan: make shm/dmabuf split clearer in wlr_vk_format_props
          render/vulkan: move VkDescriptorSetAllocateInfo down
          render/vulkan: fix missing pSignalSemaphores for stage CB
          render/vulkan: use initializers for VkImageMemoryBarrier
          render/vulkan: fix comma
          render/vulkan: fix vkCmdClearAttachments validation error
          render/vulkan: remove pre_cb in vulkan_end()
          render/vulkan: remove stage_cb conditional
          render/vulkan: use initializers for VkSubmitInfo
          compositor: document wlr_surface_{enter,leave,send_frame_done}
          xwayland/xwm: rename xwm_map_shell_surface()
          compositor: add wlr_surface.events.precommit
          xwayland/xwm: replace role with addon
          render/dmabuf: add dmabuf_export_sync_file()
          render/vulkan: wait for DMA-BUF fences
          render: simplify renderer_autocreate_with_drm_fd()
          util/env: add docs
          util/env: make env_parse_switch() return a size_t
          backend/wayland: ensure buffers are released on shutdown
          backend/x11: ensure buffers are released on shutdown
          build: use a configuration file for internal features
          xwayland: use internal_config
          xcursor: use internal_config
          render/allocator/gbm: use internal_config
          backend/libinput: use internal_config
          build: unify naming for HAVE_* defines
          backend/drm: fix VRR test
          backend/drm: simplify dealloc_crtc() commit
          backend/drm: stop using goto in set_plane_props()
          backend/drm: pass fb as arg in set_plane_props()
          backend/drm: use separate field to store pending cursor FB
          backend/drm: store pending FB in state
          xwayland: remove find_program() fallback when dep is not found
          xwayland: use HAVE_ prefix for xcb_xfixes_set_client_disconnect_mode
          render/pixman: skip mask for opaque texture rendering
          egl: consistently use EGLint for DMA-BUF format
          render/egl: stop advertising render support for external-only formats
          backend/drm: add drm_connector_status_str()
          backend/drm: print stringified connector status in realloc_crtcs()
          backend/drm: update wlr_drm_connnector.crtc in drm_connector_commit_state()
          backend/drm: clear pending cursor FB in drm_connector_commit_state()
          backend/drm: rename wlr_drm_backend.outputs to connectors
          backend/drm: refuse to switch CRTC for enabled connector
          backend/drm: prevent out-of-bounds array access on unknown subpixel
          backend/drm: drop unused arg in connector_get_current_mode()
          backend/drm: fetch fresh legacy CRTC in connector_get_current_mode()
          backend/drm: remove wlr_drm_crtc.legacy_crtc
          keyboard: improve documentation
          backend/drm: check return value of get_drm_{connector,crtc}_props()
          xwayland/xwm: assert that we're not overwriting when associating
          xwayland/xwm: remove unnecessary surface_id reset
          backend/x11: fix initial value of wlr_x11_buffer.n_busy
          tablet-tool: revert bitfield in enum wlr_tablet_tool_tip_state
          backend/drm: disable all CRTCs after VT switch
          render/vulkan: check that requested size is smaller than max
          tinywl: fix extra whitespace
          seat/keyboard: skip wl_array allocation
          seat/keyboard: constify wlr_seat_keyboard_send_modifiers()
          seat/keyboard: constify args in wlr_seat_keyboard_enter()
          seat/keyboard: constify wlr_seat_keyboard_notify_modifiers()
          seat/keyboard: constify wlr_seat_keyboard_notify_enter()
          backend/drm: set "max bpc" property based on pixel format
          xdg-shell: reset added/committed flag on unmap
          xdg-shell: remove unnecessary return
          xdg-shell: rename wlr_xdg_toplevel.added to sent_initial_configure
          xdg-shell: rename wlr_xdg_popup.committed to sent_initial_configure
          examples, tinywl: use "default" cursor instead of "left_ptr"
          examples: use NULL theme name instead of "default"
          xwayland/xwm: reset serial in xwayland_surface_dissociate()
          xdg-shell: convert to try_from
          input-method-v2: convert to try_from
          layer-shell-v1: convert to try_from
          ext-session-lock-v1: convert to try_from
          subcompositor: convert to try_from
          backend/wayland: don't cache next item when destroying buffers
          output: don't attach buffer on first commit if disabled
          backend/wayland: allow superseding a previous commit
          backend/wayland: update output mode after commit is done
          ci: install hwdata-dev on Alpine
          backend/drm: require hwdata pkg-config file
          backend/wayland: make destroy_wl_seats() handle a single seat
          backend/wayland: handle wl_registry.global_remove for wl_seat
          render/gles2: use correct type for shader type
          render/gles2: default to highp if available
          linux-dmabuf-v1: stop using const in feedback
          linux-dmabuf-v1: add basic helpers for feedback
          linux-dmabuf-v1: add wlr_linux_dmabuf_feedback_v1_init_with_options()
          linux-dmabuf-v1: use wlr_linux_dmabuf_feedback_v1_init_with_options()
          linux-dmabuf-v1: fix missing SCANOUT flag
          Switch IRC channel to #wlroots
          build: remove unnecessary pkgconfig arguments
          build: set pkgconfig URL
          build: enable subproject for libxkbcommon
          Add wlr_output_layer
          output: add wlr_output_set_layers()
          backend/wayland: implement output layers
          examples/output-layers: new example
          backend/drm: init wlr_drm_plane for all plane types
          backend/drm: add libliftoff interface
          backend/drm: add libliftoff composition layer
          backend/drm: add support for output layers
          output-layer: add feedback event
          backend/drm: send output layer feedback events
          linux-dmabuf-v1: add helper for output layer feedback events
          examples/output-layers: relay feedback events
          backend/drm: drop unnecessary pixman_region32_t casts
          screencopy-v1: drop unnecessary pixman_region32_t casts
          output: expose wlr_output_state_finish()
          output: expose wlr_output_state_set_buffer()
          backend/drm: drop wlr_drm_layer.pending_{width,height}
          backend/headless: unconditionally accept all output layers
          output-layer: document interactions with screen capture
          backend: create DRM backend monitor when WLR_BACKENDS is used
          backend: avoid adding NULL backend in attempt_backend_by_name()
          backend: disable DRM backend monitor when WLR_DRM_DEVICES is used
          render/swapchain: make public
          Switch to "meson setup"
          swapchain: remove allocator listener on destroy
          output: introduce wlr_output_configure_primary_swapchain()
          output: leverage wlr_output_configure_primary_swapchain()
          output: allow modeset with buffer while frame is pending
          backend: make wlr_backend_autocreate() fail when DRM is missing
          backend: move #ifdefs to nested functions
          examples/dmabuf-capture: fix frame_number deprecated in FFmpeg 6.0
          render/vulkan: prefer render node for wlr_renderer_get_drm_fd()
          backend/drm: use libdisplay-info to parse EDID
          backend/drm: use libdisplay-info for CVT mode generation
          backend/wayland: destroy zwp_linux_buffer_params_v1 objects
          util/log: prefix WLR_REL_SRC_DIR with underscore
          backend/wayland: fix leak of some globals
          gamma-control-v1: fix handling of duplicate control
          gamma-control-v1: simplify get_gamma_control error handling
          output-layer: require all layers in wlr_output_state.layers
          backend/drm: log drm_connector_alloc_crtc() failures
          render/vulkan: avoid double-close on sync_file FD after semaphore import
          output-layer: cache current state
          backend/wayland: only re-order sub-surfaces when necessary
          backend/wayland: only update layer position when necessary
          backend/wayland: only unmap layers when necessary
          output-layer: add support for scaling buffers
          output: add wlr_output_is_direct_scanout_allowed()
          scene: check wlr_output_is_direct_scanout_allowed()
          output: drop direct scan-out check in output_basic_test()
          output-damage: drop
          xcursor: adjust style, use calloc()
          compositor: pass version in wlr_compositor_create
          compositor: add wlr_surface_set_preferred_buffer_scale()
          compositor: add wlr_surface_set_preferred_buffer_transform()
          xcursor: sync with libwayland
          render/vulkan: use full names for extension command fields
          render/vulkan: remove extra newline
          render/vulkan: use initializer in vulkan_change_layout_queue()
          render/vulkan: fix signedness of strcmp() return value
          output-layer: add cropping support
          Add a new renderer API
          render: add render pass helpers
          render/pass: add legacy render pass implementation
          output: add wlr_output_add_software_cursors_to_render_pass()
          scene: port to wlr_render_pass
          render/pixman: add begin_pixman_data_ptr_access()
          render/pixman: implement render pass API
          render/vulkan: use VK_KHR_synchronization2
          render/pixman: fix scaling in render_pass_add_texture()
          render: introduce blend mode
          output/cursor: fix buffer size when nested and scaled
          render/vulkan: fix code style for function brackets
          xwayland: enable use of a xserver subproject
          render/vulkan: add support for NV12
          output: add output_cursor_set_texture()
          cursor: add surface handling
          output: drop wlr_output_cursor_set_surface
          render/vulkan: improve logging when creating texture
          wlr-export-dmabuf-v1: handle output destroy
          render/vulkan: enable NV12 on big-endian
          render/vulkan: wait for idle queue before destroying render buffer
          seat/keyboard: allow no keymap
          keyboard: don't change current keymap on wlr_keyboard_set_keymap() error
          keyboard: add support for resetting the keymap
          linux-dmabuf-v1: fix wlr_drm_format_set leak in feedback_compile()
          render/pixel-format: add docs
          render/pixel-format: add support for block-based formats
          render/pixel-format: add YVYU and VYUY
          render/vulkan: drop unnecessary comments
          render/vulkan: fix YCbCr format check in vulkan_texture_from_pixels()
          render/vulkan: extract quad pipeline init to separate function
          render/vulkan: fix VkPipelineLayout when texturing NV12
          render/vulkan: use identity swizzle for YCbCr formats
          render/vulkan: use VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE for default sampler
          render/vulkan: use same sampler params for RGBA and NV12
          render/vulkan: introduce struct wlr_vk_pipeline_layout
          render/vulkan: add vulkan_get_pipeline_layout()
          render/vulkan: add init_{default,ycbcr}_pipeline_layout()
          render/vulkan: generalize YCbCr format support
          render/vulkan: check format support before creating YCbCr sampler
          render/vulkan: require support for linear filter for YCbCr
          render/vulkan: add more YCbCr formats
          render/vulkan: de-dup pipeline layout initialization
          render/egl: check for EGL_EXT_device_query in get_egl_device_from_drm_fd()
          render/vulkan: drop unused vulkan_change_layout_queue()
          render/vulkan: drop unused vulkan_has_extension()
          render/vulkan: document TEXTURE_TRANSFORM_* in shader
          output: use pending render format if any
          render/vulkan: add 10, 12, and 16-bit YCbCr formats
          render/vulkan: implement render pass API
          output: add wlr_output_begin_render_pass()
          backend/drm: use new rendering API
          examples: convert to new rendering API
          output/cursor: use new rendering API
          backend/drm: move forward decl up for drmModeModeInfo
          render/vulkan: handle vulkan_record_stage_cb() failures
          backend/drm: introduce wlr_drm_mode_get_info()
          render/vulkan: improve error handling in render_pass_submit()
          render/vulkan: improve error handling in vulkan_begin_render_pass()
          cursor: ignore wlr_cursor_set_surface() with same surface
          cursor: unset wlr_output_cursor.texture on surface destroy
          cursor: fix wl_pointer.set_cursor hotspot updates
          output/cursor: fix scale and transform
          backend/wayland: add scaling support for output layers
          backend/wayland: add support for cropping output layers
          examples/multi-pointer: drop
          presentation-time: constify wlr_presentation_feedback_send_presented()
          render/vulkan: rename tex_features to shm_tex_features
          render/vulkan: split off YCbCr texture features
          render/vulkan: de-duplicate texture VkImageView init
          render/vulkan: require format info for shm
          render/vulkan: fix bound pipeline check for output_pipe
          render/vulkan: fix blend subpass matrix
          render/vulkan: reset scissor before post-blend subpass
          gamma-control-v1: introduce set_gamma event
          gamma-control-v1: add wlr_gamma_control_manager_v1_get_control()
          output: add wlr_output_state_set_gamma_lut()
          gamma-control-v1: add wlr_gamma_control_v1_apply()
          gamma-control-v1: add wlr_gamma_control_v1_send_failed_and_destroy()
          gamma-control-v1: stop applying gamma LUTs implicitly
          render/vulkan: rename tex_usage to shm_tex_usage
          cursor: only reset the cursor when the surface changes
          backend/drm: clip FB damage
          examples/output-layers: fix layers not included in commit
          output: add wlr_output_state_set_layers()
          backend/libinput: ignore multiple events for same pointer button
          backend/libinput: use struct initializers for events
          examples: drop unnecessary include_directories
          build: drop proto_inc
          cursor: add wlr_cursor_set_xcursor()
          cursor: add wlr_cursor_unset_image()
          allocator: only use DRM auth if we are master
          output: attach buffer to state in output_ensure_buffer()
          output: stop using wlr_output.back_buffer in output_ensure_buffer()
          seat: fix keyboard/pointer/touch resource destroy
          output/swapchain: fix error return value types
          cursor: add support for animated XCursor
          xwayland: unset wlr_xwayland.server on destroy
          backend/drm: fix libliftoff_plane double-free
          input-method-v2: add popup_surface_from_resource()
          compositor: replace role_data with role_resource
          compositor: listen to role_resource destroy signal
          output: add wlr_output_state_init()
          backend/drm: remove duplicate needs_frame() in set_cursor()
          backend/wayland: unmap when output is disabled
          backend/x11: unmap when output is disabled
          backend/headless: only schedule a new frame if buffer was submitted
          backend/headless: add support for disabled outputs
          tinywl: enable new outputs
          examples: enable new outputs
          backend/wayland: mark new outputs as disabled
          backend/x11: leave new outputs disabled by default
          backend/headless: leave new outputs disabled by default
          contributing: add instructions for forking
          output-layer: add wlr_output_layer_state.damage
          backend/wayland: handle output layer damage
          backend/drm: handle output layer damage
          cursor: store wlr_cursor inline in wlr_cursor_state
          cursor: use wlr_cursor_unset_image() in wlr_cursor_set_surface()
          cursor: track surface globally, instead of per-output
          cursor: keep track of XCursor manager and name
          cursor: add cursor_update_outputs()
          cursor: set image for new outputs
          examples/pointer: use wlr_cursor_set_xcursor()
          cursor: stop using set_image() in wlr_cursor_unset_image()
          cursor: add wlr_cursor_set_buffer()
          xcursor-manager: drop wlr_xcursor_manager_set_cursor_image()
          cursor: remove wlr_cursor_set_image()
          cursor: remove usage of wlr_output_cursor_set_image()
          output: drop wlr_output_cursor_set_image()
          license: add copyright line for all contributors
          Use struct initializers instead of memset()
          xwayland: document associate/dissociate events
          xwayland: drop struct wlr_xwayland_move_event
          xwayland: document event data
          xwayland: use initializer for struct wlr_xwayland_resize_event
          xwayland: pass NULL as event data
          render/gles2: drop unnecessary cast
          Use wl_container_of() instead of casts
          render: constify struct wlr_buffer_pass_options
          render: document wlr_buffer_pass_options.timer
          render/gles2: wrap timer setup in push_gles2_debug()
          scene: rename output_present event to output_sample
          scene: add wlr_scene_output_sample_event
          presentation-time: add separate helper for zero-copy
          backend/drm: stop checking for wlr_client_buffer
          cursor, output: apply viewport to cursor
          cursor-shape-v1: new protocol implementation
          backend/drm: restore custom modes
          xwayland: avoid calling xwm_get_atom_name() when debug logs are off
          xwayland: drop wlr_xwayland_surface.events.set_pid
          Avoid using memcpy() to copy structs
          backend/wayland: take existing wl_display in wlr_wl_backend_create()
          backend/wayland: tag wl_surface
          backend/wayland: add wlr_wl_output_create_from_surface()
          examples/embedded: new example
          render: split render pass API into separate header
          backend/wayland: wait for xdg_surface.configure explicitly
          backend/headless: fix broken output frame events
          buffer: make wlr_client_buffer functions private
          compositor: drop wlr_surface_destroy_role_object()
          render: only open DRM render node if necessary
          output: trigger frame/present events on all commits on enabled output
          render/pass: ensure rect has positive size
          backend/drm: drop no-op shortcut
          tinywl: set minimum wlroots version in Makefile
          render/vulkan: de-duplicate VkImageUsageFlags
          backend/drm: restore pending page-flip check when tearing
          contributing: add safety section
          xdg-shell: document wlr_xdg_surface's initialized & initial_commit
          render/drm_format_set: use published kernel doc URL
          xwayland: batch property requests when handling new window
          xwayland: batch client ID request with other property requests
          render: log error when requested renderer is compile-time disabled
          render/allocator: log message when GBM is disabled
          Add GitLab issue template
          security-context-v1: new protocol implementation
          security-context-v1: add commit event
          docs: add architecture document
          xwayland/server: add ready flag
          xwayland: add wlr_xwayland_create_with_server()
          build: rename libdrm partial dep to be more explicit
          Revert "backend/drm: Automatic non-blocking commits"
          examples: split clients in separate repository
          render/vulkan: undo alpha premult before sRGB encoding/decoding
          examples: drop dead client code
          util/token: rename TOKEN_STRLEN to TOKEN_SIZE
          util/token: add docs
          backend: drop wlr_backend_get_presentation_clock()
          cursor: log missing XCursor
          xcursor: add fallbacks for legacy names
          ci: halt on UBSan error in smoke test
          xdg-shell: add wlr_xdg_{toplevel,popup}_try_from_wlr_surface()
          tinywl: fix crash when previously focused surface is not a toplevel
          tinywl: stop using the word "view" to refer to toplevels
          backend/drm: ensure plane surfaces are cleaned up on shutdown
          backend/drm: leave CRTCs on when shutting down
          backend/drm: introduce page-flip tracking struct
          backend/drm: fix pending page-flip check
          backend/drm: add wlr_drm_connector_state.nonblock
          backend/drm: drop unnecessary flags in legacy interface
          linux-dmabuf-v1: skip import check on split render/display SoCs
          build: bump version to 0.17.0
    
    Simon Zeni (9):
          render/egl: fix uninitialized pointers in init_dmabuf_formats
          render/vulkan: remove hardcoded validation layers
          types/wlr_seat: finish keyboard_state during wlr_seat_destroy
          render/drm_format_set: fill dst in wlr_drm_format_set_copy
          Revert "render/egl: skip incompatible EGL devices"
          types/wlr_drm_lease_v1: downgrade DRM backend error message to debug
          types/wlr_tearing_control_v1: use safe list iteration on destroy
          drop KDE idle protocol support
          render/vulkan: remove unused queue_props in renderer
    
    Tobias Predel (2):
          wlr_drm_format_set_copy: Do not allocate heap
          backend_destroy: Similiar logic like DRM backend
    
    Vasyl Vavrychuk (1):
          fullscreen-shell: add release request handler
    
    Väinö Mäkelä (13):
          seat: Allow binding to inert seats
          data-device: Handle inert seats
          data-control: Handle inert seats
          tablet: Handle inert seats
          wlr_idle: Handle inert seats
          input-method: Handle inert seats
          keyboard-shortcuts-inhibit: Handle inert seats
          primary-selection: Handle inert seats
          text-input: Handle inert seats
          xdg-popup: Handle inert seats
          virtual-pointer: Handle inert seats
          virtual-keyboard: Handle inert seats
          wlr-output-management: Send custom modes to clients
    
    bi4k8 (2):
          wlr_seat: clear `drag->seat_client` when destroyed
          cursor: compare to scaled coords
    
    eri (4):
          buffer: convert to try_from References: wlroots/wlroots#884
          drm: convert to try_from References: wlroots/wlroots#884
          linux_dmabuf_v1: convert to try_from References: wlroots/wlroots#884
          render/vulkan: use VK_KHR_global_priority References: #3386
    
    fakechen (1):
          egl: remove eglQueryWaylandBufferWL define
    
    llyyr (1):
          render/vulkan: use correct source offset in read_pixels
    
    mfk530 (1):
          xwayland: fix user_event_handler
    
    novenary (1):
          xwayland: allow compositor to set withdrawn state
    
    ptrcnull (1):
          backend/x11: prevent segfault on empty DRI3 response
    
    q234rty (1):
          render/vulkan: use renamed glslang binary by default
    
    rewine (2):
          wlr_idle_inhibit_manager_v1: add comments for signal parameters
          wlr_output: add comments for signal parameters
    
    sunzhguy (2):
          wlr_cursor: update cursor when output enable and transform changed
          backend/drm: free fb later
    
    vaxerski (2):
          staging/tearing-control: Add protocol support
          backend/drm: Add async page flip support to legacy
    
    xiliuya (1):
          keyboard: only update LEDs when changed
    
    zccrs (2):
          render/vulkan: add wlr_vk_texture_has_alpha
          backend/wayland: fix undefined reference to wlr_wl_input_device_get_seat
    
    zhoulei (1):
          backend/drm: fix di_info memory leak
    
    
  • 0.16.1
    wlroots 0.16.1
    
    Alexander Orzechowski (2):
          wlr_scene: Expand damage cull region with fractional scales
          wlr_drm: Add missing wlr_buffer import
    
    Guido Günther (1):
          seat/pointer: Initialize low_res_value
    
    Johan Malm (2):
          scene/layer_shell_v1.c: set exclusive zone correctly
          scene/layer_shell_v1.c: remove redundant comment
    
    Kirill Primak (2):
          xwayland: fix wlr_xwayland_surface_from_wlr_surface() docs
          scene: fix output damage expansion condition
    
    Simon Ser (11):
          backend/drm: only request page-flip if active
          backend/drm: log refresh rate in Hz
          backend/drm: log modesetting commits
          backend/drm: fix FPE when disabling output
          Revert "compositor: enforce surface destruction order"
          backend: error out when missing DRM and libinput in wlr_backend_autocreate()
          build: exclude <wlr/types/wlr_drm_lease_v1.h> without DRM backend
          backend/wayland: ensure buffers are released on shutdown
          backend/x11: ensure buffers are released on shutdown
          backend/drm: fix VRR test
          build: bump version to 0.16.1
    
    Simon Zeni (2):
          render/egl: fix uninitialized pointers in init_dmabuf_formats
          types/wlr_seat: finish keyboard_state during wlr_seat_destroy
    
    bi4k8 (2):
          wlr_seat: clear `drag->seat_client` when destroyed
          cursor: compare to scaled coords
    
  • 0.16.0
    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
    
    
  • 0.15.0
    wlroots 0.15.0
    
    Release highlights:
    
    - A new experimental Vulkan renderer has been merged (manually enabled with
      `WLR_RENDERER=vulkan`).
    - A new scene-graph API has been introduced to enable more code-sharing between
      compositors.
    - Large parts of the backend and renderer APIs have been refactored and
      reworked.
    - The `drm-lease-v1` protocol has been implemented.
    - Feedback support has been added to the `linux-dmabuf-unstable-v1`
      implementation, unlocking many zero-copy and multi-GPU optimizations and
      features.
    - The `wlr_output` rendering API now supports 10bpc and 16bpc formats.
    - The DRM backend now supports hotplugging secondary GPUs at runtime.
    - `wlr_region` and `wlr_box` are now stable APIs.
    
    Full changelog below.
    
    Andri Yngvason (2):
          screencopy: Use output->front_buffer instead of wlr_output_export_dmabuf
          screencopy: Handle shm copy in commit event handler
    
    Anthony Super (1):
          Add error handling to backend creation
    
    Chris Chamberlain (2):
          backend: fix return value of attempt_drm_backend
          backend/drm: add wlr_drm_backend_monitor
    
    Cole Mickens (1):
          egl: use alts for EGL_EXT_device_enum, if missing
    
    David Rosca (1):
          seat: Only resend keyboard/pointer enter to focused clients
    
    Demi Marie Obenour (1):
          Improve wlr_drm_format documentation
    
    Devin J. Pohly (9):
          scene: add node reparent function
          scene: ensure node cannot be reparented below itself
          scene: make graph loops fatal when debugging
          scene: stricter assertions on reparent
          scene: iterate nodes instead of surfaces when rendering
          scene: add RECT node type
          scene: replace surface_at() with node_at()
          examples/scene-graph: demonstrate scene_rect node type
          scene: remove redundant empty-region check in render_texture()
    
    Dylan Araps (1):
          util/time: make NSEC_PER_SEC static
    
    Elyes HAOUAS (1):
          Fix spelling errors
    
    Guido Günther (3):
          xwayland: Allow to retrieve _NET_STARTUP_ID
          xwayland: Allow to retrieve startup-id via _NET_STARTUP_INFO
          xdg-activation: Allow to submit tokens
    
    Haelwenn (lanodan) Monnier (3):
          render/pixman/renderer.c: Fix memory-leak in create_buffer
          render/egl.c: Fix memory leaks in egl_create
          backend/drm/legacy.c: Fix memory leak in drm_legacy_crtc_set_gamma
    
    Hubert Hirtz (1):
          Fix a typo in CONTRIBUTING.md
    
    Isaac Freund (15):
          layer-shell: replace close() with destroy()
          tinywl: simplify logic for sending pointer events
          scene: assert that node != sibling in place above/below
          scene: add functions to place node on top/bottom
          output: fix leak of wlr_drm_format
          text-input/input-method: handle strdup() failure
          text-input: fix type of send_preedit_string() args
          wlr_drag: emit destroy after wl_data_device.leave
          tinywl: use wlr_scene
          scene: send surface enter/leave output events
          scene: add primary output to wlr_scene_surface
          scene: add wlr_scene_send_frame_done()
          tinywl: use wlr_scene_send_frame_done()
          scene: fix wlr_scene_send_frame_done() API
          scene: add wlr_scene_set_presentation()
    
    Jan Beich (2):
          backend: drop unconditional and unused <libinput.h>
          render: completely disable gles2 if requested but libEGL is found
    
    John Lindgren (1):
          Insert new outputs at the end of the list
    
    Jonathan Wong (1):
          Added whitespace between "output" and "(not"
    
    Joshua Ashton (2):
          render/vulkan: Use image view swizzles instead of shader hack
          render/vulkan: Optimize vertex shader
    
    José Expósito (8):
          protocol/meson: bump wayland-protocols requirement to 1.23
          pointer: add hold pointer event definition
          build: check if libinput supports hold gestures
          backend/libinput: send hold gesture events
          backend/wayland: send hold gesture events
          cursor: emit hold gesture events
          wlr_pointer_gestures: update protocol to version 2
          wlr_pointer_gestures: hold gestures (protocol v3)
    
    Kirill Primak (34):
          surface: don't cache frame callback lists
          util: add wlr_addon
          wlr_outputs: add wlr_addon_set
          wlr_output_layout: use wlr_addons
          util/addon: find both by owner and impl
          surface: fix place_below handling
          util/box: introduce wlr_fbox_transform()
          surface: fix wlr_surface_get_buffer_source_box()
          subsurface: unlock surface on destroy
          surface: cache frame callback lists again
          surface: move subsurface lists to state
          surface: rename impl and its functions
          surface: change surface_finalize_state() to surface_finalize_pending()
          surface: inline surface_commit_pending()
          xdg popup: move function to a file it belongs to
          xdg-toplevel: refactor configure/state flow
          xdg-surface: simplify configure mechanism
          xdg surface: check adding configure_idle for NULL
          layer-shell: refactor configure/state flow
          layer-shell: add `committed` bitmask
          xdg-surface: add pending state
          xdg-shell: remove redundant NULL buffer check
          layer-shell: move NULL buffer check to role precommit handler
          xdg-decoration: refactor configure/state flow
          output: disallow NULL event for wlr_output_send_present()
          output: add presented flag to presentation event
          presentation-time: don't send presented on discard
          presentation-time: use a surface addon
          CONTRIBUTING.md: add CoC section
          surface: fix damage transformation
          subsurface: simplify and fix parent commit handling
          subsurface: apply position change at the right moment
          surface: fix non-buffer damage handling
          subsurface: don't add to parent list immediately
    
    Manuel Stoeckl (7):
          render/pixel-format: add a few 10-bit and FP16 formats
          render/gles2: hide shm formats without GL support
          render/gles2: add a few 10-bit and FP16 formats
          output: lift up output format fallback logic
          output: use XRGB8888 format instead of ARGB8888
          output: Add function to set preferred render format
          output: remove XRGB8888 cursor fallback format
    
    MarkusVolk (1):
          backend.c: do not try to explicitly clean up the libinput backend
    
    Michele Sorcinelli (1):
          xwayland: do not free cursor in handle_server_ready()
    
    Moon Sungjoon (1):
          backend/wayland: improve wayland input device name
    
    Quantum (3):
          viewporter: remove crop and scale state upon destruction
          scene: fix compile error in release builds
          Fix uninitialized variable errors in release mode
    
    Raphael Robatsch (1):
          util/token: don't leak /dev/urandom fd to children
    
    Roman Gilg (1):
          backend/headless: unlink input device on destroy
    
    Ronan Pigott (3):
          xdg-activation-v1: enable compositors to request their own tokens
          xdg-activation-v1: add data field and emit token destroy events
          backend/wayland: use xdga client activation
    
    Rouven Czerwinski (6):
          backend/drm: return true on test if no crtc
          output: check output enabled before sending frame
          Revert "backend/drm: Check if output is enabled before sending frame event"
          backend/drm: try to allocate crtc for formats
          linux-dmabuf-v1: filter out LINEAR if implicit
          linux-dmabuf-v1: fix implicit check
    
    Simon Ser (288):
          build: bump version to 0.15.0
          backend/drm: rename page_flip_handler to handle_page_flip
          render/egl: remove stale wlr_egl_export_image_to_dmabuf decl
          render/egl: make most functions private
          xwayland: improve startup log message
          build: use meson.global_build_root()
          ci: remove -Dlibseat from Alpine build
          ci: make Meson warnings fatal
          Drop WLR_VERSION_API_*
          surface: remove SURFACE_VERSION
          surface: make wlr_subsurface_create private
          pointer: document event data types
          touch: document event data types
          surface: accept commits with buffer size not divisible by scale
          render/egl: replace wlr_egl_create with wlr_egl_create_with_drm_fd
          Remove unused wlr_list.h includes
          util/array: add array_remove_at
          backend/libinput: stop using wlr_list internally
          tablet: stop using wlr_list
          Drop wlr_list
          tablet-v2: fix pad and tool object versions
          buffer: introduce wlr_readonly_data_buffer
          render: use wlr_readonly_data_buffer in wlr_texture_from_pixels
          render: drop wlr_renderer_impl.texture_from_pixels
          buffer: add wlr_dmabuf_buffer
          render: use wlr_dmabuf_buffer in wlr_texture_from_dmabuf
          render: drop wlr_renderer_impl.texture_from_dmabuf
          buffer: make enum wlr_buffer_cap public
          backend/libinput: use wl_array for wlr_libinput_tablet.tools
          surface: allow locking pending state in commit handler
          Remove reference to the announce mailing list
          region: stabilize interface
          region: drop leftover reference to the mailing list
          Revert "backend/drm: populate cursor plane's current_fb"
          backend/drm: don't clear pending cursor FB on failed commit
          xcursor: improve documentation
          Add a stub wl_drm implementation
          drm: add support for DMA-BUFs
          buffer: handle wl_drm buffers
          render/gles2: use wlr_drm for wl_drm implementation
          render: remove wl_drm support from wlr_renderer
          render/egl: remove EGL_WL_bind_wayland_display support
          buffer: remove renderer param from wlr_resource_get_buffer_size
          buffer: stop sending wl_buffer.release events from wlr_client_buffer
          buffer: unify texture creation in wlr_client_buffer_import
          output: detach buffer from renderer before commit
          output-damage: fix output swapchain handling
          touch: add frame event
          backend/libinput: send touch frame events
          backend/wayland: send touch frame events
          backend/x11: send touch frame events
          cursor: add touch frame event
          seat: add wlr_seat_touch_{send,notify}_frame
          Fix invalid uses of wl_array_for_each
          backend/drm: force linear layout for multi-GPU buffers
          backend/drm: stop using drm_surface_make_current in drm_surface_blit
          backend/drm: add test_only arg to wlr_drm_interface.crtc_commit
          backend/drm: move legacy-specific checks to legacy.c
          backend/drm: remove backend arg from wlr_drm_interface.crtc_commit
          buffer: rename wlr_client_buffer variables to client_buffer
          buffer: stop using source resource in wlr_client_buffer_apply_damage
          buffer: add wlr_client_buffer.source
          buffer: stop using resource in client_buffer_get_dmabuf
          buffer: drop wlr_client_buffer.resource
          render/egl: rename wlr_egl.exts to better match Khronos
          render/gles2: rename wlr_egl.exts to better match Khronos
          render/gles2: set has_alpha for DMA-BUFs
          render/gles2: disable blending opportunistically
          buffer: drop resource arg from wlr_client_buffer_create
          output: add generic wlr_output_export_dmabuf implementation
          backend/headless: remove wlr_output_impl.export_dmabuf
          backend/drm: remove wlr_output_impl.export_dmabuf
          output: remove wlr_output_impl.export_dmabuf
          backend/wayland: properly cleanup wlr_wl_pointer
          backend/drm: fix NULL data in handle_drm_event
          buffer: re-use wlr_shm_client_buffer
          backend/drm: stop restoring CRTCs on exit
          backend/drm: add DRM_MODE_CONNECTOR_USB to conn_get_name
          render: drop wlr_renderer_impl.init_wl_display
          render/egl: set EGL_IMAGE_PRESERVED_KHR
          render/egl: add support for EGL_EXT_device_drm_render_node
          xwayland: simplify argv filling logic
          xwayland: embed wlr_xwayland_server_options in server struct
          output: fallback to XRGB in output_pick_format
          backend/drm: implement get_primary_formats
          output: use pending resolution when allocating swapchain
          output: allocate and attach empty buffer on modeset
          output: fallback to modifier-less allocation on modeset test failure
          backend/drm: allow legacy scan-out if FB props match
          backend/drm: remove primary swapchain
          backend/drm: remove SCANOUT check in drm_connector_test
          backend/drm: drop drm_surface_{make,unset}_current
          backend/drm: drop get_renderer implementation
          backend/drm: stop initializing renderer for parent backend
          backend/drm: fix wrong type for get_cursor_format return values
          backend/noop: drop attach_render/rollback_render
          output: drop wlr_output_impl.{attach,rollback}_render
          output-damage: stop using enum wlr_output_state_buffer_type
          output: drop wlr_output_state.buffer_type
          render/pixel-format: add some 24 and 16-bit formats
          render/gles2: add support for some 24 and 16-bit formats
          backend/drm: preserve mode order from kernel
          render/pixel_format: add more formats for Pixman
          render/pixman/pixel_format: add more formats
          output: try skipping buffer allocation if the backend allows it
          backend/drm: require buffer on modeset in drm_connector_test
          examples/fullscreen-shell: remove unused render_data.view field
          build: remove "." from include dirs
          seat: allow compositors to not load a keymap
          ci: add smoke test
          backend/drm: add proper error handling to wlr_drm_backend_create
          backend/drm: always perform a test commit in drm_connector_test
          surface: kill wlr_surface.previous
          surface: drop surface_state_copy
          buffer: add addon set
          render/gles2: make wlr_gles2_buffer an addon
          render/gles2: make wlr_gles2_texture a wlr_buffer addon
          backend/drm: use addon for wlr_drm_fb
          backend/drm: add support for FB_DAMAGE_CLIPS
          backend: unify startup messages
          backend/drm: generate CVT reduced modes
          backend/{drm,libinput}: exclude headers when disabled
          Move allocator stuff into new directory
          render/egl: reopen DRM node for GBM
          backend/drm: introduce wlr_drm_bo_handle_table
          Introduce new scene-graph API
          examples/scene-graph: new example
          scene: add wlr_scene_node_toggle
          scene: allow nodes to have arbitrary parents
          scene: add user data pointer to wlr_scene_node
          scene: add wlr_scene_node_surface_at
          contributing: add new section about commit log
          contributing: use references for links
          contributing: clone wlroots fork with SSH
          contributing: turn remaining links into refs
          Link to gamja for web chat
          render/allocator: re-open GBM FD
          render/allocator/gbm: fix create() docs for FD ownership
          build: add subproject fallback for wayland
          build: add subproject fallback for wayland-protocols
          contributing: don't reference issues in commit first line
          render/allocator: use legacy authentication for primary nodes
          backend/drm: handle drm_surface_blit errors
          render/allocator/gbm: add log message for gbm_bo_get_fd_for_plane
          util/shm: add allocate_shm_file_pair
          keyboard: add wlr_keyboard.keymap_fd
          seat: avoid copying the keymap for each client
          subsurface: rename wlr_subsurface_state to wlr_subsurface_parent_state
          subsurface: move parent link to state
          buffer: take a wlr_buffer in wlr_client_buffer_apply_damage
          buffer: make wlr_client_buffer_apply_damage return a bool
          viewporter: add doc comment explaining compositor requirements
          viewporter: hide wlr_viewport
          surface: ensure buffer is reset to NULL in surface_state_move
          surface: drop wlr_surface_state.buffer_resource
          surface: fix abort on NULL buffer attach
          backend/drm: rename enum wlr_drm_connector_state to status
          backend/drm: introduce wlr_drm_connector_state
          backend/drm: fix crash on VT switch
          backend/drm: drop unused arg from get_possible_crtcs
          backend/drm: drop drm_connector_init_renderer
          output-damage: fix damage on modeset
          backend/drm: drop attempt_enable_needs_modeset
          backend/drm: drop wlr_drm_connector.desired_mode
          scene: fix wlr_scene_render_output offset
          scene: add scene outputs
          scene: add wlr_scene_output_commit
          scene: add wlr_scene_node_coords
          scene: add damage tracking support
          examples/scene-graph: use wlr_scene_output
          scene: move source to subdir
          scene: add wlr_scene_attach_output_layout
          buffer: add data_ptr access flags
          ci: switch to seatd-launch
          scene: add wlr_scene_tree
          surface: add addon set
          scene: add wlr_scene_subsurface_tree_create
          build: simplify get_variable calls
          backend/drm: add support for panel orientation
          scene: drop default case in wlr_scene_node_at
          scene: unify intersection logic in wlr_scene_node_at
          scene: add wlr_scene_buffer
          util/box: introduce wlr_fbox_empty
          scene: add wlr_scene_buffer_set_source_box
          scene: add scene_node_get_size helper
          scene: use scene_node_get_size in wlr_scene_node_at
          scene: add wlr_scene_buffer_set_dest_size
          scene: add wlr_scene_buffer_set_transform
          backend: create renderer and allocator in wlr_backend_autocreate
          xdg-shell: introduce wlr_xdg_surface.current
          xdg-shell: rename wlr_xdg_surface.next_configure_serial
          xdg-shell: stop clearing wlr_xdg_surface state on unmap
          render/drm_format_set: add wlr_drm_format_has
          Require INVALID for implicit format modifiers
          backend/drm: fail on explicit modifier in drmModeAddFB2
          render/egl: always add LINEAR to supported modifiers
          render/drm_format_set: remove special LINEAR case
          Revert "render/drm_format_set: remove special LINEAR case"
          Revert "render/egl: always add LINEAR to supported modifiers"
          Revert "backend/drm: fail on explicit modifier in drmModeAddFB2"
          Revert "Require INVALID for implicit format modifiers"
          Revert "render/drm_format_set: add wlr_drm_format_has"
          render/allocator: use render node if available in reopen_drm_node
          render/allocator: use empty DRM lease to re-open node
          scene: remove surface commit listener when node is destroyed
          render/vulkan: check vulkan-headers dependency
          presentation-time: remove unused field
          scene: add wlr_scene_output_for_each_surface
          scene: add support for direct scan-out
          output: split into multiple files
          xdg-foreign-v2: use error enum
          output: refuse to enable with zero mode
          readme: refresh dependencies
          backend/drm: add entry for Valve EDID vendor
          backend/x11: fix code style in get_touchpoint_from_x11_touch_id
          scene: inline subsurface_tree_destroy
          sceeencopy-v1: listen to output destroy in capture_output
          backend/drm: get rid of BO handle table
          output: fix stack variable lifetime in wlr_output_send_present
          backend/drm: avoid creating empty FB_DAMAGE_CLIPS prop
          ci: add .gitlab-ci.yml
          s/GitHub/GitLab/
          xwayland: add support for -noTouchPointerEmulation
          backend/session: introduce wlr_device_change_event
          backend/drm: handle per-connector hotplug events
          scene: fix calloc size mismatch
          export-dmabuf-v1: stop using wlr_output_export_dmabuf
          screencopy-v1: stop using wlr_output_export_dmabuf
          output: drop wlr_output_export_dmabuf
          linux-dmabuf-v1: properly validate flags
          Remove support for DMA-BUF flags
          output: add wlr_output_init_render
          output: fix renderer buffer cap sanity check in wlr_output_init_render
          Introduce WLR_DEVICE_LEASE events
          backend/drm: introduce wlr_drm_lease
          drm-lease-v1: listen to lease destroy event
          backend/drm: scan leases on uevent
          linux-dmabuf-v1: hide wlr_linux_buffer_params_v1
          backend/wayland: report parent presentation clock
          input-device: remove wlr_input_device.link
          render/vulkan: quiet glslangValidator
          docs/env_vars: drop WLR_DIRECT_TTY
          render: pick DRM FD in autocreate
          render/allocator: fallback to renderer DRM FD in autocreate
          backend/headless: stop picking a DRM FD
          render: introduce WLR_RENDER_DRM_DEVICE
          backend/headless: drop wlr_headless_backend_create_with_renderer
          scene: add wlr_scene_xdg_surface_create
          render/drm_format_set: add wlr_drm_format_has
          Require INVALID for implicit format modifiers
          backend/drm: fail on explicit modifier in drmModeAddFB2
          render/egl: always add LINEAR to supported modifiers
          render/drm_format_set: remove special LINEAR case
          backend/drm: always add LINEAR to supported modifiers
          render: add DMA-BUF docs
          scene: add support for viewporter
          backend/drm: poison buffers which cannot be scanned out
          output: destroy swapchain when disabled
          output: don't leave dangling cursor_front_buffer
          output: fix typo in wlr_output_impl.get_primary_formats docs
          output: add wlr_output_get_primary_formats
          scene: add wlr_scene_get_scene_output
          render/egl: store IMG_context_priority in wlr_egl
          render/egl: add wlr_egl_create_with_context
          render/pixman: advertise MOD_INVALID instead of MOD_LINEAR
          render/egl: improve modifier support detection
          output: fix modifier stripping
          readme: update wrapper libraries link
          render/drm-format-set: add wlr_drm_format_set_intersect
          output: add wlr_output_event_commit.buffer
          export-dmabuf-v1: use wlr_output_event_commit.buffer
          screencopy-v1: use wlr_output_event_commit.buffer
          output: drop front_buffer
          render: add wlr_renderer_init_wl_shm
          linux-dmabuf-v1: implement v4
          linux-dmabuf-v1: add per-surface feedback
          build: move wayland-client dep to backend/wayland/
          examples/layer-shell: remove wlroots dependency
          examples: remove unnecessary wlroots deps for clients
          examples: remove unnecessary partial_dependency() call
          output: introduce wlr_output_set_name
          Fix incorrect %zd formatting directives
          output: add support for protocol interface version 4
          util/global: remove wl_display arg from wlr_global_destroy_safe
          backend/drm: use drmModeFormatModifierBlobIterNext
          backend/drm: use drmCloseBufferHandle
          build: add subproject fallback for libdrm
          backend/wayland: add basic linux-dmabuf feedback support
    
    Simon Zeni (36):
          types/wlr_box: remove unused wlr_box_from_pixman_box32 and wlr_box_rotated_bounds functions
          move wlr_box from /types to /util
          util/box: stabilize interface
          types/wlr_buffer: split wlr_client_buffer_import function
          types/wlr_surface: get buffer size from wlr_buffer_import
          types/wlr_buffer: remove wlr_resource_get_buffer_size
          types/wlr_buffer: remove wlr_renderer argument from wlr_buffer_from_resource
          types/wlr_buffer: introduce wlr_buffer_resource_interface
          types/wlr_buffer: create custom wlr_buffer from wl_resource
          render/wlr_texture: put wlr_texture_from_buffer into the public API
          render/egl: initialize wlr_egl with EGL_PLATFORM_DEVICE_EXT
          backend/drm: implement drm lease function
          backend/drm: introduce wlr_drm_backend_get_non_master_fd
          protocol/meson: bump wayland-protocols requirement to 1.22
          types: introduce wlr_drm_lease_v1
          types/buffer: make {begin,end}_data_ptr_access part of the public API
          backend/multi: implement get_buffer_caps
          render/allocator: make wlr_allocator part of the public API
          examples: init wlr_output with allocator and renderer
          tinywl: autocreate allocator and init output
          backend: remove backend ensure renderer and allocator check
          backend: remove backend_get_allocator
          types/wlr_screencopy_v1: use renderer from output
          types/wlr_scene: use renderer from wlr_output
          backend/x11: get renderer from wlr_x11_output
          backend/headless: don't store the parent renderer
          backend/drm: stop initializing backend renderer
          backend/multi: remove backend_get_renderer
          backend: remove wlr_backend_get_renderer
          backend/multi: add asserts in wlr_multi_backend_add
          backend: fix attempt_backend_by_name multi backend self insertion
          tinywl: init output render before commit
          tinywl: build with meson if examples option is enabled
          ci/archlinux: enable address and undefined sanitizers
          backend: remove noop backend
          types/wlr_drm_lease_v1: add NULL check to drm lease resource destroy
    
    Stacy Harper (1):
          layer-shell: don't set committed flag if the property didn't change
    
    Tadeo Kondrak (2):
          input-method-unstable-v2: Add error for surface with existing role
          Implement input_method_v2 popups
    
    Tudor Brindus (3):
          input/pointer: try harder to not send duplicate motion events
          input/tablet: fix `wl_array_for_each` usage on tablet proximity
          xwm: do not restack surfaces on activation
    
    Vyivel (2):
          render/pixman: fix texture_is_opaque()
          input/pointer: send axis source once per frame
    
    ayaka (1):
          backend: make DRM and libinput backends optional
    
    buffet (1):
          Update loc count in readme
    
    fwsmit (1):
          examples/foreign-toplevel: fix toplevel not being freed
    
    muradm (1):
          backend: wait for session to become active
    
    nyorain (1):
          render/vulkan: add Vulkan renderer
    
    tiosgz (4):
          for_each_surface: only iterate mapped surfaces
          surface_at: check if surfaces are mapped
          scene/subsurface_tree: hide unmapped subsurfaces
          Fix wlr_scene_node_lower_to_bottom
    
    yuiiio (1):
          render/egl: fix typo
    
    Érico Nogueira (1):
          docs: mention WLR_RENDERER=vulkan.
    
    
  • 0.14.1
    wlroots 0.14.1
    
    This is bugfix release for wlroots 0.14.0.
    
    Simon Ser (10):
          surface: accept commits with buffer size not divisible by scale
          buffer: make enum wlr_buffer_cap public
          surface: allow locking pending state in commit handler
          Revert "backend/drm: populate cursor plane's current_fb"
          backend/drm: don't clear pending cursor FB on failed commit
          output: detach buffer from renderer before commit
          output-damage: fix output swapchain handling
          tablet-v2: fix pad and tool object versions
          backend/drm: force linear layout for multi-GPU buffers
          build: bump version to 0.14.1
    
  • 0.14.0
    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
    
    
  • 0.13.0
    69c71dbc · build: bump to v0.13.0 ·
    wlroots 0.13.0
    
    Andri Yngvason (1):
          types/seat: Clear focus in wlr_seat_destroy()
    
    Ariadne Conill (1):
          drm: add fallback drmModeAddFB for drivers which do not support drmModeAddFB2
    
    Brandon Dowdy (7):
          examples: remove dependency on wlr_egl from clients
          render/egl: remove wlr_egl_{create,destroy}_surface
          render/egl: remove *config_attribs and wlr_egl->config
          examples: remove "major" and "minor" from egl_common.c
          render/egl: add check for EGL_KHR_surfaceless_context
          examples/egl_common: make attribs const
          region: remove leftover description of resource_list
    
    BrassyPanache (1):
          Expose ICCCM input status
    
    Chris Chamberlain (1):
          Free xwayland cursor in wlr_xwayland_destroy
    
    Daniel Kondor (1):
          layer-shell: allow new values for keyboard-interactivity
    
    Dominik Honnef (1):
          xwayland: use pipe instead of SIGUSR1 to signal readiness
    
    Ilia Bozhinov (10):
          texture: document that functions should not be called while rendering
          xwm: add wlr_xwayland_surface_restack()
          drm: do not unset make/model before emitting destroy event
          egl: fix memory leak
          noop: listen to display destroy and destroy the backend
          util: add support for generating UUIDs
          xdg-shell: add wlr_xdg_toplevel_set_parent
          types: add wlr_xdg_foreign_registry
          types: add wlr_xdg_foreign_v1
          types: add wlr_xdg_foreign_v2
    
    Ilia Mirkin (8):
          backend/x11: set a blank cursor rather than hiding globally
          backend/x11: make sure output transform matrix is initialized
          backend/x11: add support for scanout mode
          backend/x11: skip events we don't care about
          backend/x11: keep track of exposed rects, add them to damage regions
          xwayland: free render picture backing cursor
          backend/x11: use native cursors
          backend/x11: clamp hotspot to texture bounds
    
    Isaac Freund (28):
          Replace wlr_key_state with wl_keyboard_key_state
          Use uint32_t in wlr_renderer_begin signature
          Remove unneeded includes from wlr_input_device.h
          backend/libseat: fix change_vt return value
          wlr-output-management: add missing NULL check
          screencopy: handle compositor not setting damage
          screencopy: use output transform for damage copy
          screencopy: check if damage committed before copy
          screencopy: don't use output transform for damage copy
          docs: fix error in wlr_output_set_damage() comment
          xwayland: avoid crash on repeated server_finish_display() call
          subsurface: handle NULL parent in get_root_surface
          toplevel-management: ignore inert seats
          toplevel-management: handle strdup failure
          toplevel-management: avoid redundant state events
          docs: wlr_surface_from_resource cannot return NULL
          primary selection: destroy devices before manager
          gtk primary selection: destroy devices before manager
          layer shell: advertise version 3
          xdg shell: make unconstrain_from_box arg const
          xdg shell: add wlr_xdg_surface_for_each_popup_surface()
          xdg shell: add wlr_xdg_surface_popup_surface_at()
          layer shell: add wlr_layer_surface_v1_popup_surface_at()
          xdg/layer shell: reduce code duplication in iterators
          output-management: use same types as wlr_output
          xdg shell: remove wlr_xdg_surface_for_each_popup()
          layer shell: rename popup iterator for consistency
          xdg-output: destroy outputs before manager
    
    Justus Rossmeier (1):
          tablet_v2: Fix implicit grab end detection
    
    Kenny Levinsen (7):
          backend/drm: Use legacy gamma size for legacy backend
          surface: Make send_enter store entered outputs
          backend/wayland: Avoid uninitialized read
          wlr_seat_pointer: Remove log on notify_button
          backend/session/libseat: Set loglevel to INFO
          docs: Minor libseat corrections
          xdg_shell: Fix invert_y of top right anchor
    
    Lukas Märdian (2):
          Fix false positive -Wstringop-truncation
          xcursor: use strncat instead of strncpy
    
    Manuel Stoeckl (3):
          xwayland/xwm: make atom_map const
          xcursor: make cursor data and metadata const
          Make implementation function lists static const
    
    Marten Ringwelski (1):
          wlr-output-management: Handle modes added after initializing
    
    Mykola Orliuk (8):
          backend/wayland: Bind seat listener to wlr_wl_seat
          backend/wayland: Link input devices with seats
          backend/wayland: Add registering multiple seats
          backend/wayland: Use seat name in input names
          backend/wayland: Listen to pointers from all seats
          backend/wayland: Bind pointer listener to seat
          backend/wayland: Add active pointer per host seat
          backend/wayland: Set cursor indivdualy per output
    
    Quantum (1):
          render/wlr_texture: clamp texture coordinates to edge by default
    
    Ronan Pigott (2):
          render/egl: recognize EGL_BAD_DEVICE_EXT error
          backend/drm: avoid gcc stringop-truncation warning
    
    Rouven Czerwinski (1):
          util: fix uuid support for freebsd
    
    Simon Ser (287):
          backend/libinput: require libinput 1.14
          render: introduce wlr_allocator
          render: introduce wlr_gbm_allocator
          render/drm_format_set: introduce wlr_drm_format_dup
          render: introduce wlr_swapchain
          buffer: add wlr_client_buffer_get
          render: introduce wlr_renderer_bind_buffer
          render/gles2: implement wlr_renderer_bind_buffer
          render/gles2: fix y-inverted output when rendering to buffer
          backend/drm: use wlr_swapchain
          render/swapchain: add support for buffer age
          backend/drm: add support for wlr_swapchain buffer age
          backend/drm: get rid of wlr_drm_fb_type
          backend/drm: add support for wlr_swapchain multi-GPU
          backend/drm: check drm_surface_render_black_frame return value
          render/egl: introduce wlr_egl_dup_drm_fd
          render: introduce wlr_renderer_get_drm_fd
          backend/headless: switch to wlr_swapchain
          backend/headless: implement export_dmabuf
          build: improve summary via bool_yn
          render/egl: stop including eglmesaext.h
          backend/session: don't return FD on failure in open_file
          backend/session: operate on wlr_device
          backend/session: filter udev events by sysname
          backend/session: introduce wlr_session.events.add_drm_card
          backend/session: wait for DRM device if none found
          Revert "session/logind: support CanGraphical property"
          backend/session: replace session_signal with events.active
          backend/session/logind: log when using XDG_SESSION_ID
          backend/session: add a timeout waiting for GPUs
          backend/x11: log errors
          backend/x11: log unhandled X11 events
          backend/x11: log unhandled client messages
          backend/drm: stop force-probing connectors
          backend/wayland: don't set EGL visual
          render/egl: don't rely on being able to open primary node
          render: expand wlr_renderer_get{,_dmabuf}_formats docs
          render: remove wlr_renderer_format_supported
          render: introduce wlr_renderer_get_dmabuf_render_formats
          backend/headless: use a format suitable for rendering
          render: rename wlr_renderer_get_dmabuf_formats
          render: rename wlr_renderer_get_formats
          render: assert {X,A}RGB8888 are supported
          render/egl: remove wlr_egl.external_only_dmabuf_formats
          backend/drm: rotation is a plane property
          backend/drm: "scaling mode" is a connector property
          Revert "backend/drm: stop force-probing connectors"
          xwayland: add -core to flags
          build: add leftover WLR_HAS_LIBCAP
          backend/drm: take a wlr_drm_format in init_drm_surface
          render/drm_format_set: introduce wlr_drm_format_intersect
          backend/drm: query render formats
          backend/drm: remove unused if in drm_connector_move_cursor
          backend/session/libseat: set XDG_SESSION_TYPE
          render/egl: support config-less wlr_egl
          backend/headless: create a config-less EGL context
          backend/drm: use EGL_PLATFORM_GBM_KHR
          backend/drm: unset current surface before importing
          render/drm_format_set: allocate using cap when duplicating
          backend/drm: stop tracking overlay planes
          backend/headless: add support for direct scan-out
          backend/drm: fix missing wlr_drm_format.cap
          render/drm_format_set: assert len <= cap when duplicating
          backend/drm: remove EGL config
          render/gles2: don't eglGetConfigAttrib on EGL_NO_CONFIG_KHR
          render/gles2: query alpha size from render buffer
          output: improve basic test logging
          backend/drm: remove workaround for amdgpu DP MST
          output: stop assuming a frame is pending in init
          backend/wayland: stop rendering black frame on init
          backend/wayland: use wlr_swapchain for main surface
          backend/wayland: use wlr_swapchain for cursor surface
          build: move wayland-egl dependency to examples/
          backend/wayland: query render formats
          backend/x11: switch to wlr_swapchain
          backend/x11: query modifiers supported by X11 server
          backend/x11: fix xinput mask mixed up with present
          backend/drm: stop using GBM flags
          Remove inline keyword
          render/gles2: require GL_EXT_unpack_subimage
          backend/drm: dup FD before wlr_gbm_allocator_create
          backend: use fcntl(F_DUPFD_CLOEXEC) instead of dup
          backend/drm: add wlr_drm_connector.backend
          backend/headless: select the rendering device ourselves
          backend/x11: fix DRI3 formats not used
          render/allocator: ignore NULL in wlr_allocator_destroy
          backend/drm: remove nouveau workaround
          backend/drm: add wlr_drm_backend.name
          backend/drm: print DRM device name when scanning connectors
          render/drm_format_set: add wlr_drm_format_{create,add}
          backend/drm: use wlr_drm_format_{create,add}
          backend/x11: use DRI3Open to get DRM FD
          util/time: add timespec_from_nsec
          backend/x11: send more precise output present events
          backend/drm: introduce wlr_drm_conn_log
          backend/drm: introduce wlr_drm_connector.name
          backend/drm: refactor wlr_output destruction
          backend/drm: remove unused wlr_drm_plane.drm_format
          backend/wayland: remove EGL config
          backend/wayland: re-use wl_buffers
          backend/x11: re-use pixmaps
          backend/x11: destroy buffers when destroying output
          backend/drm: don't save texture in gbm_bo user data
          backend/drm: grab DMA-BUF from wlr_buffer instead of gbm_bo
          backend/drm: drop export_drm_bo
          backend/drm: make drm_fb_acquire return a FB ID
          backend/drm: remove drm_fb_acquire
          backend/drm: error on size mismatch in drm_surface_blit
          backend/drm: destroy DRM connectors that disappear
          backend/drm: assert connector state after wlr_output_destroy
          backend/drm: use plural form for possible_crtcs
          backend/drm: don't retry page-flip when modifiers are unsupported
          Remove contrib/_incr_version
          docs/env_vars: _WAYLAND_DISPLAY isn't used anymore
          docs/env_vars: document seatd session
          backend/drm: log whether ADDFB2 modifiers are supported
          backend/drm: add special case for cursor in add_plane
          backend/drm: make drmModePlane arg in add_plane const
          backend/drm: use connector log helpers in atomic backend
          client-buffer: remove unnecessary wlr_resource_get_buffer_size
          Stop using wlr_texture_get_size
          backend/drm: make listener names more idiomatic
          backend/x11: implement a real rendering loop
          backend/x11: create per-window present event contexts
          backend/drm: force LINEAR for cursor plane formats
          render/drm_format_set: add special case for LINEAR-only formats
          backend/drm: extract linear format creation into function
          backend/drm: remove special linear case for cursor plane
          Remove wlr_create_renderer_func_t
          backend/x11: always open render node
          backend/x11: print version on extension error
          backend/drm: ignore hotplug events while inactive
          backend/drm: stash pending page-flip CRTC
          examples: remove visual for EGL_PLATFORM_WAYLAND_EXT
          examples: request an EGL config
          backend/wayland: re-use cursor wl_buffers
          backend/session: allow wlr_session_find_gpus to return an error
          backend/wayland: remove unnecessary flags from event source
          render: remove EGL config and visual from wlr_renderer_autocreate
          backend/drm: don't log errno on plane_get_next_fb failure
          render/egl: document that config may be zero
          render/egl: use KHR function pointer type
          render/egl: document NULL config_attribs passed to wlr_egl_init
          backend/drm: make wlr_drm_plane.{pending,queued,current}_fb pointers
          backend/drm: introduce drm_fb_create
          backend/drm: add wlr_drm_buf.local_wlr_buf
          backend/drm: only keep track of local buffer
          backend/drm: re-use FBs
          backend/drm: stop using surface size for BO
          xwayland: remove protocol debug messages
          protocol: add drm.xml
          backend/wayland: use the EGL GBM platform
          output-damage: use output commit event
          gamma-control-v1: schedule frame when resetting gamma LUT
          build: remove Clang workarounds
          render/gles2: fix EGL use-after-free
          build: use more consistent feature names in summary
          render/egl: remove support for EGL_NATIVE_VISUAL_ID
          render/egl: remove wlr_egl_swap_buffers
          render/egl: replace init/finish with create/destroy
          render/egl: remove surface and buffer age args from make_current
          backend/drm: fix segfault in page_flip_handler
          backend/drm: remove unnecessary wlr_drm_fb.wlr_buf check
          render/gles2: save/restore EGL context in destroy_buffer
          render: document wlr_renderer_bind_buffer
          backend: remove unnecessary GLES2 includes
          output-damage: stop listening to scale/transform events
          output-layout: stop listening to scale/transform events
          output: remove scale/transform events
          render/gles2: restore EGL context after texture operations
          render/gbm_allocator: log GBM backend name
          render/gbm_allocator: document that DRM primary FDs work
          render/gbm_allocator: fix gbm_device use-after-free
          render: extract gles2 build files to subdir
          backend: add get_drm_fd to interface
          backend/multi: implement get_drm_fd
          backend/wayland: implement get_drm_fd
          backend/drm: implement get_drm_fd
          backend/x11: implement get_drm_fd
          backend/headless: implement get_drm_fd
          render/gles2: make EGL context current in bind_buffer
          output-damage: stop relying on output pending state on commit
          output: send commit event after pending state is cleared
          render/egl: fix gbm_device use-after-free
          render: introduce private wlr_renderer_autocreate_with_drm_fd
          backend/drm: use local DRM FD for wlr_rend
          backend/headless: create renderer after wlr_backend_init
          render/gbm_allocator: export to DMA-BUF on init
          render/gbm_allocator: set modifier to INVALID if implicit
          backend/x11: log when creating X11 backend
          backend/x11: log DRM node name
          backend/x11: add support for DRI3 1.0
          backend/x11: add xcb_dri3_pixmap_from_buffers check for n_planes
          backend/drm: add support for the subconnector property
          backend/drm: add wlr_drm_connector_get_id
          backend/drm: fix modifiers for cursor plane buffers
          backend/x11: fix region not being actually used
          Revert "render/egl: remove unused gbm_device member"
          Revert "render: add wlr_egl_create_from_drm_fd function"
          render/gbm_allocator: avoid drmPrimeHandleToFD
          backend/drm: document wlr_drm_plane surface fields
          backend/drm: simplify drm_fb_lock_surface
          backend/drm: don't blit in drm_fb_import
          xwayland: drop unused enum net_wm_state_action
          render/egl: fix NULL dereference when using llvmpipe
          xwayland: fix extraneous NET_WM_STATE log messages
          backend/x11: remove output_set_refresh
          backend/wayland: remove unnecessary cast
          render/egl: log whether DMA-BUF modifiers are supported
          render/dmabuf: cleanup on wlr_dmabuf_attributes_copy error
          render/dmabuf: make src arg const in wlr_dmabuf_attributes_copy
          region: make wlr_region_create private
          region: remove resource_list arg from region_create
          backend/wayland: flush remote display
          Fix bad indentation
          readme: fix typo in xcb-icccm dependency
          render/gles2: remove YUV blocklist
          backend/x11: drop x11-xcb dependency
          seat: use WL_SEAT_ERROR_CAPABILITY
          surface: check buffer size is compatible with scale
          build: remove extra whitespace
          examples: drop wlroots dep from egl_common.c
          examples: drop wlr/render/egl.h include from client examples
          examples: remove wlroots dep from client examples
          build: use dictionnary for features instead of configuration_data
          build: set have_* dep variables for our features
          build: set pkg-config variables for our features
          Replace leftover conf_data with features
          build: bump meson version to 0.56.0
          surface: move INVALID_SIZE check into surface_state_finalize
          surface: don't send protocol error on invalid buffer size
          backend: add error messages in attach_render impls
          render/gles2: check buffer stride when uploading texture
          render/gles2: remove current_buffer checks
          render/shm_format: add wl_shm_format conversion helpers
          render/gles2: convert format table to DRM formats
          render/gles2: replace wlr_gles2_texture.wl_format with drm_format
          render: use DRM formats in wlr_renderer_get_shm_texture_formats
          output: use DRM format in wlr_output_preferred_read_format
          render: use DRM formats in wlr_renderer_read_pixels
          render: use DRM formats in wlr_texture_from_pixels
          Remove unnecessary wayland-server-protocol.h includes
          build: add -Wformat=2 -Walloca
          build: rollback -Wformat=2
          buffer: add missing convert_wl_shm_format_to_drm call
          Fix wl_shm_format passed to wlr_texture_from_pixels
          examples: add libdrm partial dependency for compositors
          readme: make it clear build/ is a dir
          readme: use spaces for list indent
          readme: use references for links
          backend/session: fix KMS device filtering
          xwayland: add dependency on xwayland
          xwayland: check executable exists on init
          xwayland: use -listenfd if available
          backend/drm: add new writeback and SPI connector types
          output: document hotspot coord space
          output: fix transform matrix for 90/270 rotations
          render/egl: don't fail on EGL_MESA_device_software
          screencopy: stop using wlr_renderer_blit_dmabuf
          Fix buffer blit matrices
          ci: update xwayland dep on alpine
          examples/dmabuf-capture: stop using av_init_packet
          linux-dmabuf-v1: always advertise support for implicit modifiers
          surface: introduce commit sequence numbers
          surface: introduce cached states
          subsurface: use cached surface state
          subsurface: immediately unlock cached state in set_desync
          render/egl, backend/wayland: add workaround for split render/display setups
          xwayland: assume no WM_HINTS means window wants input
          xwayland: require xcb-icccm
          xwayland: use ICCCM state defines from xcb-icccm
          backend/drm: use format table in test_buffer
          build: add subproject fallback for libseat
          surface: make wlr_surface_create private
          surface: remove resource_list arg from surface_create
          render/egl: stop relying on platform for high priority
          backend/drm: try to import buffer when testing it
          backend/drm: improve logs in drm_fb_create
          backend/drm: reject DMA-BUFs with flags
          backend/x11: reject DMA-BUFs with flags
          build: simplify HAS_LIBUUID definition
          build: use get_variable instead of get_pkgconfig_variable
          backend/drm: don't set NONBLOCK with TEST_ONLY
          backend/drm: downgrade test-only commit failure log level
          backend/drm: use atomic test-only commits for direct scan-out
          backend/drm: stop testing for buffer in drm_connector_commit_buffer
          build: bump to v0.13.0
    
    Simon Zeni (15):
          ci: build tinywl
          tinywl: fix wlr_backend_autocreate call
          backend: remove wlr_egl from all backends
          remove unnecessary egl includes
          render: drop egl parameters from wlr_renderer_autocreate
          render: remove egl include from wlr_renderer
          render: add wlr_egl_create_from_drm_fd function
          render/egl: remove unused gbm_device member
          render/egl: fail to create wlr_egl on software renderer
          output: improve transform matrix calculation
          render/pixel_format: introduce pixel format info table
          Move render/shm_format functions to render/pixel_format
          backend/drm: use pixel format table in renderer
          render/pixel_format: add XBGR8888 and ABGR8888 format
          render/gles2: remove depth and bpp gles2_pixel_format, use drm pixel format
    
    Stephane Chauveau (1):
          backend/drm: don't assume possible_crtcs has only one bit set
    
    Tadeo Kondrak (3):
          xdg-foreign: Make imported object inert when exported is destroyed
          xdg-foreign: rename finish_* functions to destroy_*
          text_input_v3: correct typo in enum field
    
    Tudor Brindus (21):
          xwayland: use wlr_log_errno instead of %m
          xwayland/selection: prevent fd leak on unsupported MIME type
          xwayland/selection: rename Wayland-facing data and helpers
          xwayland/selection: make `xwm_data_source_write` return 0 on failure
          xwayland/selection: explicitly bail if first write to Wayland fd fails
          xwayland/selection: simplify incremental transfer control flow
          xwayland/selection: extract out property requests
          xwayland/selection: refactor remaining incremental transfer code
          xwayland/selection: end incr transfer on empty prop, not next selection
          xwayland/selection: don't request another selection while one is pending
          xwayland/selection: don't leak Wayland fd if ConvertSelection fails
          xwayland/selection: destroy all selections on Xwayland restart
          xwayland/selection: make xwm_selection_finish take a wlr_xwm_selection *
          xwayland/selection: introduce `xwm_selection_transfer_init`
          xwayland/selection: make xwm_selection_init take a wlr_xwm_selection *
          xwayland/selection: use one X11 window per incoming transfer
          xwayland/selection: use one target window per selection
          xwayland/selection: allow simultaneous Wayland-to-X11 transfers
          xwayland/selection: ignore requests for anything but the newest data
          xwayland/selection: log when proxy window loses ownership
          xwayland/selection: flush connection after changing xwm selection owner
    
    fwsmit (1):
          examples/foreign-toplevel: Add documenation and output selection
    
    zccrs (2):
          Use absolute paths in include in header files
          render/egl: check "EGL_KHR_platform_gbm" for EGL gbm platform
    
    
  • 0.12.0
    238d1c07 · Update version to 0.12.0 ·
    wlroots 0.12.0
    
    Antonin Décimo (3):
          Fix typos
          Fix incorrect format parameters
          xwayland: free server in error path
    
    Daniel De Graaf (1):
          wlr_virtual_keyboard: fix fd leak
    
    Daniel Kondor (2):
          foreign-toplevel-management: report parent toplevel
          foreign toplevel: send parent event only to clients that support it
    
    Devin J. Pohly (1):
          drm: fix uninitialized read
    
    Drew DeVault (1):
          Remove xdg-shell v6
    
    Guido Cella (1):
          render: Don't crash on 0 dimensions
    
    Ilia Bozhinov (9):
          xwayland: do not allow apps to change focus after wlroots request
          make sure to fail setting gamma on disabled outputs
          backend/wayland: destroy relative pointer when output is disconnected
          wayland: emit relative pointer events only for current pointer
          xwayland: disconnect display destroy listener even if xwayland didn't initialize
          xwayland: add set_geometry event
          backend/wayland: add touch support to the wayland backend
          xdg_shell: fix a typo
          xdg_shell: handle inert popups
    
    Isaac Freund (6):
          xdg-shell: split last-acked and current state
          layer-shell: add for_each_popup
          layer-shell: error on 0 dimension without anchors
          xdg_positioner: remove unused field
          wlr_drag: remove unused point_destroy field
          xwayland: remove unused listener
    
    Kenny Levinsen (2):
          session: Add libseat backend
          session: Add missing init to direct-freebsd
    
    Marten Ringwelski (1):
          backend/drm: Check if output is enabled before sending frame event
    
    Mykola Orliuk (5):
          backend/wayland: manage cursor for current pointer
          backend/wayland: factor out wlr_wl_seat
          backend/wayland: add error flow in create_wl_seat
          backend/wayland: fix input creation error handling
          backend/wayland: fix some keyboard/touch leaks
    
    Patrick Steinhardt (1):
          session: Don't refuse unprivileged creation of "direct" backend
    
    Roman Gilg (3):
          output-management-v1: add head identifying events
          output-management-v1: send head identifying information
          output-management-v1: send complete head state on enable change
    
    Ronan Pigott (1):
          virtual_pointer: remember current axis for axis events
    
    Rouven Czerwinski (2):
          examples: remove unnecessary gles2.h imports
          xwm: add loop detection for read_surface_parent
    
    Ryan Walklin (4):
          Implement logind session SetType method to change session type to wayland
          Also set XDG_SESSION_TYPE
          Don't set XDG_SESSION_TYPE unless logind SetType succeeds
          Quieten failure to set login session type
    
    Scott Moreau (2):
          xwm: Set _NET_WM_STATE_FOCUSED property for the focused surface
          foreign toplevel: Fix whitespace error
    
    Simon Ser (31):
          xwayland/xwm: don't insert surface in list on error
          xwayland/xwm: add prop count assert in xsurface_set_net_wm_state
          xwayland/xwm: use initializer for props in xsurface_set_wm_state
          render/gles2: make wlr_gles2_texture_from_* private
          render/gles2: keep ref to wlr_gles2_renderer in wlr_gles2_texture
          render/gles2: make push/pop debug functions take a wlr_renderer
          render/gles2: remove gles2_procs
          gamma-control-v1: fix use-after-free in gamma_control_handle_set_gamma
          examples/simple: use wlr_output_preferred_mode
          examples/simple: use wlr_renderer instead of GL
          Remove unnecessary wl_display_dispatch calls
          output: introduce wlr_output_event_commit
          output-power-management-v1: listen to output commit
          examples/dmabuf-capture: add extra roundtrip for wl_output listener
          backend/session/libseat: register log handler
          backend: remove check for _WAYLAND_DISPLAY
          backend/libinput: improve logger callback
          render: define EGL_NO_PLATFORM_SPECIFIC_TYPES (#2452)
          backend/drm: fix "a page-flip is already pending" errors on modeset
          xwayland: minor code style fixes
          xwayland: log unhandled NET_WM_STATE property changes
          gamma-control-v1: apply gamma LUT when output gets enabled
          screencopy: stop setting needs_frame flag
          backend/drm: export pending FB in export_dmabuf, if any
          output: update docs to reflect reality
          output: add when field to wlr_output_event_commit
          export-dmabuf: export DMA-BUF on output commit
          screencopy: perform DMA-BUF copy on output commit
          screencopy: send failed when copying a DMA-BUF with a region
          input-method: send modifiers in set_keyboard
          Update version to 0.12.0
    
    Tobias Langendorf (1):
          xwm: add support for xwayland minimize
    
    Tudor Brindus (11):
          examples: use `perror` instead of `fprintf` GNU %m `printf` extension
          xwayland: using %m in `wlr_log` is broken, use `wlr_log_errno` instead
          xwayland: fix use-after-free in selection handling
          xwayland: introduce WLR_XWAYLAND for specifying which Xwayland to use
          xwayland: remove stale transfers from the same requestor
          xwayland: notify requestor when we fail to respond to their request
          xwayland: fix minor typo in debug log
          types/wlr_keyboard: use bitmasks for wlr_keyboard_led and wlr_keyboard_modifier enums
          types/wlr_output_layout: use bitmask for wlr_direction
          util/edges: use bitmask for wlr_edges
          render/dmabuf: use bitmask for wlr_dmabuf_attributes_flags
    
    Valentin (2):
          Use fixed size integer type
          Fix undefined behavior
    
    nerdopolis (1):
          Accommodate for CONFIG_VT=0, all TTYs are in seat0, but not all seat0s have TTYs
    
  • 0.11.0
    751a21d9 · Update version to 0.11.0 ·
    wlroots 0.11.0
    
    Aleksei Bavshin (1):
          xdg-shell: fix popups rendered outside of the screen
    
    Andri Yngvason (15):
          virtual-pointer: Add request for mapping to specific output
          export-dmabuf: Schedule output frame on request
          export-dmabuf: Keep frame->output = NULL until frame is ready
          render: egl: Add utility functions for saving/restoring context
          render: Add wlr_renderer_blit_dmabuf()
          protocol: screencopy: Extend to report linux-dmabuf capability
          screencopy: Implement copying into linux-dmabuf
          examples: Add screencopy-dmabuf example
          render: Fix blit_dmabuf() breakage due to API change
          backend: drm: Fix dmabuf resource leak
          screencopy: Use correct constant for y-inversion
          render: gles2: Fix y-inversion in gles2_blit_dmabuf()
          screencopy: Use correct dmabuf to get y-inversion flag
          examples: screencopy-dmabuf: Fix y-inversion
          render: egl: Use current display to restore NULL context
    
    Brian Ashworth (2):
          meson.build: update wayland requirement to 1.18
          wlr_keyboard_group: introduce enter and leave
    
    David96 (1):
          Add wlr_surface_accepts_touch
    
    Dorota Czaplejewicz (1):
          text_input_v3: Note features supported by the text field
    
    Filip Sandborg (1):
          Fix uint32 overflow in fill_empty_gamma_table on Icelake platform
    
    Greg Depoire--Ferrer (1):
          tinywl: Fix wrong anchor point while resizing a window
    
    Greg V (1):
          xdg-shell: check for existing role before setting xdg_popup_surface_role
    
    Guido Günther (4):
          Add wlr-output-power-management
          Implement wlr-output-power-management-v1
          examples: add output-power-management example client
          wlr_output_power_management_v1: Init output_power->link
    
    Ilia Bozhinov (2):
          output-management: add current_configuration_dirty
          examples: make output-power-management oneshot by default
    
    Isaac Freund (16):
          Send keyboard enter/leave on capability change
          Properly popluate keys array for enter on creation
          Send pointer enter/leave on capability change
          Return failure of wlr_renderer_init_wl_display()
          Return false on wlr_keyboard_set_keymap() failure
          tinywl: remove redundant create output global call
          Document the events of wlr_layer_surface
          tinywl: remove unused variables
          tinywl: handle request set selection
          layer shell: only send unmap on close if mapped
          Make wlr_xcursor_manager_load() return a bool
          layer-shell: handle serial wrapping overflow
          xdg-shell: handle serial wrapping overflow
          xdg-decoration: free old configure structs
          layer-shell: upgrade to v3, implement destructor
          layer-shell: remove unused surface list
    
    Jan Beich (2):
          backend/session: allow GPU enumeration on FreeBSD
          xcursor: also look for cursor themes under ${datadir}/icons by default
    
    Jan Staněk (1):
          Declare wlr_seat globals as extern
    
    John Chadwick (1):
          xwm: end transfers when the requestor is destroyed
    
    JonnyMako (1):
          backend/drm: fix missing cursor on external monitors with multi-GPU setup and nouveau
    
    Julien Olivain (1):
          render/egl: include EGL/eglmesaext.h only if present
    
    Kalyan Sriram (2):
          tinywl: fix geo_box bug in cursor resizing
          Don't send redundant capability updates
    
    Kenny Levinsen (3):
          logind: Close fd before releasing device
          seat: Create inert objects for missing capabilities
          wlr_drag: Destroy drag after releasing grabs
    
    Kirill Chibisov (1):
          xcursor: add xorg-x11 and cursors path to XCURSORPATH
    
    Manuel Stoeckl (2):
          Fix output rotation direction
          output: fix output transform compositions
    
    Michael Weiser (3):
          keyboard-shortcuts-inhibit: Implement the protocol
          keyboard-shortcuts-inhibit: Add client example
          idle-inhibit: Style and naming improvements
    
    Rabit (1):
          Prevent memory leak in copypaste of the screencopy example
    
    Rouven Czerwinski (4):
          backend/drm: add env variable to disable modifiers
          backend/drm: remove overzealous finish_drm_surface
          render: assert sane values for box functions
          surface: don't unset width and height in finalize
    
    Scott Anderson (8):
          meson: Fix protocol includes for compositor examples
          examples: Fix compositor-examples
          wlr_surface: Post error if multiple role objects created
          backend/drm: introduce wlr_drm_fb
          backend/drm: don't have fallback atomic commits
          backend/drm: move atomic cursor code into pageflip code
          backend/drm: don't allow legacy to use direct scanout
          Remove libcap support
    
    Scott Moreau (3):
          build: Add 'auto' to logind-provider combo option
          xwayland: Don't discard ready signals
          xwm: Destroy xwm on hangup or error
    
    Simon Ser (129):
          build: replace version with soversion
          render: unconditionally disable implicit X11 includes
          meson: fix wayland-server minimum required version
          util: add wlr_output_destroy_safe
          output: don't destroy global immediately
          seat: don't destroy global immediately
          xwayland: ignore pointer focus changes
          backend/wayland: rename wl_seat.c to seat.c
          output: remove wlr_output_impl.schedule_frame
          backend/wayland: fix seat caps handling
          Introduce wlr_client_buffer
          output: add adaptive_sync_enabled property
          backend/x11: add support for adaptive_sync_enabled
          backend/drm: add support for adaptive_sync_enabled
          xwayland: use explicit indexes when initializing atom_map
          xwayland: remove duplicate _NET_WM_NAME entry
          xwayland: remove underscore prefix from atom names
          output: make wlr_output_schedule_frame set output->needs_frame
          output: don't send a needs_frame event if already sent
          util/log: improve time prefix
          render/gles2: remove duplicated format list
          buffer: remove unused wlr_client_buffer fields
          output: add comment about needs_frame in wlr_output_schedule_frame
          output: replace wlr_output.damage with a damage event
          backend/wayland: close keymap FD
          Gracefully handle inert wl_output resources
          buffer: add destroy event
          buffer: add a release event
          buffer: add width and height
          output: introduce wlr_output_test
          output: check buffer in wlr_output_test
          backend: reset EGL surface after buffer swap
          Add wlr_output_impl.rollback
          render/egl: make config attribs const
          backend: set EGL_RENDERABLE_TYPE and EGL_SURFACE_TYPE
          render/gles2: only call wlr_egl_bind_display if supported
          render: only expose linux-dmabuf if EGL extension is supported
          output: fix blurred hw cursors with fractional scaling
          output: check for buffer size compatibility in common code
          backend/wayland: check scan-out buffer is compatible in output_test
          output: fix maybe-uninitialized warning
          backend/multi: add backends at end of list
          build: use meson.override_dependency
          build: use dicts instead of get_variable
          build: use summary instead of message
          output_layout: improve docs
          render/drm_format_set: disallow DRM_FORMAT_INVALID
          render/gles2: add wlr_gles2_renderer_check_ext
          backend/headless: use FBOs instead of pbuffers
          backend/headless: add wlr_headless_backend_create_with_renderer
          render/texture: add width and height fields
          render/texture: make write_pixels optional
          backend/drm: strip alpha channel if necessary
          Remove .swp file added by mistake
          util/log: write log importance
          backend/drm: make page-flip error scarier
          examples/dmabuf-capture: use getopt
          backend/multi: handle backends depending on each other properly
          backend/headless: handle renderer destroy
          backend/drm: remove wlr_drm_interface.crtc_move_cursor
          backend/drm: remove unused fields
          backend/drm: remove mode argument to crtc_pageflip
          backend/drm: apply gamma LUT on page-flip
          backend/drm: rename crtc_pageflip to crtc_commit
          backend/drm: remove conn_enable from interface
          backend/drm: remove crtc_set_cursor from interface
          backend/drm: GAMMA_LUT_SIZE isn't atomic
          backend/drm: simplify atomic commit logic
          backend/drm: fix crash in session_signal
          backend/drm: remove missing cursor plane workaround
          backend/drm: fix combined modeset+enable commits
          backend/drm: disable cursor in dealloc_crtc
          backend/drm: print error in set_plane_props
          backend/drm: fix segfault in drm_crtc_page_flip
          output: make wlr_output_set_gamma atomic
          backend/drm: fix atomic commits when the GAMMA_LUT prop is missing
          Fix -Wreturn-type warnings
          render/egl: introduce wlr_egl_unset_current
          backend/drm: fix current EGL context on multi-GPU
          backend/drm: add missing wlr_egl_unset_current
          xwayland: split server
          xwayland: add option to disable WM
          render/egl: unset current context after swapping buffers
          backend/drm: rollback atomic blobs
          backend/drm: refuse to enable an output without a mode
          backend/drm: remove drm_connector_set_custom_mode
          backend/drm: remove enable_drm_connector
          backend/drm: make drm_connector_set_mode take a wlr_drm_connector
          backend/drm: nuke retry_pageflip
          backend/drm: introduce pending and current CRTC state
          backend/drm: don't set cursor if off-screen
          backend/drm: fix missing crtc->cursor NULL check
          Add comments for missing tablet tool entries
          backend/drm: rollback pending CRTC state on test commit
          backend/drm: make adaptive_sync atomic
          backend/drm: commit/rollback FBs in drm_crtc_commit
          backend/drm: drop extra wlr_output_update_enabled call
          backend/drm: always perform a CRTC commit in drm_connector_commit
          backend/wayland: fix spurious eglSwapBuffers failures
          render: stop making EGL context current in wlr_egl_init
          backend/drm: fix black screens when enabling output
          render: choose DMA-BUF texture target via eglQueryDmaBufModifiersEXT
          contributing: resource destroy handlers need to cleanup pointers
          contributing: add note about events that destroy objects
          backend/drm: fix stack overflow in dealloc_crtc
          buffer: document wlr_buffer_get_dmabuf DMA-BUF lifetime
          output: document wlr_output_export_dmabuf
          render/egl: explicit client extension handling
          examples/screencopy-dmabuf: call strncpy with maxlen - 1
          examples/fullscreen-shell: stop advertising linux-dmabuf unconditonally
          render/gles2: use .x/.y instead of .s/.t
          box: add wlr_fbox
          util/region: add wlr_region_scale_xy
          render: add wlr_render_subtexture_with_matrix
          surface: add wlr_surface_state.viewport
          surface: introduce wlr_surface_get_buffer_source_box
          viewporter: new protocol implementation
          surface: ignore viewport src rect on NULL buffer
          render/egl: print error name
          output: rename impl->rollback to rollback_render
          output: make rollback_render mandatory
          output: fix dangling renderer context after wlr_output_preferred_read_format
          backend/noop: add missing rollback_render output impl
          examples/pointer: fix wlr_renderer_end call order
          output: add backend docs
          backend/drm: fix DPMS on legacy interface
          backend/drm: fix typo in drm_surface_make_current arg
          backend/drm: check drm_surface_make_current return value
          Update version to 0.11.0
    
    Simon Zeni (1):
          render/gles2: use glGetAttribLocation instead of hardcoded indices
    
    Thomas Hebb (3):
          wlr_seat: Declare functions in the same order for pointer, keyboard, and touch
          wlr_seat: Clarify wording of non-grab-respecting function comments
          Allow keyboard and pointer grabs to hook clear_focus()
    
    Tudor Brindus (19):
          backend/libinput: correctly populate x/y fields on tablet proximity in
          input/tablet: populate tool tip event position
          input/tablet: fix up updated axes after rotation
          input/tablet: clear focused surface on surface destroy
          wlr/types: use bitshifts for tablet axes enum
          backend/wayland: emit tablet tool axis events to the axis handler
          input/keyboard: expose keymap matching helper
          input/pointer: notify compositor when constraint region changes
          tablet: pass motion events to implicitly grabbed surface
          tablet: expose wlr_tablet_tool_v2_has_implicit_grab function
          util/log: use bright black rather than black for WLR_DEBUG
          xwayland: send focus change event unconditionally
          xwayland: add error-checking to `server_start_lazy`
          backend/wayland: scale tablet tool position into [0, 1] range
          util: fix and move `get_current_time_msec` into a util file
          util/time: de-duplicate `timespec_to_msec`
          util/time: move `timespec_sub` to time utilities
          input/keyboard: send modifiers on first keyboard enter
          input/pointer: add wlr_seat_pointer_wrap
    
    Tudor Roman (1):
          seat: add selection event docs
    
    Will Daly (1):
          Fix error when reconnecting external display
    
    j-n-f (1):
          examples: fix improper use of `free`
    
    r-c-f (1):
          seat: add check for NULL keyboard
    
    xdavidwu (3):
          virtual-keyboard: add wlr_input_device_get_virtual_keyboard
          input-method: implement keyboard grabs
          examples/input-method-keyboard-grab: new example
    
    
  • 0.10.1
    0c7c5624 · Update version to 0.10.1 ·
    wlroots 0.10.1
    
    This is a bugfix release for wlroots 0.10.0.
    
    Aleksei Bavshin (1):
          xdg-shell: fix popups rendered outside of the screen
    
    Scott Anderson (2):
          meson: Fix protocol includes for compositor examples
          examples: Fix compositor-examples
    
    Simon Ser (2):
          xwayland: ignore pointer focus changes
          Update version to 0.10.1
    
  • 0.10.0
    57ffb35d · Update version to 0.10.0 ·
    wlroots 0.10.0
    
    Drew DeVault (1):
          Drop RDP backend
    
    Jan Staněk (1):
          Honor the `examples` meson setting
    
    Jason (1):
          Allow WLR_RDP_PORT to be any valid TCP/UDP port number
    
    Scott Anderson (1):
          Bump meson version to 0.51.2
    
    Simon Ser (9):
          backend/wayland: listen to wl_buffer.release events
          backend/wayland: handle display errors more gracefully
          render/egl: remove SURFACELESS_MESA special case
          render/gles2: unbind textures after use
          docs: remove rootston-specific env vars
          docs: establish one section per backend
          docs: document XDG_SESSION_ID
          backend/drm: prevent outputs from being destroyed on commit
          keyboard-group: two NULL keymaps are equal
    
    xdavidwu (1):
          text-input: fix missing destroy signal init
  • 0.9.1
    a2cbb4e4 · Update version to 0.9.1 ·
    wlroots 0.9.1
    
    Andri Yngvason (1):
          virtual-pointer: Actually use the value passed to axis_discrete
    
    Ilia Bozhinov (1):
          xwm: allow applications to change focus between their own surfaces
    
    Simon Ser (1):
          backend/wayland: fix frame callback not registered
  • 0.9.0
    1c5ca793 · Update version to 0.9.0 ·
    wlroots 0.9.0
    
    Alynx Zhou (1):
          Skip assign when sub_x or sub_y is NULL in wlr_surface_surface_at
    
    Andri Yngvason (3):
          output: Add commit sequence number
          protocol/screencopy: Add damage reporting
          screencopy: Implement damage reporting
    
    Brian Ashworth (2):
          Introduce wlr_keyboard_group
          wlr_keyboard_group: fix mem leak in refresh_state
    
    Danilo Spinella (1):
          Add new define EGL_NO_X11 for newer mesa library
    
    Dorota Czaplejewicz (1):
          virtual_keyboard: Accept keycode 0
    
    Drew DeVault (1):
          Introduce wlr_renderer_get_egl
    
    Ferdinand Bachmann (1):
          Add missing include required by mesa and libglvnd change
    
    György Kurucz (1):
          Fix heap-use-after-free in wlr_send_tablet_v2_tablet_pad_leave
    
    Ilia Bozhinov (1):
          wlr_box: properly calculate closest point for non-positive area boxes
    
    Ivan Molodetskikh (1):
          output: add block_idle_frame
    
    Jan Beich (1):
          examples: set mode when creating shm object
    
    Jason (2):
          Amend typos
          Amend typo
    
    Josef Gajdusek (1):
          virtual-pointer: Add support for the wlr-virtual-pointer-unstable-v1
    
    Manuel Stoeckl (1):
          output: fix cursor wl_surface.{enter,leave} tracking
    
    Ronan Pigott (2):
          session/logind: support CanGraphical property
          render/gles2: do not set GL_TEXTURE_MAG_FILTER
    
    Rouven Czerwinski (1):
          backend/drm: print preferred mode
    
    Scott Anderson (8):
          backend/x11: Give X11 a real rendering loop
          session/logind: Clean up add_signal_matches
          render/gles: Simplify textures a bit
          backend: Do not attempt DRM on X11/WL failure
          backend/x11: Drop required present version
          backend/x11: Revert usage of present extension
          meson: Various improvements
          meson: Remove tag generation
    
    Scott Moreau (3):
          xwayland: Expose configure request mask
          build: Pass library as first argument to pkgconfig.generate()
          xwayland: Clean up if Xwayland fails to start
    
    Simon Ser (51):
          build: workaround for meson disabler object not working with if not
          render/egl: support formats with zero modifiers
          backend/drm: use modifiers for our GBM buffers
          build: simplify by using disabler deps
          backend/wayland: add support for direct scan-out
          render/gles2: don't unset the current EGL surface when destroying texture
          protocol: sync layer-shell with upstream
          backend/drm: track gbm_bo during direct scan-out
          render/egl: prevent use-after-free when destroying current surface
          backend/drm: retry without modifiers for the primary plane
          backend/drm: add support for custom modes
          output-management-v1: add assertion as a safety net
          render: remove EGL includes from wlr_texture.h
          render/gles2: provide public API to access GL texture
          backend/wayland: add support for relative-pointer-unstable-v1
          backend/wayland: expose remote objects
          output: add wlr_output_event_present.commit_seq
          Add -Wmissing-prototypes
          output: set wlr_output.commit_seq before firing the commit event
          output: fix off-by-one wlr_output_event_present.commit_seq
          presentation-time: make API more flexible
          presentation-time: add helper for common case
          backend/wayland: add support for presentation-time
          render: remove return in wlr_texture_get_size
          Simplify globals implementation by removing destructors
          Revert "output: add block_idle_frame"
          keyboard: emit key events without keymap
          backend/drm, backend/libinput: listen to session destroy
          backend/drm: fix segfault in init_drm_surface
          backend/drm: add BenQ to manufacturer list
          buffer: improve error handling
          surface: don't unref the current buffer on failure
          output: fix wlr_output_preferred_mode fallback
          Refactor EGL/GL API loading
          ci: add xorgproto dep to Arch build
          render: fix EGL extensions not loaded
          Revert "ci: add xorgproto dep to Arch build"
          ci: add a build run with all features disabled
          output: add description
          xdg-output-v1: use wlr_output.description
          output-management-v1: use wlr_output.description
          output: re-introduce atomic mode, enabled, scale and transform
          backend/drm: modeset before enabling an output
          output: clear pending bit if pending == current
          output: refuse to commit a buffer or modeset a disabled output
          tinywl: enable and commit output when modesetting
          xdg-shell: fix inert xdg_surface handling
          xdg-shell: make wlr_xdg_surface_from_resource reject NULL
          output: only advertise current mode
          backend/drm: don't modeset with a NULL mode after TTY switch
          render: guard rendering operations between begin() and end()
    
    Timidger (2):
          layer_shell: set layer of existing surface
          Use layer shell v2
    
    Ting-Wei Lan (1):
          backend/session/freebsd: Fix the way to get TTY path
    
    myfreeweb (1):
          Send tablet tool frame on proximity_out
    
    n3rdopolis (2):
          Update environment variable documentation to include more backends
          note libinput as well
  • 0.8.1
    b051bb68 · Update version to 0.8.1 ·
    wlroots 0.8.1
    
    This update fixes Drew's continued ability to find novel ways to mess up
    releases.
    
    Filip Sandborg (1):
          render/gles2: fix calculation for partial gles2 pixel read (#1809)
    
    Ilia Bozhinov (1):
          layer-shell: ignore ack_configure() on closed surfaces
    
    Ivan Molodetskikh (2):
          presentation_feedback: add the sampled state
          drm: use IMPORT_FD for INVALID modifier
    
    Markus Ongyerth (3):
          Move initialization of wlr_tablet_pad into types/wlr_tablet_pad
          Add zwp-tablet-unstable-v2 client support
          Clean up wayland backend tablet support
    
    Rouven Czerwinski (1):
          backend/drm: check for mst: in path property
    
    Scott Anderson (1):
          render/egl: Change KHR_debug log to include error code
    
    Sebastian Krzyszkowiak (1):
          wlr_seat_touch: Destroy the touchpoint on client destroy
    
    Simon Ser (1):
          compositor: disconnect client on OOM in create_surface
    
    Versus Void (1):
          xdg-output: send wl_output.done after xdg_output created
    
    amingin (1):
          Fixes crash of compositor when unvalidated keycode 0 is passed (#1833)
  • 0.8.0
    df77592b · Update version to 0.8.0 ·
    wlroots 0.8.0
    
    wlroots 0.8.0 includes the following breaking changes:
    
    	presentation_feedback: add the sampled state
    
    The wlr_presentation_time structures have been rewritten. To correctly
    support presentation-time, use wlr_presentation_surface_sampled after
    you sample (read from) each surface.
    
    Changelog:
    
    Drew DeVault (4):
          wlr_idle_inhibit_v1: style fixes
          drm backend: detect non-desktop outputs
          drm backend: implement DRM lease issuance
          Introduce wlr_drm_lease_v1
    
    Filip Sandborg (1):
          render/gles2: fix calculation for partial gles2 pixel read (#1809)
    
    Ilia Bozhinov (1):
          layer-shell: ignore ack_configure() on closed surfaces
    
    Ivan Molodetskikh (1):
          presentation_feedback: add the sampled state
    
    Rouven Czerwinski (1):
          backend/drm: check for mst: in path property
    
    Scott Anderson (1):
          render/egl: Change KHR_debug log to include error code
    
    Sebastian Krzyszkowiak (1):
          wlr_seat_touch: Destroy the touchpoint on client destroy
    
    Simon Ser (1):
          compositor: disconnect client on OOM in create_surface
    
    Versus Void (1):
          xdg-output: send wl_output.done after xdg_output created