Skip to content

Tags

Tags give the ability to mark specific points in history as being important
  • mcoffin-20240720
  • mcoffin-20240615
  • mcoffin-20240524
  • 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
    
  • mcoffin-20240518
  • mcoffin-20240429
  • master-20240419
  • mcoffin-20240402
  • 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
    
  • mcoffin-20240306
  • mcoffin-20240301
  • mcoffin-20240206
  • mcoffin-20240223
  • mcoffin-20240203
  • mcoffin-20240131
  • master-20240105
  • 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
    
  • mcoffin-20231210
  • origin-master-20240203
  • 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