Tags

Tags give the ability to mark specific points in history as being important
  • 0.20.0-rc4

    wlroots 0.20.0-rc4
    
    Diego Viola (1):
          treewide: fix typos
    
    Kenny Levinsen (1):
          scene/layer_shell_v1: Add support for exclusive_edge
    
    Simon Ser (7):
          render/vulkan: introduce buffer_import_sync_file()
          render/vulkan: take render pass in vulkan_sync_render_buffer()
          render/vulkan: fix missing DMA-BUF implicit read fence for textures
          render/vulkan: introduce buffer_export_sync_file()
          render/vulkan: add "acquire" to vulkan_sync_foreign_texture()
          render/vulkan: fix missing DMA-BUF implicit write fence for render buffer
          build: bump version to 0.20.0-rc4
    
    Wang Yu (1):
          xwayland: fix memory leak on pipe() failure
    
    YaoBing Xiao (1):
          render/gles: use optimized clears for unblended rects
    
    liupeng (1):
          screencopy: simplify capture error handling
    
  • 0.20.0-rc3

    wlroots 0.20.0-rc3
    
    Isaac Freund (1):
          backend/x11: reject shm buffers with non-min strides
    
    Kenny Levinsen (1):
          backend/drm: Close non-master drm fd on failure
    
    Simon Ser (2):
          backend/libinput: guard against new enum entries
          build: bump version to 0.20.0-rc3
    
    hrdl (1):
          CONTRIBUTING.md: update git host
    
  • 0.20.0-rc2

    wlroots 0.20.0-rc2
    
    Aleksei Bavshin (2):
          backend/libinput: fix build with libinput 1.31
          backend/libinput: add support for LIBINPUT_SWITCH_KEYPAD_SLIDE
    
    Simon Ser (2):
          xwayland: try flushing immediately in xwm_schedule_flush()
          build: bump version to 0.20.0-rc2
    
    Steve Williams (6):
          render/pixel-format: add function to determine YCbCr from drm fourcc
          vulkan: make use of new pixel_format_is_ycbcr function
          color_representation: ensure encoding/range/drm formats compatibility
          color-representation: add support for identity+full
          types/wlr_buffer: add buffer_get_drm_format helper function
          color-representation-v1: fix condition in surface commit
    
    YaoBing Xiao (2):
          xwayland: fix wl_array rollback when adding selection targets
          output/cursor: fix missing newline at end of file
    
    liupeng (2):
          render/drm_syncobj: drop unnecessary drmSyncobjTimelineWait() arg
          render/drm_syncobj: fix function name in drmSyncobjTimelineWait() error log
    
    rewine (4):
          types: Simplify wlr_keyboard_group_destroy
          wlr_cursor: add comments for signal parameters
          wlr_cursor: fix event type in handle_tablet_tool_button
          ext_image_capture_source_v1: remove unused variable
    
  • 0.20.0-rc1

    wlroots 0.20.0-rc1
    
    Alexander Orzechowski (5):
          wlr_scene: Make restack_xwayland_surface_below generic
          wlr_scene: Don't recurse when disabling scene node if a child is already disabled
          wlr_scene: Update outputs when node is disabled
          wlr_scene: Only do disable cleanup when explicit damage is given
          wlr_scene: Add documentation to scene_node_update()
    
    Andri Yngvason (1):
          ext-image-capture-source: output: Apply transform to cursor
    
    Christopher Snowhill (2):
          color_management_v1: set output color properties
          color-representation-v1: Fix missing destroy signal init
    
    Consolatis (2):
          wlr_text_input_v3: remove event arguments from header
          transient_seat: initialize seat destroy listener
    
    Dale Turner (1):
          Add "const" to eliminate "error: initialization discards ‘const’ qualifier from pointer target type"
    
    David Turner (8):
          Change all timespec pointers in events to owned
          xwayland: Remove has_utf8_title field
          scene: Block damage on single-pixel buffer textures
          util/mem: Move memdup to new util/mem.c file
          color-representation-v1: new protocol
          color-representation-v1: Add wlr enums + converters
          color-representation-v1: Actually set supported_*_len
          xwm: Fix double-close
    
    David96 (1):
          wlr_virtual_pointer: Set axis source on all axis
    
    DreamMaoMao (1):
          render/pass: Ensure the precision is consistent during comparison
    
    Furkan Sahin (2):
          input-method-v2: Destroy keyboard grab before input method
          backend/session: use device `boot_display`
    
    Félix Poisot (21):
          scene: fix output transfer functions
          render: introduce Gamma 2.2 color transform
          scene, render: use Gamma 2.2 TF as default
          drm: save edid color characteristics in wlr_output
          cursor: apply output image description when preparing texture
          output/state: add missing unref for color_transform
          render/vulkan: fix single-pass linear path
          render/color: add wlr_color_primaries_transform_absolute_colorimetric
          render/vulkan: apply "matrix" color transforms in shader
          scene: always apply user gamma after scene color transform
          render: remove buffer primaries from pass options
          scene: don't rebuild color transforms each frame
          output: don't rebuild cursor color transform for each update
          render/color: make wlr_color_primaries_from_named public
          render/color: introduce color_transform_compose
          render/color: assert that wlr_color_transform_pipeline contains no NULLs
          meson: bump minimum wayland-protocols version
          color_management_v1: relax restrictions on maxCLL and maxFALL
          color_management_v1: use 64bit image description identities
          color_management_v1: new enum value for 'srgb' transfer function
          render: don't infer luminance multipliers from color TF
    
    Guido Günther (4):
          text-input-v3: Name new text input event correctly
          text-input-v3: Use `NULL` when emitting signals
          input-method-unstable-v2: There are no enable / disable events
          input-method-unstable-v2: surrounding text sends surrounding text
    
    Ilia Bozhinov (2):
          drag: destroy data source on touch_up
          seat: add wlr_seat_touch_notify_clear_focus
    
    Isaac Freund (2):
          util/box: set dest to empty if boxes don't intersect
          xwayland: add set_size_hints signal
    
    Jens Peters (1):
          backend/libinput: expose libinput_tablet_tool
    
    Jesper Jensen (1):
          output/cursor: Fix double cursor bug
    
    JiDe Zhang (1):
          xwayland: fix assertion failure in wlr_xwayland_shell_v1
    
    John Lindgren (1):
          render/allocator: add missing wlr_buffer_finish() in destroy impls
    
    Kenny Levinsen (3):
          render/vulkan: Handle multi-descriptor sets
          output-swapchain-manager: Reject zero resolution
          ext_image_copy_capture_v1: Only render scene source on damage
    
    Kirill Primak (6):
          cursor-shape-v1: use generated enum validator
          cursor-shape-v1: bump to version 2
          xdg-shell: add support for v7
          fixes: add implementation
          Avoid including generated headers publicly where possible
          compositor: use wl_resource_post_error_vargs()
    
    Martin Rys (1):
          Add support for XKB_LED_NAME_COMPOSE and XKB_LED_NAME_KANA USB HID LEDs Requires xkbcommon 1.8.0
    
    Peter Kaplan (2):
          wlr_ext_image_copy_capture_v1: new_session event
          image_capture_source: wlr_output_try_from_ext_image_capture_source_v1()
    
    Robin Ebert (1):
          wlr_ext_image_copy_capture_v1: Fix segmentation fault when using cursor session
    
    Rémi Bernon (2):
          xwayland: Create a dummy no_focus_window to use for non-X window focus
          xwayland: Activate no_focus_window when a Wayland window is activated
    
    Simon Ser (128):
          build: bump version to 0.20.0-dev
          output: don't send make/model
          idle_notify_v1: drop trailing spaces
          xwayland: require xcb-xfixes 1.15
          render/allocator/gbm: require GBM 21.1
          swapchain: assert that size is not empty at creation time
          ext_image_capture_source_v1: add support for foreign toplevels
          ext_image_capture_source_v1: add helper to capture scene nodes
          scene: ignore outputs with too small intersection with nodes
          scene: configure clients with the highest output scale
          scene: filter frame_done primary output in surface handler
          scene: use output with highest refresh rate for frame pacing
          scene: send surface preferred transform alongside DMA-BUF feedback
          render/color: add wlr_color_transform_init()
          render/color: use variable instead of type in sizeof()
          render/color: replace COLOR_TRANSFORM_LUT_3D with COLOR_TRANSFORM_LCMS2
          render/color: introduce COLOR_TRANSFORM_LUT_3X1D
          output: add color transform to state
          backend/drm: add support for color transforms
          wlr_gamma_control_v1: use color transforms
          output: drop gamma LUT from state
          render/vulkan: add color transformation matrix
          render/vulkan: use output_pipe_srgb for non-NULL sRGB color transform
          render/vulkan: rename mat3_to_mat4() to encode_proj_matrix()
          render/vulkan: use array declaration in encode_proj_matrix()
          render, render/vulkan: add primaries to wlr_buffer_pass_options
          output: add color primaries to output state
          backend/drm: add support for color primaries
          render/vulkan: add PQ inverse EOTF to output shader
          render/color, render/vulkan: add support for PQ transfer function
          output: add transfer function to image description
          backend/drm: add support for image description transfer function
          render/vulkan: add luminance multipler for output shader
          render/vulkan: fix multiplication order for output color matrix
          render/color, render/vulkan: add EXT_LINEAR to enum wlr_color_transfer_function
          color-management-v1: add EXT_LINEAR
          render/pass: add wlr_render_texture_options.transfer_function
          render/vulkan: fix typo in wlr_vk_texture.views comment
          render/vulkan: add support for texture transfer functions
          scene: add transfer function support for wlr_scene_buffer
          scene: add support for color-management-v1 transfer functions
          render/vulkan: prepare texture shader for new transforms
          render/vulkan: introduce wlr_vk_frag_texture_pcr_data
          render/vulkan: add texture color transformation matrix
          render/vulkan: add support for PQ for textures
          render, render/vulkan: add primaries to wlr_render_texture_options
          render/vulkan: add luminance multiplier for texture shader
          scene: add primaries support to wlr_scene_buffer
          scene: add support for color-management-v1 primaries
          output: shorten output enabled checks
          output: add wlr_output.image_description
          output: add output_pending_image_description()
          scene: grab image description from output state
          output: add full HDR metadata to wlr_output_image_description
          backend/drm: relay full HDR metadata
          render/egl: fix software rendering check
          xdg-toplevel-tag-v1: new protocol
          color_management_v1: add helpers to convert TF/primaries enums
          scene: use helpers to convert TF/primaries enums
          ext_image_capture_source_v1: advertise fallback {A,X}RGB8888 formats
          backend, output: send commit events after applying all in wlr_backend_commit()
          color-management-v1: handle inert outputs in get_output
          tinywl: stop generating xdg-shell header
          render/vulkan: fix VkPushConstantRange for wlr_vk_frag_texture_pcr_data
          render/vulkan: remove hardcoded counts
          build: add wayland-protocols to dependencies array
          output/cursor: fix missing second cursor
          scene/surface: simplify single-pixel-buffer check in surface_reconfigure()
          scene/surface: fix NULL deref when source buffer is destroyed
          cursor: use source buffer to signal release timeline point
          render/vulkan: rename plain to two_pass
          render/vulkan: use sRGB image view when color transform is set
          render/vulkan: rename vulkan_setup_srgb_framebuffer() for linear
          render/vulkan: introduce wlr_vk_render_buffer_out
          render/vulkan: add wlr_vk_render_pass.render_setup
          render/vulkan: add wlr_vk_render_pass.render_buffer_out
          render/vulkan: replace wlr_vk_render_pass.srgb_pathway with two_pass
          render/vulkan: add linear single-subpass
          Add release script
          color_management_v1: drop duplicated enum converters
          color_management_v1: make from_wlr enum converters public
          color_management_v1: add destroy event to manager
          scene: send color_management_v1 surface feedback
          render/color: fix bounds check in lut_1d_get()
          backend/wayland: log when getting disconnected from remote display
          backend/wayland: continue reading on hangup
          backend/drm: avoid error message when EDID is missing
          backend/session: fix crash on udev device remove event
          Revert "wlr_scene: fix tf/prim comparison for scanout attempt"
          ci: fix VKMS lookup after faux bus migration
          linux_drm_syncobj_v1: fix use-after-free in surface_commit_destroy()
          render/color: add wlr_color_transform_eval()
          render/color: add wlr_color_transform_pipeline
          output: check for color transform no-op changes
          gamma_control_v1: add wlr_gamma_control_v1_get_color_transform()
          gamma_control_v1: introduce fallback_gamma_size
          scene: add software fallback for gamma LUT
          render/color: turn enum wlr_color_encoding into a bitfield
          render: add color encoding and range to wlr_render_texture_options
          render/vulkan: add suport for color encoding and range
          color_representation_v1: make supported_alpha_modes const
          scene: add support for color encoding and range
          scene: add support for color-representation-v1 coeffs and range
          color_representation_v1: add helper to create global from renderer
          render/color: introduce wlr_color_transform_matrix
          color_management_v1: add helpers to get supported TFs/primaries
          tinywl: fix duplicate object files passed to linker
          render/pixman: add support for ABGR16161616
          color_management_v1: add BT.1886 to TF-from-renderer helper
          scene: don't assign outputs to invisible nodes
          scene: constify pixman_region32_t
          render: add new 16- and 32-bits-per-component pixel formats
          render/gles2: add BGR161616F and BGR161616
          render/vulkan: add new 16- and 32-bits-per-component pixel formats
          scene: keep last preferred configuration when leaving last output
          render: drop <linux/dma-buf.h> compat defines
          ext_image_capture_source_v1/scene: fix stop for parallel captures
          scene/surface: don't cache frame pacing output
          scene: add knob to turn off Xwayland surface restacking
          render/gles2: skip glslang check when shaders are unchanged
          xcursor: add shared helper to create a wlr_xcursor_image
          xcursor: introduce wlr_xcursor_image_get_buffer()
          cursor: use wlr_xcursor_image_get_buffer()
          xwayland: take wlr_buffer in wlr_xwayland_set_cursor()
          ext_image_copy_capture_v1: replace schedule_frame with request_frame
          ext_image_capture_source_v1: wait for capture client before sending frame event
          color_representation_v1: send chroma_location protocol error
          build: bump version to 0.20.0-rc1
    
    Simon Zeni (2):
          types: deprecate wlr-screencopy-unstable-v1
          drm-lease-v1: remove connector active_lease & lease connectors
    
    Stephane Fontaine (1):
          xwm: don't leak msg in case of realloc failure
    
    YaoBing Xiao (1):
          render/vulkan: destroy vulkan instance when drm phdev mismatch
    
    Yixue Wang (2):
          types/color_representation: correctly cleanup in manager create
          types/color_management: check on invalid image description
    
    liupeng (3):
          cursor: update output cursor even if output is disabled
          drm_lease_v1: initialize device resource link during abnormal exit
          backend/session: respond to event hangup or error
    
    llyyr (9):
          meson: bump minimum wayland-protocols version
          wlr_scene: fix tf/prim comparison for scanout attempt
          wlr_scene: return scene_direct_scanout_result instead of bool
          render: introduce bt.1886 transfer function
          wlr_scene: fix direct scanout for gamma2.2 buffers
          render/vulkan: clip negative values before applying transfer function
          color_representation_v1: don't leak supported_* on display destroy
          render/vulkan: normalize luminance range in bt.1886 formula
          xwayland: lock new buffer instead of the old one
    
    qaqland (1):
          tinywl: fix cursor disappears when focused window is closed
    
    rewine (4):
          ext_image_capture_source_v1: remove unused struct definition
          wlr_ext_data_control_v1: Make all listeners private
          docs: deprecate legacy wlr_data_control_v1 interface
          protocols: sync with wlr-protocols, apply non-breaking updates and doc improvements
    
    sunzhguy (1):
          session: simplify libudev unref handling
    
    tokyo4j (8):
          backend/libinput: don't leak udev_device
          xwm: add support for _NET_WM_ICON
          input-method: rename input_method event to new_input_method
          input-method: use `NULL` when emitting signals
          util/box.c: use 1/256 instead of 1/65536 in wlr_box_closest_point()
          wlr-foreign-toplevel: avoid wl_resource_find_for_client()
          Add wlr_version_get_{major,minor,micro}()
          ext-workspace-v1: add implementation
    
    xurui (5):
          render/allocator/gbm: insert buffer after export gbm bo
          wlr_xdg_toplevel_icon_v1: check the correct resource
          wlr_drag: drag motion signal also needs to be sent
          types/wlr_input_device: name maybe NULL
          xwayland/selection/dnd: fix parameter type
    
    
  • 0.18.3

    wlroots 0.18.3
    
    Alistair Buxton (1):
          Fix Meson version required for C23 support
    
    DreamMaoMao (1):
          render/pass: Ensure the precision is consistent during comparison
    
    Guido Günther (1):
          seat: Don't forget to destroy touch points on touch up
    
    Kenny Levinsen (1):
          scene/surface: Do not use buffer dimensions for clip
    
    M Stoeckl (1):
          wlr_cursor: use default shape if requested shape missing
    
    Simon Ser (4):
          backend/drm: handle custom modes in connect_drm_connector()
          backend/drm: fix enabling an output with a custom mode set
          ci: fix VKMS lookup after faux bus migration
          build: bump version to 0.18.3
    
    liupeng (1):
          screencopy-v1: drop output_enable listener
    
    tokyo4j (2):
          Revert "wlr_keyboard: don't emit key event for duplicated keycodes"
          wlr_keyboard_group: fix leak of wlr_keyboard_group->keys
    
  • 0.19.2

    wlroots 0.19.2
    
    David Turner (1):
          xwm: Fix double-close
    
    JiDe Zhang (1):
          xwayland: fix assertion failure in wlr_xwayland_shell_v1
    
    Simon Ser (5):
          backend, output: send commit events after applying all in wlr_backend_commit()
          backend/session: fix crash on udev device remove event
          linux_drm_syncobj_v1: fix use-after-free in surface_commit_destroy()
          ci: fix VKMS lookup after faux bus migration
          build: bump version to 0.19.2
    
    tokyo4j (1):
          util/box.c: use 1/256 instead of 1/65536 in wlr_box_closest_point()
    
  • 0.19.1

    wlroots 0.19.1
    
    Andri Yngvason (1):
          ext-image-capture-source: output: Apply transform to cursor
    
    Consolatis (1):
          transient_seat: initialize seat destroy listener
    
    David Turner (1):
          scene: Block damage on single-pixel buffer textures
    
    DreamMaoMao (1):
          render/pass: Ensure the precision is consistent during comparison
    
    Isaac Freund (1):
          util/box: set dest to empty if boxes don't intersect
    
    Jesper Jensen (1):
          output/cursor: Fix double cursor bug
    
    Kenny Levinsen (1):
          render/vulkan: Handle multi-descriptor sets
    
    Simon Ser (6):
          render/egl: fix software rendering check
          output/cursor: fix missing second cursor
          scene/surface: simplify single-pixel-buffer check in surface_reconfigure()
          scene/surface: fix NULL deref when source buffer is destroyed
          cursor: use source buffer to signal release timeline point
          build: bump version to 0.19.1
    
    Simon Zeni (1):
          drm-lease-v1: remove connector active_lease & lease connectors
    
    liupeng (2):
          cursor: update output cursor even if output is disabled
          drm_lease_v1: initialize device resource link during abnormal exit
    
    tokyo4j (1):
          backend/libinput: don't leak udev_device
    
  • 0.19.0

    wlroots 0.19.0
    
    Alexander Orezechowski (6):
          damage_ring: Add notes about damage being in buffer local coordinates
          scene: Apply damage ring as buffer local coordinates
          scene: Factor scaling into output transform function
          scene: Only accept buffer coordinates for damage
          scene: Rename some functions
          output: Change wlr_output_add_software_cursors_to_render_pass to take buffer coordinates
    
    Alexander Orzechowski (31):
          wlr_scene: Force blend mode to PREMULTIPLIED if calculate visibility is disabled
          util/box: Introduce wlr_box_contains_box
          wlr_scene: Store update box in update data
          wlr_scene: Ensure scene_node_update is updating entire node.
          wlr_scene: Transparently restack xwayland surfaces
          wlr_scene: Improve wlr_scene_surface_create documentation
          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
          Revert "wlr_scene: Ensure scene_node_update is updating entire node."
          wlr_scene: Extract function to get xwayland surface from node
          wlr_scene: Ensure we restack all xwayland surfaces to the bottom when scene node is disabled
          wlr_scene: Introduce wlr_scene_output_needs_frame
          wlr_scene: Introduce wlr_scene_set_gamma_control_manager_v1
          output/render: Drop buffer age from wlr_output_begin_render_pass
          swapchain, damage_ring: Drop buffer age
          wlr_scene: Assert wlr_scene_rect has nonnegative dimensions
          render/color: Invert ownership model of color_transform types.
          scene: Use wlr_output_transformed_resolution
          scene: Don't rely on return value of wlr_damage_ring_add
          wlr_damage_ring: Clamp damage region to buffer size
          damage_ring: Remove return value of wlr_damage_ring_add/wlr_damage_ring_add_box
          damage_ring: Stop using ring->{width, height}
          damage_ring: Remove wlr_damage_ring_set_bounds
          wlr_scene: Add notes about wlr_scene_rect taking premultiplied colors
          scene: Assert all signals are clear when destroying
          render/drm_syncobj: Add a callback when ready
          render/drm_syncobj: Remove the ready signal from timeline_waiter
          ext_data_control: Add protocol implementation
    
    Alistair Buxton (1):
          Fix Meson version required for C23 support
    
    BiRD (3):
          tinywl: Edit Makefile for bmake compatibility
          ci: Remove package 'gmake'
          tinywl: Update .gitignore
    
    Bill Li (1):
          ci: use package x11-servers/xwayland instead of x11-servers/xwayland-devel
    
    Chris Ever (1):
          fix comment typo in wlr_text_input_v3.h
    
    Consolatis (11):
          xwm: expose individual axis for _set_maximized()
          xwm: add request_close signal
          xwm: supply wlr_xwayland pointer to user_event_handler callback
          ext-foreign-toplevel-list: use correct interface and add missing handler
          dnd: ensure internal dnd handlers are unlinked on xwm_destroy()
          xwayland: fix xdg->xwayland drag-and-drop
          xwm: add missing NET_WM_STATE states
          wlr-foreign-toplevel: slight refactor
          wlr-foreign-toplevel: convert to stack backed states array
          wlr-foreign-toplevel: version guard fullscreen state
          backend/drm: make drm_lease implementation follow docs
    
    David Turner (9):
          Support direct scanout with src crop and dst boxes
          scene: Apply output offset for direct scanout
          scene: Transform coordinates for direct scanout
          Declare struct wlr_surface in a less weird place
          Fix includes of wlr_output.h
          single-pixel-buffer: Add try_from_buffer() function
          scene: Optimize rendering of single-pixel buffers
          scene: Move single-pixel buffer things to scene_buffer
          backend/drm: Fix segfault in libliftoff startup
    
    Dudemanguy (1):
          backend/drm: fix a use-after-free
    
    Guido Günther (5):
          renderer: Drop mention of wlr_renderer_begin_with_buffer
          buffer: Make wlr_buffer_is_opaque public
          buffer: Move wlr_buffer_is_opaque to public header
          seat: Don't forget to destroy touch points on touch up
          xwm: Handle NET_WM_WINDOW_OPACITY
    
    Isaac Freund (9):
          wlr_surface: fix argument order consistency
          wlr_xwayland_surface: fix prefix of two functions
          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
          backend/headless: actually perform output test
          xdg-activation: make wl_global public
          tablet-v2: cleanup focused surface on tool destroy
          presentation-time: make version a uint32_t
    
    James Ramsey (2):
          Implement updated version of ext-idle-notify protocol
          Bump required w-p version to 1.40
    
    John Lindgren (5):
          xwayland: factor out xwm_set_focused_window()
          xwayland: add focus_in and grab_focus events
          xwayland: add wlr_xwayland_surface_offer_focus()
          xwayland: set focus to XCB_POINTER_ROOT rather than XCB_NONE
          xwayland: add wlr_xwayland_surface_has_window_type()
    
    Kenny Levinsen (30):
          allocator/gbm: Log errno if gbm_bo_create fails
          allocator/gbm: Reset errno before gbm_bo_create
          linux-drm-syncobj-v1: Skip release if there is no timeline
          backend/drm: Remove call to CRTC realloc on scan
          backend/multi: Advance index on backend_commit
          backend/drm: Skip plane props if buffer is not committed
          backend/drm: Store viewport with framebuffer
          backend/drm: Remove automatic reset on VT switch
          backend/drm: Remove reset from interface
          backend/drm: Store only a single plane viewport
          tablet-v2: Event time should be milliseconds
          wlr_keyboard_group: Use get_current_time_msec
          util/time: Move NSEC_PER_SEC to header
          render/vulkan: Garbage collect unused buffers
          backend/wayland: Account for shm buffer offset
          backend/drm: Set timeline support based on capability
          drm_format_set: Add wlr_drm_format_set_remove
          backend/drm: Ensure renderer is set to NULL on error
          backend/drm: Bail if renderer cannot import DMA-BUFs
          backend/drm: Check for mgpu_renderer instead of parent
          backend/drm: Move mgpu renderer setup to function
          backend/drm: Allow proceeding with render-less mgpu
          backend/drm: Remove redundant error logs
          scene: Only unwrap client buffer when underlying buffer is held
          scene/surface: Do not use buffer dimensions for clip
          xwayland: Reset signal mask and handlers before exec
          wlr_scene: Debounce dmabuf feedback on scanout
          compositor: Clean up surface current_outputs last
          scene: Fix scanout log to respect SCANOUT_SUCCESS
          wlr-foreign-toplevel-management-v1: Simply leave and destroy code
    
    Kirill Primak (71):
          Rename wlr_surface_get_extends() to wlr_surface_get_extents()
          output-power-management: send zwlr_output_power_v1.failed on output destroy
          xwayland: remove stray empty line
          .mailmap: add myself
          seat/pointer: handle duplicate presses/releases correctly
          seat/pointer: reset pressed buttons on focus change
          xdg-foreign: clean up
          xdg-popup: don't set a role resource destroy handler
          pointer-constraints: don't init/finish current/pending states
          compositor: add surface role map hook
          xdg-surface: fix window geometry handling
          seat/pointer: reset pressed buttons on "grab-compatible" focus change
          linux-drm-syncobj: add missing decls in the header
          backend/wayland: process initial events from globals correctly
          backend/wayland: simplify wl_keyboard.{enter,leave} processing
          keyboard: simplify releasing keys on finish
          layer-shell: add v5 support
          layer-shell: introduce wlr_layer_surface_v1_get_exclusive_edge()
          drm-syncobj-v1: remove buffer release listener on signaller destroy
          scene: update output geom on commit after dropping pending damage
          scene: resize damage ring on geometry update
          tinywl: drop focused surface check for interactive ops
          pointer: release pressed buttons on destroy
          linux-dmabuf-v1: use static_assert
          ext-foreign-toplevel-list: add _from_resource()
          subcompositor: drop unused subsurface state
          scene: crop output buffer damage before adding
          Use WLR_PRIVATE for private fields
          Make all listeners private
          meson: fix file order
          xdg-system-bell-v1: add implementation
          seat: drop last_event
          tinywl: don't pass surface to focus_toplevel()
          meson: use kwargs for wayland deps
          meson: require wayland >=1.23.1
          tinywl: don't pass time to cursor mode motion handlers
          Add missing destroy events on automatically destroyed objects
          xdg-dialog-v1: add implementation
          seat: don't generate serial 0
          xwayland,render/vulkan: fix some size assertions
          buffer: introduce wlr_buffer_finish()
          output: introduce wlr_output_finish()
          backend/session: simplify udev event action matching
          session: drop unused wlr_session.vtnr
          backend: drop wl_display refs from docs
          text-input: fix wlr_text_input_manager_v3.text_inputs comment
          xdg-toplevel-icon-v1: add implementation
          xdg-dialog: add missing wm destroy signal
          Assert (almost all) signals have no attached listeners on destroy
          pointer-constraints: fix deactivating oneshot constraint on destroy
          compositor: add wlr_surface_synced commit hook
          pointer-constraints: rewrite doc comments
          pointer-constraints: use wlr_surface_synced.commit hook
          CONTRIBUTING.md: mention listener list assertions
          backend/wayland: remove syncobj waiter on buffer destroy
          drm-syncobj: return false instead of NULL
          backend/wayland: don't send request_state when enabling an output
          backend/output: extract backend to a variable in output_commit()
          backend/wayland: use a separate event queue for busy loops
          xdg-shell,layer-shell: assert that configure events are only sent to initialized surfaces
          scene: don't always round scaled regions up
          scene: don't mention damage in region-scaling functions
          fullscreen-shell: remove
          meson: add a missing src file
          Drop region.h
          ext-data-control: add missing listener list assertion
          xdg-system-bell-v1: set proper global/resource user data
          xdg-surface: ensure that the effective geom is not empty
          Fix/cleanup includes a bit
          xdg-surface: don't disconnect clients for bad effective geom yet
          xdg-surface: fix geom for surfaces that don't set it explicitly
    
    Leonardo Hernández Hernández (1):
          linux-drm-syncobj-v1: actually use the requested version
    
    M Stoeckl (2):
          wlr_cursor: use default shape if requested shape missing
          color-management-v1: implement surface_feedback_v1::get_preferred_parametric
    
    Olivier Tilloy (1):
          seat/keyboard: optimize wlr_seat_set_keyboard to send the keymap only if it has changed
    
    Peng Liu (1):
          backend/x11: delete xcb conn check NULL
    
    Philipp Kaeser (3):
          wlr_scene: Add documentation to wlr_scene_create about how to destroy the allocated resources.
          wlr_scene: Add 'struct' to comment in wlr_scene_create() to permit auto-linkify.
          output_layout: Fixes docstring for wlr_output_layout_add[_auto].
    
    Simon Ser (127):
          build: bump version to 0.19.0-dev
          build: use fs.relative_to() instead of hand-rolled logic
          render: add explicit sync API
          render/egl: add support for explicit sync extensions
          render/gles2: implement explicit sync API
          output: add explicit sync API
          backend/drm: add support for explicit sync APIs
          render/drm_syncobj: add wlr_drm_syncobj_timeline_transfer()
          render/drm_syncobj: add wlr_drm_syncobj_timeline_export()
          scene: add wlr_scene_buffer_set_buffer_with_options()
          scene: add timeline point to wlr_scene_buffer_set_buffer() options
          linux-drm-syncobj-v1: add helper to signal on buffer release
          scene: add support for linux-drm-syncobj-v1
          scene: add explicit synchronization for rendered buffers
          cursor: add support for linux-drm-syncobj-v1
          render: add WLR_RENDER_NO_EXPLICIT_SYNC env var
          scene: use numbers instead of stars for doc refs
          scene: fix typo in wlr_scene_surface_create() docs
          render/gles2: check for DRM_CAP_SYNCOBJ_TIMELINE
          xdg-shell: document struct wlr_xdg_toplevel_configure
          xdg-shell: add wlr_xdg_toplevel_configure()
          backend/drm: use CRTCs in-order
          backend/drm: use more descriptive names for match_obj()
          backend/drm: drop match_connectors_with_crtcs() return value
          backend/drm: rename i param in match_connectors_with_crtcs_()
          backend/drm: drop SKIP in match_connectors_with_crtcs()
          render/vulkan: use non-coherent memory for read_pixels()
          render/color: return tranform in wlr_color_transform_ref()
          backend/drm: add explicit sync support to multi-GPU blits
          backend/drm: add explicit sync support to libliftoff interface
          backend/drm: improve doc comment for match_connectors_with_crtcs_()
          compositor: document surface events
          render/vulkan: log size when importing too-large DMA-BUF
          render/vulkan: check size when creating shm texture
          render/vulkan: make VK_KHR_external_semaphore_fd optional
          keyboard: add utilities for pointer keys
          xwayland/xwm: extract read loop to separate function
          xwayland/xwm: implement somewhat asynchronous request flushing
          backend: add timeline feature flag
          output: use backend-wide timeline feature flag
          scene: use backend-wide timeline feature flag
          output: drop output timeline flag
          backend/drm: fix timeline feature flag on multi-GPU setups
          backend/drm: check whether clipped damage is empty
          render/vulkan: add render_pass_destroy()
          render/vulkan: add support for explicit sync
          buffer: add more docs
          build: rename meson_options.txt to meson.options
          scene: unwrap wlr_client_buffer for direct scan-out
          backend/wayland: handle DMA-BUF import failures
          all: use public <wlr/render/allocator.h>
          backend/drm: use public wlr_allocator_autocreate()
          render/allocator: drop allocator_autocreate_with_drm_fd()
          render/drm_syncobj: de-duplicate drm_syncobj timeline init
          render/drm_syncobj: add addon set
          backend/wayland: add support for explicit sync
          output-management-v1: only create custom mode object for enabled heads
          scene: assert on bad wlr_scene_buffer params
          backend/drm: fix drmModePageFlip() when disabling CRTC on legacy uAPI
          render/drm_format_set: fix corruption in wlr_drm_format_set_remove()
          backend/drm: check buffer format for multi-GPU
          render/vulkan: fix crash on OOM
          xwayland: listen to drag focus destroy signal
          xwayland: remove loop to find drag focus surface
          data-device: reset focused surface when destroyed
          render/gles2: validate shaders at build time
          output: adjust warning when hardware cursors are unsupported
          build: add Meson wrap manifests for our dependencies
          render/allocator: add udmabuf allocator
          render/egl: accept negative DRM FD to select software rendering
          render/vulkan: accept negative DRM FD to select software rendering
          render: add WLR_RENDERER_FORCE_SOFTWARE env var
          render/allocator: use udmabuf allocator automatically
          backend: replace get_buffer_caps hook with a struct field
          backend: document that buffer_caps/features are mutable
          ext-image-capture-source-v1: add base interface
          ext-image-capture-source-v1: add source pointer cursors
          ext-image-copy-capture-v1: new protocol implementation
          ext-image-copy-capture-v1: add wlr_ext_image_copy_capture_frame_v1_copy_buffer()
          ext-image-capture-source-v1: add wlr_ext_image_capture_source_v1_set_constraints_from_swapchain()
          ext-image-capture-source-v1: add output source
          output: require commit after hardware cursor update
          ext-image-capture-source-v1: add output cursor source
          backend/headless: accept hardware cursors
          ext-image-capture-source-v1: add start/stop hooks
          ext-image-copy-capture-v1: implement PAINT_CURSORS flag
          Make wlr_matrix private API
          matrix: drop wlr_matrix_transpose()
          matrix: drop rotation
          matrix: move to util/
          util/matrix: remove unnecessary include
          render/pixman: drop cast for pixman_image_set_clip_region32()
          Remove all calls to pixman_region32_not_empty()
          backend/drm: log when creating multi-GPU renderer
          ci: generate and publish HTML documentation
          render/vulkan: unify alpha pre-multiplication in output shader
          ci: fetch gyosu from new upstream
          output/cursor: drop output_cursor_reset()
          xwayland/xwm: handle deleted properties
          xwayland/xwm: log when property type is invalid
          backend/drm: handle custom modes in connect_drm_connector()
          backend/drm: fix enabling an output with a custom mode set
          Document config.h
          scene/surface: use source buffer to signal release timeline point
          backend/drm: pass DRM_MODE_ATOMIC_NONBLOCK for test commits
          util/matrix: add matrix_invert()
          render/color: include public header from private one
          render/color: add wlr_color_primaries_to_xyz()
          render/color: introduce wlr_color_named_primaries
          render/color: introduce wlr_color_primaries_from_named()
          render/color: introduce enum wlr_color_transfer_function
          render/color: add wlr_color_transfer_function_get_default_luminance()
          color-management-v1: new protocol
          color-management-v1: add struct wlr_image_description_v1
          color-management-v1: add support for parametric image desc creator
          color-management-v1: add wlr_surface_get_image_description_v1_data()
          color-management-v1: add support for mastering display metadata
          color-management-v1: add setter for surface feedback
          ext-data-control-v1: fix types in wl_list/wl_signal comments
          build: bump version to 0.19.0-rc1
          build: bump version to 0.19.0-rc2
          Revert "xwayland: Reset signal mask and handlers before exec"
          build: bump version to 0.19.0-rc3
          render/vulkan: create binary semaphore when signal timeline is supplied
          render/vulkan: check binary semaphore in vulkan_sync_render_buffer()
          xwayland: handle unset _NET_WM_NAME
          build: bump version to 0.19.0
    
    Thomas Frans (1):
          git: fix incorrect subprojects ignore in `.gitignore`
    
    Tycho Andersen (1):
          xwayland: don't fail on SIGCHLD
    
    YaoBing Xiao (14):
          render/egl: Release devices before return
          types/wlr_output: removing the useless pointer
          backend/drm: remove unnecessary semicolons
          gles2/pass: remove duplicate variable declarations
          tearing_control_v1: Free the wlr_tearing_control_v1 on error
          wlr_screencopy_v1: send fine-grained damage events
          x11/backend: Optimize query_version error handling
          wlr_linux_dmabuf_v1: log plane index in error messages for dma-buf
          ext_image_capture_source_v1: remove unused wlr_renderer include
          backend/drm: add DRM object and property IDs to error
          backend/drm: rename conn_name to conn_type_name for clarity
          backend/drm: assign plane_id from function parameter instead of drm_plane
          render/drm_syncobj: fix return type mismatch
          render/pixman: null check on newly created image
    
    Yixue Wang (1):
          wlr_client_buffer: add get_shm implementation
    
    chenyongxing (1):
          render/vulkan: Fix draw rect clip region invalid in blend none mod
    
    liupeng (2):
          render/egl: attribs len could be equal to size
          screencopy-v1: drop output_enable listener
    
    llyyr (5):
          input-method-v2: set no keymap format if no keymap is set
          presentation-time: bump protocol version to v2
          backend/multi: only consider backends with dmabuf cap for timeline
          wlr_drag: cleanup icon_destroy listener when destroying icon
          backend/drm: don't leak mgpu_formats
    
    mmcomando (1):
          Consider using vulkan renderer in default configuration
    
    project-repo (2):
          Fix memory leak in drm.c
          Fix memory leak in xwayland.c
    
    sunzhguy (1):
          session: skip adding duplicate DRM device
    
    tokyo4j (3):
          wlr_keyboard: don't emit key event for duplicated keycodes
          Revert "wlr_keyboard: don't emit key event for duplicated keycodes"
          wlr_keyboard_group: fix leak of wlr_keyboard_group->keys
    
    xurui (7):
          xdg-toplevel: use enum_is_valid functions
          xdg-positioner: use enum_is_valid functions
          layer-shell-v1: use enum_is_valid functions
          wlr_linux_dmabuf_v1: use enum_is_valid functions
          wlr_output_management_v1: use enum_is_valid functions
          output-power-management-v1: use enum_is_valid functions
          xwayland/selection/dnd: always send finished event
    
    yuiiio (1):
          output: don't update disabled cursor texture
    
    zhoulei (1):
          xwayland/xwm: listen shell destroy signal
    
    
  • 0.19.0-rc3

    wlroots 0.19.0-rc3
    
    Isaac Freund (3):
          xdg-activation: make wl_global public
          tablet-v2: cleanup focused surface on tool destroy
          presentation-time: make version a uint32_t
    
    Simon Ser (2):
          Revert "xwayland: Reset signal mask and handlers before exec"
          build: bump version to 0.19.0-rc3
    
    YaoBing Xiao (1):
          backend/drm: rename conn_name to conn_type_name for clarity
    
    tokyo4j (2):
          Revert "wlr_keyboard: don't emit key event for duplicated keycodes"
          wlr_keyboard_group: fix leak of wlr_keyboard_group->keys
    
  • 0.19.0-rc2

    wlroots 0.19.0-rc2
    
    Kenny Levinsen (2):
          compositor: Clean up surface current_outputs last
          scene: Fix scanout log to respect SCANOUT_SUCCESS
    
    Kirill Primak (4):
          xdg-surface: ensure that the effective geom is not empty
          Fix/cleanup includes a bit
          xdg-surface: don't disconnect clients for bad effective geom yet
          xdg-surface: fix geom for surfaces that don't set it explicitly
    
    M Stoeckl (1):
          color-management-v1: implement surface_feedback_v1::get_preferred_parametric
    
    Philipp Kaeser (1):
          output_layout: Fixes docstring for wlr_output_layout_add[_auto].
    
    Simon Ser (1):
          build: bump version to 0.19.0-rc2
    
    YaoBing Xiao (1):
          backend/drm: add DRM object and property IDs to error
    
    Yixue Wang (1):
          wlr_client_buffer: add get_shm implementation
    
  • 0.19.0-rc1

    wlroots 0.19.0-rc1
    
    Alexander Orezechowski (6):
          damage_ring: Add notes about damage being in buffer local coordinates
          scene: Apply damage ring as buffer local coordinates
          scene: Factor scaling into output transform function
          scene: Only accept buffer coordinates for damage
          scene: Rename some functions
          output: Change wlr_output_add_software_cursors_to_render_pass to take buffer coordinates
    
    Alexander Orzechowski (31):
          wlr_scene: Force blend mode to PREMULTIPLIED if calculate visibility is disabled
          util/box: Introduce wlr_box_contains_box
          wlr_scene: Store update box in update data
          wlr_scene: Ensure scene_node_update is updating entire node.
          wlr_scene: Transparently restack xwayland surfaces
          wlr_scene: Improve wlr_scene_surface_create documentation
          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
          Revert "wlr_scene: Ensure scene_node_update is updating entire node."
          wlr_scene: Extract function to get xwayland surface from node
          wlr_scene: Ensure we restack all xwayland surfaces to the bottom when scene node is disabled
          wlr_scene: Introduce wlr_scene_output_needs_frame
          wlr_scene: Introduce wlr_scene_set_gamma_control_manager_v1
          output/render: Drop buffer age from wlr_output_begin_render_pass
          swapchain, damage_ring: Drop buffer age
          wlr_scene: Assert wlr_scene_rect has nonnegative dimensions
          render/color: Invert ownership model of color_transform types.
          scene: Use wlr_output_transformed_resolution
          scene: Don't rely on return value of wlr_damage_ring_add
          wlr_damage_ring: Clamp damage region to buffer size
          damage_ring: Remove return value of wlr_damage_ring_add/wlr_damage_ring_add_box
          damage_ring: Stop using ring->{width, height}
          damage_ring: Remove wlr_damage_ring_set_bounds
          wlr_scene: Add notes about wlr_scene_rect taking premultiplied colors
          scene: Assert all signals are clear when destroying
          render/drm_syncobj: Add a callback when ready
          render/drm_syncobj: Remove the ready signal from timeline_waiter
          ext_data_control: Add protocol implementation
    
    Alistair Buxton (1):
          Fix Meson version required for C23 support
    
    BiRD (3):
          tinywl: Edit Makefile for bmake compatibility
          ci: Remove package 'gmake'
          tinywl: Update .gitignore
    
    Bill Li (1):
          ci: use package x11-servers/xwayland instead of x11-servers/xwayland-devel
    
    Chris Ever (1):
          fix comment typo in wlr_text_input_v3.h
    
    Consolatis (11):
          xwm: expose individual axis for _set_maximized()
          xwm: add request_close signal
          xwm: supply wlr_xwayland pointer to user_event_handler callback
          ext-foreign-toplevel-list: use correct interface and add missing handler
          dnd: ensure internal dnd handlers are unlinked on xwm_destroy()
          xwayland: fix xdg->xwayland drag-and-drop
          xwm: add missing NET_WM_STATE states
          wlr-foreign-toplevel: slight refactor
          wlr-foreign-toplevel: convert to stack backed states array
          wlr-foreign-toplevel: version guard fullscreen state
          backend/drm: make drm_lease implementation follow docs
    
    David Turner (8):
          Support direct scanout with src crop and dst boxes
          scene: Apply output offset for direct scanout
          scene: Transform coordinates for direct scanout
          Declare struct wlr_surface in a less weird place
          Fix includes of wlr_output.h
          single-pixel-buffer: Add try_from_buffer() function
          scene: Optimize rendering of single-pixel buffers
          scene: Move single-pixel buffer things to scene_buffer
    
    Dudemanguy (1):
          backend/drm: fix a use-after-free
    
    Guido Günther (5):
          renderer: Drop mention of wlr_renderer_begin_with_buffer
          buffer: Make wlr_buffer_is_opaque public
          buffer: Move wlr_buffer_is_opaque to public header
          seat: Don't forget to destroy touch points on touch up
          xwm: Handle NET_WM_WINDOW_OPACITY
    
    Isaac Freund (6):
          wlr_surface: fix argument order consistency
          wlr_xwayland_surface: fix prefix of two functions
          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
          backend/headless: actually perform output test
    
    James Ramsey (2):
          Implement updated version of ext-idle-notify protocol
          Bump required w-p version to 1.40
    
    John Lindgren (5):
          xwayland: factor out xwm_set_focused_window()
          xwayland: add focus_in and grab_focus events
          xwayland: add wlr_xwayland_surface_offer_focus()
          xwayland: set focus to XCB_POINTER_ROOT rather than XCB_NONE
          xwayland: add wlr_xwayland_surface_has_window_type()
    
    Kenny Levinsen (27):
          allocator/gbm: Log errno if gbm_bo_create fails
          allocator/gbm: Reset errno before gbm_bo_create
          linux-drm-syncobj-v1: Skip release if there is no timeline
          backend/drm: Remove call to CRTC realloc on scan
          backend/multi: Advance index on backend_commit
          backend/drm: Skip plane props if buffer is not committed
          backend/drm: Store viewport with framebuffer
          backend/drm: Remove automatic reset on VT switch
          backend/drm: Remove reset from interface
          backend/drm: Store only a single plane viewport
          tablet-v2: Event time should be milliseconds
          wlr_keyboard_group: Use get_current_time_msec
          util/time: Move NSEC_PER_SEC to header
          render/vulkan: Garbage collect unused buffers
          backend/wayland: Account for shm buffer offset
          backend/drm: Set timeline support based on capability
          drm_format_set: Add wlr_drm_format_set_remove
          backend/drm: Ensure renderer is set to NULL on error
          backend/drm: Bail if renderer cannot import DMA-BUFs
          backend/drm: Check for mgpu_renderer instead of parent
          backend/drm: Move mgpu renderer setup to function
          backend/drm: Allow proceeding with render-less mgpu
          backend/drm: Remove redundant error logs
          scene: Only unwrap client buffer when underlying buffer is held
          scene/surface: Do not use buffer dimensions for clip
          xwayland: Reset signal mask and handlers before exec
          wlr_scene: Debounce dmabuf feedback on scanout
    
    Kirill Primak (67):
          Rename wlr_surface_get_extends() to wlr_surface_get_extents()
          output-power-management: send zwlr_output_power_v1.failed on output destroy
          xwayland: remove stray empty line
          .mailmap: add myself
          seat/pointer: handle duplicate presses/releases correctly
          seat/pointer: reset pressed buttons on focus change
          xdg-foreign: clean up
          xdg-popup: don't set a role resource destroy handler
          pointer-constraints: don't init/finish current/pending states
          compositor: add surface role map hook
          xdg-surface: fix window geometry handling
          seat/pointer: reset pressed buttons on "grab-compatible" focus change
          linux-drm-syncobj: add missing decls in the header
          backend/wayland: process initial events from globals correctly
          backend/wayland: simplify wl_keyboard.{enter,leave} processing
          keyboard: simplify releasing keys on finish
          layer-shell: add v5 support
          layer-shell: introduce wlr_layer_surface_v1_get_exclusive_edge()
          drm-syncobj-v1: remove buffer release listener on signaller destroy
          scene: update output geom on commit after dropping pending damage
          scene: resize damage ring on geometry update
          tinywl: drop focused surface check for interactive ops
          pointer: release pressed buttons on destroy
          linux-dmabuf-v1: use static_assert
          ext-foreign-toplevel-list: add _from_resource()
          subcompositor: drop unused subsurface state
          scene: crop output buffer damage before adding
          Use WLR_PRIVATE for private fields
          Make all listeners private
          meson: fix file order
          xdg-system-bell-v1: add implementation
          seat: drop last_event
          tinywl: don't pass surface to focus_toplevel()
          meson: use kwargs for wayland deps
          meson: require wayland >=1.23.1
          tinywl: don't pass time to cursor mode motion handlers
          Add missing destroy events on automatically destroyed objects
          xdg-dialog-v1: add implementation
          seat: don't generate serial 0
          xwayland,render/vulkan: fix some size assertions
          buffer: introduce wlr_buffer_finish()
          output: introduce wlr_output_finish()
          backend/session: simplify udev event action matching
          session: drop unused wlr_session.vtnr
          backend: drop wl_display refs from docs
          text-input: fix wlr_text_input_manager_v3.text_inputs comment
          xdg-toplevel-icon-v1: add implementation
          xdg-dialog: add missing wm destroy signal
          Assert (almost all) signals have no attached listeners on destroy
          pointer-constraints: fix deactivating oneshot constraint on destroy
          compositor: add wlr_surface_synced commit hook
          pointer-constraints: rewrite doc comments
          pointer-constraints: use wlr_surface_synced.commit hook
          CONTRIBUTING.md: mention listener list assertions
          backend/wayland: remove syncobj waiter on buffer destroy
          drm-syncobj: return false instead of NULL
          backend/wayland: don't send request_state when enabling an output
          backend/output: extract backend to a variable in output_commit()
          backend/wayland: use a separate event queue for busy loops
          xdg-shell,layer-shell: assert that configure events are only sent to initialized surfaces
          scene: don't always round scaled regions up
          scene: don't mention damage in region-scaling functions
          fullscreen-shell: remove
          meson: add a missing src file
          Drop region.h
          ext-data-control: add missing listener list assertion
          xdg-system-bell-v1: set proper global/resource user data
    
    Leonardo Hernández Hernández (1):
          linux-drm-syncobj-v1: actually use the requested version
    
    M Stoeckl (1):
          wlr_cursor: use default shape if requested shape missing
    
    Olivier Tilloy (1):
          seat/keyboard: optimize wlr_seat_set_keyboard to send the keymap only if it has changed
    
    Peng Liu (1):
          backend/x11: delete xcb conn check NULL
    
    Philipp Kaeser (2):
          wlr_scene: Add documentation to wlr_scene_create about how to destroy the allocated resources.
          wlr_scene: Add 'struct' to comment in wlr_scene_create() to permit auto-linkify.
    
    Simon Ser (120):
          build: bump version to 0.19.0-dev
          build: use fs.relative_to() instead of hand-rolled logic
          render: add explicit sync API
          render/egl: add support for explicit sync extensions
          render/gles2: implement explicit sync API
          output: add explicit sync API
          backend/drm: add support for explicit sync APIs
          render/drm_syncobj: add wlr_drm_syncobj_timeline_transfer()
          render/drm_syncobj: add wlr_drm_syncobj_timeline_export()
          scene: add wlr_scene_buffer_set_buffer_with_options()
          scene: add timeline point to wlr_scene_buffer_set_buffer() options
          linux-drm-syncobj-v1: add helper to signal on buffer release
          scene: add support for linux-drm-syncobj-v1
          scene: add explicit synchronization for rendered buffers
          cursor: add support for linux-drm-syncobj-v1
          render: add WLR_RENDER_NO_EXPLICIT_SYNC env var
          scene: use numbers instead of stars for doc refs
          scene: fix typo in wlr_scene_surface_create() docs
          render/gles2: check for DRM_CAP_SYNCOBJ_TIMELINE
          xdg-shell: document struct wlr_xdg_toplevel_configure
          xdg-shell: add wlr_xdg_toplevel_configure()
          backend/drm: use CRTCs in-order
          backend/drm: use more descriptive names for match_obj()
          backend/drm: drop match_connectors_with_crtcs() return value
          backend/drm: rename i param in match_connectors_with_crtcs_()
          backend/drm: drop SKIP in match_connectors_with_crtcs()
          render/vulkan: use non-coherent memory for read_pixels()
          render/color: return tranform in wlr_color_transform_ref()
          backend/drm: add explicit sync support to multi-GPU blits
          backend/drm: add explicit sync support to libliftoff interface
          backend/drm: improve doc comment for match_connectors_with_crtcs_()
          compositor: document surface events
          render/vulkan: log size when importing too-large DMA-BUF
          render/vulkan: check size when creating shm texture
          render/vulkan: make VK_KHR_external_semaphore_fd optional
          keyboard: add utilities for pointer keys
          xwayland/xwm: extract read loop to separate function
          xwayland/xwm: implement somewhat asynchronous request flushing
          backend: add timeline feature flag
          output: use backend-wide timeline feature flag
          scene: use backend-wide timeline feature flag
          output: drop output timeline flag
          backend/drm: fix timeline feature flag on multi-GPU setups
          backend/drm: check whether clipped damage is empty
          render/vulkan: add render_pass_destroy()
          render/vulkan: add support for explicit sync
          buffer: add more docs
          build: rename meson_options.txt to meson.options
          scene: unwrap wlr_client_buffer for direct scan-out
          backend/wayland: handle DMA-BUF import failures
          all: use public <wlr/render/allocator.h>
          backend/drm: use public wlr_allocator_autocreate()
          render/allocator: drop allocator_autocreate_with_drm_fd()
          render/drm_syncobj: de-duplicate drm_syncobj timeline init
          render/drm_syncobj: add addon set
          backend/wayland: add support for explicit sync
          output-management-v1: only create custom mode object for enabled heads
          scene: assert on bad wlr_scene_buffer params
          backend/drm: fix drmModePageFlip() when disabling CRTC on legacy uAPI
          render/drm_format_set: fix corruption in wlr_drm_format_set_remove()
          backend/drm: check buffer format for multi-GPU
          render/vulkan: fix crash on OOM
          xwayland: listen to drag focus destroy signal
          xwayland: remove loop to find drag focus surface
          data-device: reset focused surface when destroyed
          render/gles2: validate shaders at build time
          output: adjust warning when hardware cursors are unsupported
          build: add Meson wrap manifests for our dependencies
          render/allocator: add udmabuf allocator
          render/egl: accept negative DRM FD to select software rendering
          render/vulkan: accept negative DRM FD to select software rendering
          render: add WLR_RENDERER_FORCE_SOFTWARE env var
          render/allocator: use udmabuf allocator automatically
          backend: replace get_buffer_caps hook with a struct field
          backend: document that buffer_caps/features are mutable
          ext-image-capture-source-v1: add base interface
          ext-image-capture-source-v1: add source pointer cursors
          ext-image-copy-capture-v1: new protocol implementation
          ext-image-copy-capture-v1: add wlr_ext_image_copy_capture_frame_v1_copy_buffer()
          ext-image-capture-source-v1: add wlr_ext_image_capture_source_v1_set_constraints_from_swapchain()
          ext-image-capture-source-v1: add output source
          output: require commit after hardware cursor update
          ext-image-capture-source-v1: add output cursor source
          backend/headless: accept hardware cursors
          ext-image-capture-source-v1: add start/stop hooks
          ext-image-copy-capture-v1: implement PAINT_CURSORS flag
          Make wlr_matrix private API
          matrix: drop wlr_matrix_transpose()
          matrix: drop rotation
          matrix: move to util/
          util/matrix: remove unnecessary include
          render/pixman: drop cast for pixman_image_set_clip_region32()
          Remove all calls to pixman_region32_not_empty()
          backend/drm: log when creating multi-GPU renderer
          ci: generate and publish HTML documentation
          render/vulkan: unify alpha pre-multiplication in output shader
          ci: fetch gyosu from new upstream
          output/cursor: drop output_cursor_reset()
          xwayland/xwm: handle deleted properties
          xwayland/xwm: log when property type is invalid
          backend/drm: handle custom modes in connect_drm_connector()
          backend/drm: fix enabling an output with a custom mode set
          Document config.h
          scene/surface: use source buffer to signal release timeline point
          backend/drm: pass DRM_MODE_ATOMIC_NONBLOCK for test commits
          util/matrix: add matrix_invert()
          render/color: include public header from private one
          render/color: add wlr_color_primaries_to_xyz()
          render/color: introduce wlr_color_named_primaries
          render/color: introduce wlr_color_primaries_from_named()
          render/color: introduce enum wlr_color_transfer_function
          render/color: add wlr_color_transfer_function_get_default_luminance()
          color-management-v1: new protocol
          color-management-v1: add struct wlr_image_description_v1
          color-management-v1: add support for parametric image desc creator
          color-management-v1: add wlr_surface_get_image_description_v1_data()
          color-management-v1: add support for mastering display metadata
          color-management-v1: add setter for surface feedback
          ext-data-control-v1: fix types in wl_list/wl_signal comments
          build: bump version to 0.19.0-rc1
    
    Thomas Frans (1):
          git: fix incorrect subprojects ignore in `.gitignore`
    
    Tycho Andersen (1):
          xwayland: don't fail on SIGCHLD
    
    YaoBing Xiao (9):
          render/egl: Release devices before return
          types/wlr_output: removing the useless pointer
          backend/drm: remove unnecessary semicolons
          gles2/pass: remove duplicate variable declarations
          tearing_control_v1: Free the wlr_tearing_control_v1 on error
          wlr_screencopy_v1: send fine-grained damage events
          x11/backend: Optimize query_version error handling
          wlr_linux_dmabuf_v1: log plane index in error messages for dma-buf
          ext_image_capture_source_v1: remove unused wlr_renderer include
    
    chenyongxing (1):
          render/vulkan: Fix draw rect clip region invalid in blend none mod
    
    liupeng (2):
          render/egl: attribs len could be equal to size
          screencopy-v1: drop output_enable listener
    
    llyyr (5):
          input-method-v2: set no keymap format if no keymap is set
          presentation-time: bump protocol version to v2
          backend/multi: only consider backends with dmabuf cap for timeline
          wlr_drag: cleanup icon_destroy listener when destroying icon
          backend/drm: don't leak mgpu_formats
    
    mmcomando (1):
          Consider using vulkan renderer in default configuration
    
    project-repo (2):
          Fix memory leak in drm.c
          Fix memory leak in xwayland.c
    
    sunzhguy (1):
          session: skip adding duplicate DRM device
    
    tokyo4j (1):
          wlr_keyboard: don't emit key event for duplicated keycodes
    
    xurui (7):
          xdg-toplevel: use enum_is_valid functions
          xdg-positioner: use enum_is_valid functions
          layer-shell-v1: use enum_is_valid functions
          wlr_linux_dmabuf_v1: use enum_is_valid functions
          wlr_output_management_v1: use enum_is_valid functions
          output-power-management-v1: use enum_is_valid functions
          xwayland/selection/dnd: always send finished event
    
    yuiiio (1):
          output: don't update disabled cursor texture
    
    zhoulei (1):
          xwayland/xwm: listen shell destroy signal
    
    
  • 0.18.2

    wlroots 0.18.2
    
    Consolatis (2):
          dnd: ensure internal dnd handlers are unlinked on xwm_destroy()
          xwayland: fix xdg->xwayland drag-and-drop
    
    Isaac Freund (1):
          backend/headless: actually perform output test
    
    Kenny Levinsen (1):
          backend/wayland: Account for shm buffer offset
    
    Simon Ser (9):
          backend/drm: check whether clipped damage is empty
          output-management-v1: only create custom mode object for enabled heads
          backend/drm: check buffer format for multi-GPU
          backend/drm: fix drmModePageFlip() when disabling CRTC on legacy uAPI
          render/vulkan: fix crash on OOM
          xwayland: listen to drag focus destroy signal
          xwayland: remove loop to find drag focus surface
          data-device: reset focused surface when destroyed
          build: bump version to 0.18.2
    
    tokyo4j (1):
          wlr_keyboard: don't emit key event for duplicated keycodes
    
  • 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.4

    wlroots 0.17.4
    
    David Turner (2):
          render/pixman: Improve transform performance
          render/pixman: Fix non-uniform scale with rotation
    
    Isaac Freund (1):
          wlr_surface: update get_root_surface() docs
    
    JiDe Zhang (1):
          output: reset hardware_cursor on failure
    
    Kirill Primak (12):
          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
          backend/x11: send correct keyboard layout
          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: destroy ignored tablet proxies
    
    Simon Ser (3):
          backend/drm: add support for libliftoff v0.5.0
          render/vulkan: don't use UNDEFINED layout for imported DMA-BUFs
          build: bump version to 0.17.4
    
    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
    
  • 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.2

    wlroots 0.16.2
    
    Consolatis (2):
          xcursors: Alias existing cursor defaults to cursor-spec cursor names
          xdg-activation: accept pointer focus for new tokens
    
    Kirill Primak (2):
          xwayland/xwm: unpair even if surface is NULL
          backend/x11: fix delta_discrete value
    
    Simon Ser (11):
          backend/x11: fix initial value of wlr_x11_buffer.n_busy
          backend/drm: disable all CRTCs after VT switch
          render/vulkan: fix vkCmdClearAttachments validation error
          backend/drm: set "max bpc" property based on pixel format
          xdg-shell: reset added/committed flag on unmap
          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
          render/gles2: default to highp if available
          build: bump version to 0.16.2
    
    llyyr (1):
          render/vulkan: use correct source offset in read_pixels