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