Release highlights:
- New protocol implementations:
- content-type-v1 to tag surfaces with their content type (audio, video,
game, etc).
- xwayland-shell-v1 to improve XWayland reliability.
- wp-fractional-scale-v1 to allow clients to submit buffers with a
non-integer scale factor matching the output.
- tearing-control to allow clients to opt-in for tearing page-flips.
- security-context-v1 to identify clients running in sandboxes.
- cursor-shape-v1 for server-side cursor themes.
- content-type-v1 to tag surfaces with their content type (audio, video,
- Introduce a new output layers API to leverage KMS planes.
- Add a new renderer API with improved design and performance. Add an API to
query the time taken to render.
- Continued work on the Vulkan renderer: add more RGB formats, add YUV buffers,
add interoperability with implicit synchronization instead of blocking.
- Add support for the new
wl_surface.preferred_buffer_{scale,transform}
events.
- Improved scene-graph, including support for linux-dmabuf feedback and
clipping surfaces.
- Improved
wlr_cursor
which now keeps track of the current cursor image.
- Add an implementation of the
wl_shm
interface, replacing libwayland's for
improved reliability and performance.
- The Wayland backend supports embedding a wlroots compositor inside an
existing Wayland client.
wl_surface
roles have been refactored.
Full changelog
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
Changes for packagers
- backend/drm: require hwdata pkg-config file (!3993)
- backend/drm: use libdisplay-info (!3994): libdisplay-info is a new dependency required for the DRM backend.
Breaking changes for compositors
These changes can affect most compositors.
- Constify Pixman region APIs (!3800):
wlr_region_from_resource
andwlr_output_event_damage.damage
now useconst
for the Pixman region.
- layer-shell-v1: specify version in constructor (!3856):
wlr_layer_shell_v1_create()
takes a newversion
parameter. To retain existing behavior, pass4
.
- compositor: drop wlr_surface.{sx,sy} (!3861):
wlr_surface.{sx,sy}
have been dropped, compositors should usewlr_surface.current.{dx,dy}
in their commit handler instead.
- output: introduce request_state event (!2693): backends no longer change the output mode behind the compositor's back. To retain the previous behavior, compositors can listen to the
request_state
event and callwlr_output_commit_state
.
- Nuke deprecated include/wlr/types/wlr_surface.h (!3712): the deprecated
<wlr/types/wlr_surface.h>
header has been dropped, use<wlr/types/wlr_compositor.h>
instead.
- backend: return wlr_session in wlr_backend_autocreate() call (!3814):
wlr_backend_autocreate()
now takes a new argument to return thewlr_session
,wlr_backend_get_session()
andwlr_backend_impl.get_session
have been removed.
- output: drop wlr_output_damage_whole() (!3851)
- output: drop enable/mode events (!3911): compositors can listen to the "commit"
event and check for WLR_OUTPUT_STATE_ENABLED/WLR_OUTPUT_STATE_MODE.
- output-layout: improve API (!3627, !4318):
wlr_output_layout_add{,_auto}()
now return astruct wlr_output_layout_output *
.
wlr_output_layout_move()
is removed, usewlr_output_layout_add()
instead.
- tablet-tool: revert bitfield in enum wlr_tablet_tool_tip_state (!3958)
- seat/keyboard: constify and simplify (!3946): Several wlr_keyboard functions now take constant pointers to the keycodes and modifiers.
- xdg-shell: reset added flag on unmap (!3986), xdg-surface: fix init state flow (!4335):
wlr_xdg_toplevel.added
has been removed.
wlr_xdg_popup.committed
has been renamed tosent_initial_configure
.
- xwayland/xwm: introduce wlr_xwayland_surface_try_from_wlr_surface() (!3923):
wlr_surface_is_xwayland_surface()
has been replaced withwlr_xwayland_surface_try_from_wlr_surface()
which returnsNULL
if the surface isn't paired with a X11 window
- Convert *_from_wlr_surface() functions to try_from pattern (!3991):
wlr_surface_is_*()
and*_from_wlr_surface()
functions have been replaced withwlr_*_try_from_wlr_surface()
functions which return NULL if the surface doesn't have the expected role
- wlr_scene: Rename wlr_scene_surface_from_buffer (!4000):
wlr_scene_surface_from_buffer()
has been renamed towlr_scene_surface_try_from_buffer()
- linux-dmabuf-v1: rework feedback API and add helpers (!3933)
- output: add wlr_output_is_direct_scanout_allowed() (!4067): compositors now need to check
wlr_output_is_direct_scanout_allowed()
before direct scan-out
- output-damage: drop (!4068): compositors can migrate to
wlr_damage_ring
- compositor: add
wlr_surface_configure_buffer_{scale,transform}
(!3696): compositors now need to pass the interface version towlr_compositor_create()
(to retain current behavior, use version 5).
- drm_format_set: Cleanups/changes (!4101): the
dst
argument ofdrm_format_set_{union,intersect}()
must be zeroed or initialized
- Rework wlr_drm_format (!4104):
wlr_drm_format.modifiers
is not longer a flexible array member
- compositor: unify map logic (!4043): Map/unmap signals and
mapped
flags have been removed from surface role structures. Use the newly addedwlr_surface.events.{map,unmap}
andwlr_surface.mapped
instead.
- compositor: remove
wlr_surface_role.precommit
(!4161)
- gamma-control-v1: allow compositors to apply gamma LUTs (!4046): gamma control will no longer implicity mutate output pending state. Compositors now need to listen to
wlr_gamma_control_manager_v1.events.set_gamma
and apply the new gamma LUTs viawlr_gamma_control_v1_apply()
next time they commit the output.
- Surface role rework (!4181, !4223, !4230):
wlr_surface.role_data
has been replaced withwlr_surface.role_resource
, which must now be set separately viawlr_surface_set_role_object()
.
- Surface roles without a role object must set
wlr_surface_role.no_object
totrue
.
- output: add wlr_output_state_init() (!4227):
wlr_output_state_init
must be called prior to using awlr_output_state
.
- cursor: replace wlr_cursor_set_image() with wlr_cursor_set_buffer() (!4232):
wlr_cursor_set_image()
has been replaced withwlr_cursor_set_buffer()
wlr_xcursor_manager_set_cursor_image()
has been removed. Compositors should instead usewlr_cursor_set_xcursor()
- output: drop wlr_output_cursor_set_image() (!4250):
wlr_output_cursor_set_buffer()
can be used instead.
- xwayland: doc improvements and misc cleanups (!4258):
struct wlr_xwayland_move_event
is removed.
struct wlr_xwayland_surface
events which used to have the surface itself asdata
now haveNULL
.
- scene: rename output_present event to output_sample (!4270): The event
wlr_scene_buffer.event.output_present
has been renamed tooutput_sample
.
- presentation-time: add separate helper for zero-copy (!4081):
wlr_scene_buffer.event.output_sample
has been changed to pass astruct wlr_scene_output_sample_event
- backend/{wayland,x11,headless}: leave new outputs disabled by default (!4236): the compositor has to enable new outputs manually now.
- xwayland: drop wlr_xwayland_surface.events.set_pid (!4306): The pid can be read when
xsurface.events.associate
event is called instead. The PID of an x11 window cannot change after this point.
- xdg-decoration: store an xdg_toplevel instead of xdg_surface (!4316)
- buffer: make wlr_client_buffer functions private (!4322):
wlr_client_buffer_create()
andwlr_client_buffer_apply_damage()
are not supposed to be called by compositors.
- xdg-shell: rework roles (!4288):
wlr_xdg_surface.role
semantics now matchwlr_surface.role
's: the field is only set once and never reset. Compositors might need to additionally check whetherwlr_xdg_surface.{toplevel,popup}
is not NULL where applicable.
- compositor: drop wlr_surface_destroy_role_object() (!4324)
- scene_output_layout: make output adding explicit (!4318), scene_output_layout: Don't destroy output when output layout is destroyed (!4358): Scene outputs aren't created or destroyed automatically anymore, compositors now need to manually call
wlr_scene_output_create()
and thenwlr_scene_output_layout_add_output()
when using the scene output layout helper.
- drop KDE idle protocol support (!3778): this KDE protocol has been superseded by the standard idle-notify-v1 protocol.
- seat: remove
wlr_seat_validate_grab_serial()
(!4273): this function was a placeholder.
- output_event_commit: Replace committed and buffer with actual state struct (!4331):
wlr_output_event_commit.{comitted,buffer}
is removed. Compositors should instead get this state from thewlr_output_state
struct.
- Convert
*_buffer_from_resource()
functions totry_from
(!4400)
- xdg-toplevel: don't send maximized if tiled is requested but not supported (!4409): wlroots doesn't send
xdg_toplevel.state.maximized
if a tiled state was requested but thexdg_toplevel
's version is too low anymore. To retain previous behavior, check the version ofwlr_xdg_toplevel.resource
and sendxdg_toplevel.state.maximized
manually if required.
- backend: drop
wlr_backend_get_presentation_clock()
(!4411): all presentation timestamps are now guaranteed to beCLOCK_MONOTONIC
.
- wlr_scene: Amend scene_buffer.point_accepts_input to take coordinate pointers (!4131)
Breaking changes for custom backends and renderers
These changes are unlikely to affect compositors that don't have a custom
backend or renderer.
- render: make wlr_renderer_begin return a bool (!3424) renderers are now able to return false in
wlr_renderer_begin
, this is useful in case of GPU reset.
- linux-dmabuf-v1: remove dependency on wlr_renderer (!3903) compositors with custom renderers can call
wlr_linux_dmabuf_v1_create_with_renderer
to create the linux-dmabuf-unstable-v1 global with their renderer.
- output: Introduce wlr_output_state to wlr_output_init (!4238):
wlr_output_update_{custom,}_mode
andwlr_output_update_enabled
are removed. Backends that need to change state during runtime should usewlr_output_send_request_state
and should send appropriate initialization state towlr_output_init
usingwlr_output_state
at init.