A modular Wayland compositor library
Find a file
Devin Bayer a0e0dfacd4 wlroots 0.13.0
Andri Yngvason (1):
       types/seat: Clear focus in wlr_seat_destroy()
 
 Ariadne Conill (1):
       drm: add fallback drmModeAddFB for drivers which do not support drmModeAddFB2
 
 Brandon Dowdy (7):
       examples: remove dependency on wlr_egl from clients
       render/egl: remove wlr_egl_{create,destroy}_surface
       render/egl: remove *config_attribs and wlr_egl->config
       examples: remove "major" and "minor" from egl_common.c
       render/egl: add check for EGL_KHR_surfaceless_context
       examples/egl_common: make attribs const
       region: remove leftover description of resource_list
 
 BrassyPanache (1):
       Expose ICCCM input status
 
 Chris Chamberlain (1):
       Free xwayland cursor in wlr_xwayland_destroy
 
 Daniel Kondor (1):
       layer-shell: allow new values for keyboard-interactivity
 
 Dominik Honnef (1):
       xwayland: use pipe instead of SIGUSR1 to signal readiness
 
 Ilia Bozhinov (10):
       texture: document that functions should not be called while rendering
       xwm: add wlr_xwayland_surface_restack()
       drm: do not unset make/model before emitting destroy event
       egl: fix memory leak
       noop: listen to display destroy and destroy the backend
       util: add support for generating UUIDs
       xdg-shell: add wlr_xdg_toplevel_set_parent
       types: add wlr_xdg_foreign_registry
       types: add wlr_xdg_foreign_v1
       types: add wlr_xdg_foreign_v2
 
 Ilia Mirkin (8):
       backend/x11: set a blank cursor rather than hiding globally
       backend/x11: make sure output transform matrix is initialized
       backend/x11: add support for scanout mode
       backend/x11: skip events we don't care about
       backend/x11: keep track of exposed rects, add them to damage regions
       xwayland: free render picture backing cursor
       backend/x11: use native cursors
       backend/x11: clamp hotspot to texture bounds
 
 Isaac Freund (28):
       Replace wlr_key_state with wl_keyboard_key_state
       Use uint32_t in wlr_renderer_begin signature
       Remove unneeded includes from wlr_input_device.h
       backend/libseat: fix change_vt return value
       wlr-output-management: add missing NULL check
       screencopy: handle compositor not setting damage
       screencopy: use output transform for damage copy
       screencopy: check if damage committed before copy
       screencopy: don't use output transform for damage copy
       docs: fix error in wlr_output_set_damage() comment
       xwayland: avoid crash on repeated server_finish_display() call
       subsurface: handle NULL parent in get_root_surface
       toplevel-management: ignore inert seats
       toplevel-management: handle strdup failure
       toplevel-management: avoid redundant state events
       docs: wlr_surface_from_resource cannot return NULL
       primary selection: destroy devices before manager
       gtk primary selection: destroy devices before manager
       layer shell: advertise version 3
       xdg shell: make unconstrain_from_box arg const
       xdg shell: add wlr_xdg_surface_for_each_popup_surface()
       xdg shell: add wlr_xdg_surface_popup_surface_at()
       layer shell: add wlr_layer_surface_v1_popup_surface_at()
       xdg/layer shell: reduce code duplication in iterators
       output-management: use same types as wlr_output
       xdg shell: remove wlr_xdg_surface_for_each_popup()
       layer shell: rename popup iterator for consistency
       xdg-output: destroy outputs before manager
 
 Justus Rossmeier (1):
       tablet_v2: Fix implicit grab end detection
 
 Kenny Levinsen (7):
       backend/drm: Use legacy gamma size for legacy backend
       surface: Make send_enter store entered outputs
       backend/wayland: Avoid uninitialized read
       wlr_seat_pointer: Remove log on notify_button
       backend/session/libseat: Set loglevel to INFO
       docs: Minor libseat corrections
       xdg_shell: Fix invert_y of top right anchor
 
 Lukas Märdian (2):
       Fix false positive -Wstringop-truncation
       xcursor: use strncat instead of strncpy
 
 Manuel Stoeckl (3):
       xwayland/xwm: make atom_map const
       xcursor: make cursor data and metadata const
       Make implementation function lists static const
 
 Marten Ringwelski (1):
       wlr-output-management: Handle modes added after initializing
 
 Mykola Orliuk (8):
       backend/wayland: Bind seat listener to wlr_wl_seat
       backend/wayland: Link input devices with seats
       backend/wayland: Add registering multiple seats
       backend/wayland: Use seat name in input names
       backend/wayland: Listen to pointers from all seats
       backend/wayland: Bind pointer listener to seat
       backend/wayland: Add active pointer per host seat
       backend/wayland: Set cursor indivdualy per output
 
 Quantum (1):
       render/wlr_texture: clamp texture coordinates to edge by default
 
 Ronan Pigott (2):
       render/egl: recognize EGL_BAD_DEVICE_EXT error
       backend/drm: avoid gcc stringop-truncation warning
 
 Rouven Czerwinski (1):
       util: fix uuid support for freebsd
 
 Simon Ser (287):
       backend/libinput: require libinput 1.14
       render: introduce wlr_allocator
       render: introduce wlr_gbm_allocator
       render/drm_format_set: introduce wlr_drm_format_dup
       render: introduce wlr_swapchain
       buffer: add wlr_client_buffer_get
       render: introduce wlr_renderer_bind_buffer
       render/gles2: implement wlr_renderer_bind_buffer
       render/gles2: fix y-inverted output when rendering to buffer
       backend/drm: use wlr_swapchain
       render/swapchain: add support for buffer age
       backend/drm: add support for wlr_swapchain buffer age
       backend/drm: get rid of wlr_drm_fb_type
       backend/drm: add support for wlr_swapchain multi-GPU
       backend/drm: check drm_surface_render_black_frame return value
       render/egl: introduce wlr_egl_dup_drm_fd
       render: introduce wlr_renderer_get_drm_fd
       backend/headless: switch to wlr_swapchain
       backend/headless: implement export_dmabuf
       build: improve summary via bool_yn
       render/egl: stop including eglmesaext.h
       backend/session: don't return FD on failure in open_file
       backend/session: operate on wlr_device
       backend/session: filter udev events by sysname
       backend/session: introduce wlr_session.events.add_drm_card
       backend/session: wait for DRM device if none found
       Revert "session/logind: support CanGraphical property"
       backend/session: replace session_signal with events.active
       backend/session/logind: log when using XDG_SESSION_ID
       backend/session: add a timeout waiting for GPUs
       backend/x11: log errors
       backend/x11: log unhandled X11 events
       backend/x11: log unhandled client messages
       backend/drm: stop force-probing connectors
       backend/wayland: don't set EGL visual
       render/egl: don't rely on being able to open primary node
       render: expand wlr_renderer_get{,_dmabuf}_formats docs
       render: remove wlr_renderer_format_supported
       render: introduce wlr_renderer_get_dmabuf_render_formats
       backend/headless: use a format suitable for rendering
       render: rename wlr_renderer_get_dmabuf_formats
       render: rename wlr_renderer_get_formats
       render: assert {X,A}RGB8888 are supported
       render/egl: remove wlr_egl.external_only_dmabuf_formats
       backend/drm: rotation is a plane property
       backend/drm: "scaling mode" is a connector property
       Revert "backend/drm: stop force-probing connectors"
       xwayland: add -core to flags
       build: add leftover WLR_HAS_LIBCAP
       backend/drm: take a wlr_drm_format in init_drm_surface
       render/drm_format_set: introduce wlr_drm_format_intersect
       backend/drm: query render formats
       backend/drm: remove unused if in drm_connector_move_cursor
       backend/session/libseat: set XDG_SESSION_TYPE
       render/egl: support config-less wlr_egl
       backend/headless: create a config-less EGL context
       backend/drm: use EGL_PLATFORM_GBM_KHR
       backend/drm: unset current surface before importing
       render/drm_format_set: allocate using cap when duplicating
       backend/drm: stop tracking overlay planes
       backend/headless: add support for direct scan-out
       backend/drm: fix missing wlr_drm_format.cap
       render/drm_format_set: assert len <= cap when duplicating
       backend/drm: remove EGL config
       render/gles2: don't eglGetConfigAttrib on EGL_NO_CONFIG_KHR
       render/gles2: query alpha size from render buffer
       output: improve basic test logging
       backend/drm: remove workaround for amdgpu DP MST
       output: stop assuming a frame is pending in init
       backend/wayland: stop rendering black frame on init
       backend/wayland: use wlr_swapchain for main surface
       backend/wayland: use wlr_swapchain for cursor surface
       build: move wayland-egl dependency to examples/
       backend/wayland: query render formats
       backend/x11: switch to wlr_swapchain
       backend/x11: query modifiers supported by X11 server
       backend/x11: fix xinput mask mixed up with present
       backend/drm: stop using GBM flags
       Remove inline keyword
       render/gles2: require GL_EXT_unpack_subimage
       backend/drm: dup FD before wlr_gbm_allocator_create
       backend: use fcntl(F_DUPFD_CLOEXEC) instead of dup
       backend/drm: add wlr_drm_connector.backend
       backend/headless: select the rendering device ourselves
       backend/x11: fix DRI3 formats not used
       render/allocator: ignore NULL in wlr_allocator_destroy
       backend/drm: remove nouveau workaround
       backend/drm: add wlr_drm_backend.name
       backend/drm: print DRM device name when scanning connectors
       render/drm_format_set: add wlr_drm_format_{create,add}
       backend/drm: use wlr_drm_format_{create,add}
       backend/x11: use DRI3Open to get DRM FD
       util/time: add timespec_from_nsec
       backend/x11: send more precise output present events
       backend/drm: introduce wlr_drm_conn_log
       backend/drm: introduce wlr_drm_connector.name
       backend/drm: refactor wlr_output destruction
       backend/drm: remove unused wlr_drm_plane.drm_format
       backend/wayland: remove EGL config
       backend/wayland: re-use wl_buffers
       backend/x11: re-use pixmaps
       backend/x11: destroy buffers when destroying output
       backend/drm: don't save texture in gbm_bo user data
       backend/drm: grab DMA-BUF from wlr_buffer instead of gbm_bo
       backend/drm: drop export_drm_bo
       backend/drm: make drm_fb_acquire return a FB ID
       backend/drm: remove drm_fb_acquire
       backend/drm: error on size mismatch in drm_surface_blit
       backend/drm: destroy DRM connectors that disappear
       backend/drm: assert connector state after wlr_output_destroy
       backend/drm: use plural form for possible_crtcs
       backend/drm: don't retry page-flip when modifiers are unsupported
       Remove contrib/_incr_version
       docs/env_vars: _WAYLAND_DISPLAY isn't used anymore
       docs/env_vars: document seatd session
       backend/drm: log whether ADDFB2 modifiers are supported
       backend/drm: add special case for cursor in add_plane
       backend/drm: make drmModePlane arg in add_plane const
       backend/drm: use connector log helpers in atomic backend
       client-buffer: remove unnecessary wlr_resource_get_buffer_size
       Stop using wlr_texture_get_size
       backend/drm: make listener names more idiomatic
       backend/x11: implement a real rendering loop
       backend/x11: create per-window present event contexts
       backend/drm: force LINEAR for cursor plane formats
       render/drm_format_set: add special case for LINEAR-only formats
       backend/drm: extract linear format creation into function
       backend/drm: remove special linear case for cursor plane
       Remove wlr_create_renderer_func_t
       backend/x11: always open render node
       backend/x11: print version on extension error
       backend/drm: ignore hotplug events while inactive
       backend/drm: stash pending page-flip CRTC
       examples: remove visual for EGL_PLATFORM_WAYLAND_EXT
       examples: request an EGL config
       backend/wayland: re-use cursor wl_buffers
       backend/session: allow wlr_session_find_gpus to return an error
       backend/wayland: remove unnecessary flags from event source
       render: remove EGL config and visual from wlr_renderer_autocreate
       backend/drm: don't log errno on plane_get_next_fb failure
       render/egl: document that config may be zero
       render/egl: use KHR function pointer type
       render/egl: document NULL config_attribs passed to wlr_egl_init
       backend/drm: make wlr_drm_plane.{pending,queued,current}_fb pointers
       backend/drm: introduce drm_fb_create
       backend/drm: add wlr_drm_buf.local_wlr_buf
       backend/drm: only keep track of local buffer
       backend/drm: re-use FBs
       backend/drm: stop using surface size for BO
       xwayland: remove protocol debug messages
       protocol: add drm.xml
       backend/wayland: use the EGL GBM platform
       output-damage: use output commit event
       gamma-control-v1: schedule frame when resetting gamma LUT
       build: remove Clang workarounds
       render/gles2: fix EGL use-after-free
       build: use more consistent feature names in summary
       render/egl: remove support for EGL_NATIVE_VISUAL_ID
       render/egl: remove wlr_egl_swap_buffers
       render/egl: replace init/finish with create/destroy
       render/egl: remove surface and buffer age args from make_current
       backend/drm: fix segfault in page_flip_handler
       backend/drm: remove unnecessary wlr_drm_fb.wlr_buf check
       render/gles2: save/restore EGL context in destroy_buffer
       render: document wlr_renderer_bind_buffer
       backend: remove unnecessary GLES2 includes
       output-damage: stop listening to scale/transform events
       output-layout: stop listening to scale/transform events
       output: remove scale/transform events
       render/gles2: restore EGL context after texture operations
       render/gbm_allocator: log GBM backend name
       render/gbm_allocator: document that DRM primary FDs work
       render/gbm_allocator: fix gbm_device use-after-free
       render: extract gles2 build files to subdir
       backend: add get_drm_fd to interface
       backend/multi: implement get_drm_fd
       backend/wayland: implement get_drm_fd
       backend/drm: implement get_drm_fd
       backend/x11: implement get_drm_fd
       backend/headless: implement get_drm_fd
       render/gles2: make EGL context current in bind_buffer
       output-damage: stop relying on output pending state on commit
       output: send commit event after pending state is cleared
       render/egl: fix gbm_device use-after-free
       render: introduce private wlr_renderer_autocreate_with_drm_fd
       backend/drm: use local DRM FD for wlr_rend
       backend/headless: create renderer after wlr_backend_init
       render/gbm_allocator: export to DMA-BUF on init
       render/gbm_allocator: set modifier to INVALID if implicit
       backend/x11: log when creating X11 backend
       backend/x11: log DRM node name
       backend/x11: add support for DRI3 1.0
       backend/x11: add xcb_dri3_pixmap_from_buffers check for n_planes
       backend/drm: add support for the subconnector property
       backend/drm: add wlr_drm_connector_get_id
       backend/drm: fix modifiers for cursor plane buffers
       backend/x11: fix region not being actually used
       Revert "render/egl: remove unused gbm_device member"
       Revert "render: add wlr_egl_create_from_drm_fd function"
       render/gbm_allocator: avoid drmPrimeHandleToFD
       backend/drm: document wlr_drm_plane surface fields
       backend/drm: simplify drm_fb_lock_surface
       backend/drm: don't blit in drm_fb_import
       xwayland: drop unused enum net_wm_state_action
       render/egl: fix NULL dereference when using llvmpipe
       xwayland: fix extraneous NET_WM_STATE log messages
       backend/x11: remove output_set_refresh
       backend/wayland: remove unnecessary cast
       render/egl: log whether DMA-BUF modifiers are supported
       render/dmabuf: cleanup on wlr_dmabuf_attributes_copy error
       render/dmabuf: make src arg const in wlr_dmabuf_attributes_copy
       region: make wlr_region_create private
       region: remove resource_list arg from region_create
       backend/wayland: flush remote display
       Fix bad indentation
       readme: fix typo in xcb-icccm dependency
       render/gles2: remove YUV blocklist
       backend/x11: drop x11-xcb dependency
       seat: use WL_SEAT_ERROR_CAPABILITY
       surface: check buffer size is compatible with scale
       build: remove extra whitespace
       examples: drop wlroots dep from egl_common.c
       examples: drop wlr/render/egl.h include from client examples
       examples: remove wlroots dep from client examples
       build: use dictionnary for features instead of configuration_data
       build: set have_* dep variables for our features
       build: set pkg-config variables for our features
       Replace leftover conf_data with features
       build: bump meson version to 0.56.0
       surface: move INVALID_SIZE check into surface_state_finalize
       surface: don't send protocol error on invalid buffer size
       backend: add error messages in attach_render impls
       render/gles2: check buffer stride when uploading texture
       render/gles2: remove current_buffer checks
       render/shm_format: add wl_shm_format conversion helpers
       render/gles2: convert format table to DRM formats
       render/gles2: replace wlr_gles2_texture.wl_format with drm_format
       render: use DRM formats in wlr_renderer_get_shm_texture_formats
       output: use DRM format in wlr_output_preferred_read_format
       render: use DRM formats in wlr_renderer_read_pixels
       render: use DRM formats in wlr_texture_from_pixels
       Remove unnecessary wayland-server-protocol.h includes
       build: add -Wformat=2 -Walloca
       build: rollback -Wformat=2
       buffer: add missing convert_wl_shm_format_to_drm call
       Fix wl_shm_format passed to wlr_texture_from_pixels
       examples: add libdrm partial dependency for compositors
       readme: make it clear build/ is a dir
       readme: use spaces for list indent
       readme: use references for links
       backend/session: fix KMS device filtering
       xwayland: add dependency on xwayland
       xwayland: check executable exists on init
       xwayland: use -listenfd if available
       backend/drm: add new writeback and SPI connector types
       output: document hotspot coord space
       output: fix transform matrix for 90/270 rotations
       render/egl: don't fail on EGL_MESA_device_software
       screencopy: stop using wlr_renderer_blit_dmabuf
       Fix buffer blit matrices
       ci: update xwayland dep on alpine
       examples/dmabuf-capture: stop using av_init_packet
       linux-dmabuf-v1: always advertise support for implicit modifiers
       surface: introduce commit sequence numbers
       surface: introduce cached states
       subsurface: use cached surface state
       subsurface: immediately unlock cached state in set_desync
       render/egl, backend/wayland: add workaround for split render/display setups
       xwayland: assume no WM_HINTS means window wants input
       xwayland: require xcb-icccm
       xwayland: use ICCCM state defines from xcb-icccm
       backend/drm: use format table in test_buffer
       build: add subproject fallback for libseat
       surface: make wlr_surface_create private
       surface: remove resource_list arg from surface_create
       render/egl: stop relying on platform for high priority
       backend/drm: try to import buffer when testing it
       backend/drm: improve logs in drm_fb_create
       backend/drm: reject DMA-BUFs with flags
       backend/x11: reject DMA-BUFs with flags
       build: simplify HAS_LIBUUID definition
       build: use get_variable instead of get_pkgconfig_variable
       backend/drm: don't set NONBLOCK with TEST_ONLY
       backend/drm: downgrade test-only commit failure log level
       backend/drm: use atomic test-only commits for direct scan-out
       backend/drm: stop testing for buffer in drm_connector_commit_buffer
       build: bump to v0.13.0
 
 Simon Zeni (15):
       ci: build tinywl
       tinywl: fix wlr_backend_autocreate call
       backend: remove wlr_egl from all backends
       remove unnecessary egl includes
       render: drop egl parameters from wlr_renderer_autocreate
       render: remove egl include from wlr_renderer
       render: add wlr_egl_create_from_drm_fd function
       render/egl: remove unused gbm_device member
       render/egl: fail to create wlr_egl on software renderer
       output: improve transform matrix calculation
       render/pixel_format: introduce pixel format info table
       Move render/shm_format functions to render/pixel_format
       backend/drm: use pixel format table in renderer
       render/pixel_format: add XBGR8888 and ABGR8888 format
       render/gles2: remove depth and bpp gles2_pixel_format, use drm pixel format
 
 Stephane Chauveau (1):
       backend/drm: don't assume possible_crtcs has only one bit set
 
 Tadeo Kondrak (3):
       xdg-foreign: Make imported object inert when exported is destroyed
       xdg-foreign: rename finish_* functions to destroy_*
       text_input_v3: correct typo in enum field
 
 Tudor Brindus (21):
       xwayland: use wlr_log_errno instead of %m
       xwayland/selection: prevent fd leak on unsupported MIME type
       xwayland/selection: rename Wayland-facing data and helpers
       xwayland/selection: make `xwm_data_source_write` return 0 on failure
       xwayland/selection: explicitly bail if first write to Wayland fd fails
       xwayland/selection: simplify incremental transfer control flow
       xwayland/selection: extract out property requests
       xwayland/selection: refactor remaining incremental transfer code
       xwayland/selection: end incr transfer on empty prop, not next selection
       xwayland/selection: don't request another selection while one is pending
       xwayland/selection: don't leak Wayland fd if ConvertSelection fails
       xwayland/selection: destroy all selections on Xwayland restart
       xwayland/selection: make xwm_selection_finish take a wlr_xwm_selection *
       xwayland/selection: introduce `xwm_selection_transfer_init`
       xwayland/selection: make xwm_selection_init take a wlr_xwm_selection *
       xwayland/selection: use one X11 window per incoming transfer
       xwayland/selection: use one target window per selection
       xwayland/selection: allow simultaneous Wayland-to-X11 transfers
       xwayland/selection: ignore requests for anything but the newest data
       xwayland/selection: log when proxy window loses ownership
       xwayland/selection: flush connection after changing xwm selection owner
 
 fwsmit (1):
       examples/foreign-toplevel: Add documenation and output selection
 
 zccrs (2):
       Use absolute paths in include in header files
       render/egl: check "EGL_KHR_platform_gbm" for EGL gbm platform
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEENP+VJs/vDpejQOLkD9574OiPXkgFAmBuBqAACgkQD9574OiP
 XkgklxAArPU0hgPaFR8ApxQTJ4Ck2f+nflYdytLHJeWCJrYatuf9sspaGxjMTDM/
 b77nha3N7WTO1uc5/Q7E4Plpeb0TBkEsbD3Yz4txMdC3FIONBdbq1EY+2/4JbPPY
 PNJAyJF60gU68zZbcWCAvIp+t11jMpt5AHJEdAeZd4jk5q6zMhxcIa4i2EfOMDgB
 QvkyC1XhkTV1QYN4ElKCFvrARpA8wdoqT+zOR9PwJ85SGanzPPVBDDqjE3D9Eblt
 Ly4m/Wo2pHBB72mnxZtctOCKIAUePSIMf+PEwpQuB2jYBnlIG6Rp1TXNhnzMccOp
 kXwAEbT5MdbOPrTw4vqRjDq3iOpl8XkODyA66JP0U88bDcI7WXaAo6STiqjXjIJA
 VzljzCrVzhLiSMkSU794JJ+vADrFG/NltH0cx2a8qdLllBjaly1PtbyJpDoJk0Hw
 vx4Bewr/a3LTXps6JeVUj9XrtpmC6EECmUAm9nj7NmMpqNOz7YA6MYqfBkVJRDWn
 PUeY5AET9WCRsmx2DwTZXrOPL7imUhH7D4JRuwxC2VZBwJIaShdeZ7TD5YwSq4x3
 nv51c1iIpH5dgk4Iys2EoQg1h+TQ+kuX6iSsHZDelY3XiO1h3e8l8pRvNP06lVJQ
 B/bdQeelHej7TdhtEZxBYfs1Av+lrzWzJmSGzZSPit/OIGZg4GM=
 =jB4s
 -----END PGP SIGNATURE-----

Merge tag '0.13.0' into color-profiles

wlroots 0.13.0

Andri Yngvason (1):
      types/seat: Clear focus in wlr_seat_destroy()

Ariadne Conill (1):
      drm: add fallback drmModeAddFB for drivers which do not support drmModeAddFB2

Brandon Dowdy (7):
      examples: remove dependency on wlr_egl from clients
      render/egl: remove wlr_egl_{create,destroy}_surface
      render/egl: remove *config_attribs and wlr_egl->config
      examples: remove "major" and "minor" from egl_common.c
      render/egl: add check for EGL_KHR_surfaceless_context
      examples/egl_common: make attribs const
      region: remove leftover description of resource_list

BrassyPanache (1):
      Expose ICCCM input status

Chris Chamberlain (1):
      Free xwayland cursor in wlr_xwayland_destroy

Daniel Kondor (1):
      layer-shell: allow new values for keyboard-interactivity

Dominik Honnef (1):
      xwayland: use pipe instead of SIGUSR1 to signal readiness

Ilia Bozhinov (10):
      texture: document that functions should not be called while rendering
      xwm: add wlr_xwayland_surface_restack()
      drm: do not unset make/model before emitting destroy event
      egl: fix memory leak
      noop: listen to display destroy and destroy the backend
      util: add support for generating UUIDs
      xdg-shell: add wlr_xdg_toplevel_set_parent
      types: add wlr_xdg_foreign_registry
      types: add wlr_xdg_foreign_v1
      types: add wlr_xdg_foreign_v2

Ilia Mirkin (8):
      backend/x11: set a blank cursor rather than hiding globally
      backend/x11: make sure output transform matrix is initialized
      backend/x11: add support for scanout mode
      backend/x11: skip events we don't care about
      backend/x11: keep track of exposed rects, add them to damage regions
      xwayland: free render picture backing cursor
      backend/x11: use native cursors
      backend/x11: clamp hotspot to texture bounds

Isaac Freund (28):
      Replace wlr_key_state with wl_keyboard_key_state
      Use uint32_t in wlr_renderer_begin signature
      Remove unneeded includes from wlr_input_device.h
      backend/libseat: fix change_vt return value
      wlr-output-management: add missing NULL check
      screencopy: handle compositor not setting damage
      screencopy: use output transform for damage copy
      screencopy: check if damage committed before copy
      screencopy: don't use output transform for damage copy
      docs: fix error in wlr_output_set_damage() comment
      xwayland: avoid crash on repeated server_finish_display() call
      subsurface: handle NULL parent in get_root_surface
      toplevel-management: ignore inert seats
      toplevel-management: handle strdup failure
      toplevel-management: avoid redundant state events
      docs: wlr_surface_from_resource cannot return NULL
      primary selection: destroy devices before manager
      gtk primary selection: destroy devices before manager
      layer shell: advertise version 3
      xdg shell: make unconstrain_from_box arg const
      xdg shell: add wlr_xdg_surface_for_each_popup_surface()
      xdg shell: add wlr_xdg_surface_popup_surface_at()
      layer shell: add wlr_layer_surface_v1_popup_surface_at()
      xdg/layer shell: reduce code duplication in iterators
      output-management: use same types as wlr_output
      xdg shell: remove wlr_xdg_surface_for_each_popup()
      layer shell: rename popup iterator for consistency
      xdg-output: destroy outputs before manager

Justus Rossmeier (1):
      tablet_v2: Fix implicit grab end detection

Kenny Levinsen (7):
      backend/drm: Use legacy gamma size for legacy backend
      surface: Make send_enter store entered outputs
      backend/wayland: Avoid uninitialized read
      wlr_seat_pointer: Remove log on notify_button
      backend/session/libseat: Set loglevel to INFO
      docs: Minor libseat corrections
      xdg_shell: Fix invert_y of top right anchor

Lukas Märdian (2):
      Fix false positive -Wstringop-truncation
      xcursor: use strncat instead of strncpy

Manuel Stoeckl (3):
      xwayland/xwm: make atom_map const
      xcursor: make cursor data and metadata const
      Make implementation function lists static const

Marten Ringwelski (1):
      wlr-output-management: Handle modes added after initializing

Mykola Orliuk (8):
      backend/wayland: Bind seat listener to wlr_wl_seat
      backend/wayland: Link input devices with seats
      backend/wayland: Add registering multiple seats
      backend/wayland: Use seat name in input names
      backend/wayland: Listen to pointers from all seats
      backend/wayland: Bind pointer listener to seat
      backend/wayland: Add active pointer per host seat
      backend/wayland: Set cursor indivdualy per output

Quantum (1):
      render/wlr_texture: clamp texture coordinates to edge by default

Ronan Pigott (2):
      render/egl: recognize EGL_BAD_DEVICE_EXT error
      backend/drm: avoid gcc stringop-truncation warning

Rouven Czerwinski (1):
      util: fix uuid support for freebsd

Simon Ser (287):
      backend/libinput: require libinput 1.14
      render: introduce wlr_allocator
      render: introduce wlr_gbm_allocator
      render/drm_format_set: introduce wlr_drm_format_dup
      render: introduce wlr_swapchain
      buffer: add wlr_client_buffer_get
      render: introduce wlr_renderer_bind_buffer
      render/gles2: implement wlr_renderer_bind_buffer
      render/gles2: fix y-inverted output when rendering to buffer
      backend/drm: use wlr_swapchain
      render/swapchain: add support for buffer age
      backend/drm: add support for wlr_swapchain buffer age
      backend/drm: get rid of wlr_drm_fb_type
      backend/drm: add support for wlr_swapchain multi-GPU
      backend/drm: check drm_surface_render_black_frame return value
      render/egl: introduce wlr_egl_dup_drm_fd
      render: introduce wlr_renderer_get_drm_fd
      backend/headless: switch to wlr_swapchain
      backend/headless: implement export_dmabuf
      build: improve summary via bool_yn
      render/egl: stop including eglmesaext.h
      backend/session: don't return FD on failure in open_file
      backend/session: operate on wlr_device
      backend/session: filter udev events by sysname
      backend/session: introduce wlr_session.events.add_drm_card
      backend/session: wait for DRM device if none found
      Revert "session/logind: support CanGraphical property"
      backend/session: replace session_signal with events.active
      backend/session/logind: log when using XDG_SESSION_ID
      backend/session: add a timeout waiting for GPUs
      backend/x11: log errors
      backend/x11: log unhandled X11 events
      backend/x11: log unhandled client messages
      backend/drm: stop force-probing connectors
      backend/wayland: don't set EGL visual
      render/egl: don't rely on being able to open primary node
      render: expand wlr_renderer_get{,_dmabuf}_formats docs
      render: remove wlr_renderer_format_supported
      render: introduce wlr_renderer_get_dmabuf_render_formats
      backend/headless: use a format suitable for rendering
      render: rename wlr_renderer_get_dmabuf_formats
      render: rename wlr_renderer_get_formats
      render: assert {X,A}RGB8888 are supported
      render/egl: remove wlr_egl.external_only_dmabuf_formats
      backend/drm: rotation is a plane property
      backend/drm: "scaling mode" is a connector property
      Revert "backend/drm: stop force-probing connectors"
      xwayland: add -core to flags
      build: add leftover WLR_HAS_LIBCAP
      backend/drm: take a wlr_drm_format in init_drm_surface
      render/drm_format_set: introduce wlr_drm_format_intersect
      backend/drm: query render formats
      backend/drm: remove unused if in drm_connector_move_cursor
      backend/session/libseat: set XDG_SESSION_TYPE
      render/egl: support config-less wlr_egl
      backend/headless: create a config-less EGL context
      backend/drm: use EGL_PLATFORM_GBM_KHR
      backend/drm: unset current surface before importing
      render/drm_format_set: allocate using cap when duplicating
      backend/drm: stop tracking overlay planes
      backend/headless: add support for direct scan-out
      backend/drm: fix missing wlr_drm_format.cap
      render/drm_format_set: assert len <= cap when duplicating
      backend/drm: remove EGL config
      render/gles2: don't eglGetConfigAttrib on EGL_NO_CONFIG_KHR
      render/gles2: query alpha size from render buffer
      output: improve basic test logging
      backend/drm: remove workaround for amdgpu DP MST
      output: stop assuming a frame is pending in init
      backend/wayland: stop rendering black frame on init
      backend/wayland: use wlr_swapchain for main surface
      backend/wayland: use wlr_swapchain for cursor surface
      build: move wayland-egl dependency to examples/
      backend/wayland: query render formats
      backend/x11: switch to wlr_swapchain
      backend/x11: query modifiers supported by X11 server
      backend/x11: fix xinput mask mixed up with present
      backend/drm: stop using GBM flags
      Remove inline keyword
      render/gles2: require GL_EXT_unpack_subimage
      backend/drm: dup FD before wlr_gbm_allocator_create
      backend: use fcntl(F_DUPFD_CLOEXEC) instead of dup
      backend/drm: add wlr_drm_connector.backend
      backend/headless: select the rendering device ourselves
      backend/x11: fix DRI3 formats not used
      render/allocator: ignore NULL in wlr_allocator_destroy
      backend/drm: remove nouveau workaround
      backend/drm: add wlr_drm_backend.name
      backend/drm: print DRM device name when scanning connectors
      render/drm_format_set: add wlr_drm_format_{create,add}
      backend/drm: use wlr_drm_format_{create,add}
      backend/x11: use DRI3Open to get DRM FD
      util/time: add timespec_from_nsec
      backend/x11: send more precise output present events
      backend/drm: introduce wlr_drm_conn_log
      backend/drm: introduce wlr_drm_connector.name
      backend/drm: refactor wlr_output destruction
      backend/drm: remove unused wlr_drm_plane.drm_format
      backend/wayland: remove EGL config
      backend/wayland: re-use wl_buffers
      backend/x11: re-use pixmaps
      backend/x11: destroy buffers when destroying output
      backend/drm: don't save texture in gbm_bo user data
      backend/drm: grab DMA-BUF from wlr_buffer instead of gbm_bo
      backend/drm: drop export_drm_bo
      backend/drm: make drm_fb_acquire return a FB ID
      backend/drm: remove drm_fb_acquire
      backend/drm: error on size mismatch in drm_surface_blit
      backend/drm: destroy DRM connectors that disappear
      backend/drm: assert connector state after wlr_output_destroy
      backend/drm: use plural form for possible_crtcs
      backend/drm: don't retry page-flip when modifiers are unsupported
      Remove contrib/_incr_version
      docs/env_vars: _WAYLAND_DISPLAY isn't used anymore
      docs/env_vars: document seatd session
      backend/drm: log whether ADDFB2 modifiers are supported
      backend/drm: add special case for cursor in add_plane
      backend/drm: make drmModePlane arg in add_plane const
      backend/drm: use connector log helpers in atomic backend
      client-buffer: remove unnecessary wlr_resource_get_buffer_size
      Stop using wlr_texture_get_size
      backend/drm: make listener names more idiomatic
      backend/x11: implement a real rendering loop
      backend/x11: create per-window present event contexts
      backend/drm: force LINEAR for cursor plane formats
      render/drm_format_set: add special case for LINEAR-only formats
      backend/drm: extract linear format creation into function
      backend/drm: remove special linear case for cursor plane
      Remove wlr_create_renderer_func_t
      backend/x11: always open render node
      backend/x11: print version on extension error
      backend/drm: ignore hotplug events while inactive
      backend/drm: stash pending page-flip CRTC
      examples: remove visual for EGL_PLATFORM_WAYLAND_EXT
      examples: request an EGL config
      backend/wayland: re-use cursor wl_buffers
      backend/session: allow wlr_session_find_gpus to return an error
      backend/wayland: remove unnecessary flags from event source
      render: remove EGL config and visual from wlr_renderer_autocreate
      backend/drm: don't log errno on plane_get_next_fb failure
      render/egl: document that config may be zero
      render/egl: use KHR function pointer type
      render/egl: document NULL config_attribs passed to wlr_egl_init
      backend/drm: make wlr_drm_plane.{pending,queued,current}_fb pointers
      backend/drm: introduce drm_fb_create
      backend/drm: add wlr_drm_buf.local_wlr_buf
      backend/drm: only keep track of local buffer
      backend/drm: re-use FBs
      backend/drm: stop using surface size for BO
      xwayland: remove protocol debug messages
      protocol: add drm.xml
      backend/wayland: use the EGL GBM platform
      output-damage: use output commit event
      gamma-control-v1: schedule frame when resetting gamma LUT
      build: remove Clang workarounds
      render/gles2: fix EGL use-after-free
      build: use more consistent feature names in summary
      render/egl: remove support for EGL_NATIVE_VISUAL_ID
      render/egl: remove wlr_egl_swap_buffers
      render/egl: replace init/finish with create/destroy
      render/egl: remove surface and buffer age args from make_current
      backend/drm: fix segfault in page_flip_handler
      backend/drm: remove unnecessary wlr_drm_fb.wlr_buf check
      render/gles2: save/restore EGL context in destroy_buffer
      render: document wlr_renderer_bind_buffer
      backend: remove unnecessary GLES2 includes
      output-damage: stop listening to scale/transform events
      output-layout: stop listening to scale/transform events
      output: remove scale/transform events
      render/gles2: restore EGL context after texture operations
      render/gbm_allocator: log GBM backend name
      render/gbm_allocator: document that DRM primary FDs work
      render/gbm_allocator: fix gbm_device use-after-free
      render: extract gles2 build files to subdir
      backend: add get_drm_fd to interface
      backend/multi: implement get_drm_fd
      backend/wayland: implement get_drm_fd
      backend/drm: implement get_drm_fd
      backend/x11: implement get_drm_fd
      backend/headless: implement get_drm_fd
      render/gles2: make EGL context current in bind_buffer
      output-damage: stop relying on output pending state on commit
      output: send commit event after pending state is cleared
      render/egl: fix gbm_device use-after-free
      render: introduce private wlr_renderer_autocreate_with_drm_fd
      backend/drm: use local DRM FD for wlr_rend
      backend/headless: create renderer after wlr_backend_init
      render/gbm_allocator: export to DMA-BUF on init
      render/gbm_allocator: set modifier to INVALID if implicit
      backend/x11: log when creating X11 backend
      backend/x11: log DRM node name
      backend/x11: add support for DRI3 1.0
      backend/x11: add xcb_dri3_pixmap_from_buffers check for n_planes
      backend/drm: add support for the subconnector property
      backend/drm: add wlr_drm_connector_get_id
      backend/drm: fix modifiers for cursor plane buffers
      backend/x11: fix region not being actually used
      Revert "render/egl: remove unused gbm_device member"
      Revert "render: add wlr_egl_create_from_drm_fd function"
      render/gbm_allocator: avoid drmPrimeHandleToFD
      backend/drm: document wlr_drm_plane surface fields
      backend/drm: simplify drm_fb_lock_surface
      backend/drm: don't blit in drm_fb_import
      xwayland: drop unused enum net_wm_state_action
      render/egl: fix NULL dereference when using llvmpipe
      xwayland: fix extraneous NET_WM_STATE log messages
      backend/x11: remove output_set_refresh
      backend/wayland: remove unnecessary cast
      render/egl: log whether DMA-BUF modifiers are supported
      render/dmabuf: cleanup on wlr_dmabuf_attributes_copy error
      render/dmabuf: make src arg const in wlr_dmabuf_attributes_copy
      region: make wlr_region_create private
      region: remove resource_list arg from region_create
      backend/wayland: flush remote display
      Fix bad indentation
      readme: fix typo in xcb-icccm dependency
      render/gles2: remove YUV blocklist
      backend/x11: drop x11-xcb dependency
      seat: use WL_SEAT_ERROR_CAPABILITY
      surface: check buffer size is compatible with scale
      build: remove extra whitespace
      examples: drop wlroots dep from egl_common.c
      examples: drop wlr/render/egl.h include from client examples
      examples: remove wlroots dep from client examples
      build: use dictionnary for features instead of configuration_data
      build: set have_* dep variables for our features
      build: set pkg-config variables for our features
      Replace leftover conf_data with features
      build: bump meson version to 0.56.0
      surface: move INVALID_SIZE check into surface_state_finalize
      surface: don't send protocol error on invalid buffer size
      backend: add error messages in attach_render impls
      render/gles2: check buffer stride when uploading texture
      render/gles2: remove current_buffer checks
      render/shm_format: add wl_shm_format conversion helpers
      render/gles2: convert format table to DRM formats
      render/gles2: replace wlr_gles2_texture.wl_format with drm_format
      render: use DRM formats in wlr_renderer_get_shm_texture_formats
      output: use DRM format in wlr_output_preferred_read_format
      render: use DRM formats in wlr_renderer_read_pixels
      render: use DRM formats in wlr_texture_from_pixels
      Remove unnecessary wayland-server-protocol.h includes
      build: add -Wformat=2 -Walloca
      build: rollback -Wformat=2
      buffer: add missing convert_wl_shm_format_to_drm call
      Fix wl_shm_format passed to wlr_texture_from_pixels
      examples: add libdrm partial dependency for compositors
      readme: make it clear build/ is a dir
      readme: use spaces for list indent
      readme: use references for links
      backend/session: fix KMS device filtering
      xwayland: add dependency on xwayland
      xwayland: check executable exists on init
      xwayland: use -listenfd if available
      backend/drm: add new writeback and SPI connector types
      output: document hotspot coord space
      output: fix transform matrix for 90/270 rotations
      render/egl: don't fail on EGL_MESA_device_software
      screencopy: stop using wlr_renderer_blit_dmabuf
      Fix buffer blit matrices
      ci: update xwayland dep on alpine
      examples/dmabuf-capture: stop using av_init_packet
      linux-dmabuf-v1: always advertise support for implicit modifiers
      surface: introduce commit sequence numbers
      surface: introduce cached states
      subsurface: use cached surface state
      subsurface: immediately unlock cached state in set_desync
      render/egl, backend/wayland: add workaround for split render/display setups
      xwayland: assume no WM_HINTS means window wants input
      xwayland: require xcb-icccm
      xwayland: use ICCCM state defines from xcb-icccm
      backend/drm: use format table in test_buffer
      build: add subproject fallback for libseat
      surface: make wlr_surface_create private
      surface: remove resource_list arg from surface_create
      render/egl: stop relying on platform for high priority
      backend/drm: try to import buffer when testing it
      backend/drm: improve logs in drm_fb_create
      backend/drm: reject DMA-BUFs with flags
      backend/x11: reject DMA-BUFs with flags
      build: simplify HAS_LIBUUID definition
      build: use get_variable instead of get_pkgconfig_variable
      backend/drm: don't set NONBLOCK with TEST_ONLY
      backend/drm: downgrade test-only commit failure log level
      backend/drm: use atomic test-only commits for direct scan-out
      backend/drm: stop testing for buffer in drm_connector_commit_buffer
      build: bump to v0.13.0

Simon Zeni (15):
      ci: build tinywl
      tinywl: fix wlr_backend_autocreate call
      backend: remove wlr_egl from all backends
      remove unnecessary egl includes
      render: drop egl parameters from wlr_renderer_autocreate
      render: remove egl include from wlr_renderer
      render: add wlr_egl_create_from_drm_fd function
      render/egl: remove unused gbm_device member
      render/egl: fail to create wlr_egl on software renderer
      output: improve transform matrix calculation
      render/pixel_format: introduce pixel format info table
      Move render/shm_format functions to render/pixel_format
      backend/drm: use pixel format table in renderer
      render/pixel_format: add XBGR8888 and ABGR8888 format
      render/gles2: remove depth and bpp gles2_pixel_format, use drm pixel format

Stephane Chauveau (1):
      backend/drm: don't assume possible_crtcs has only one bit set

Tadeo Kondrak (3):
      xdg-foreign: Make imported object inert when exported is destroyed
      xdg-foreign: rename finish_* functions to destroy_*
      text_input_v3: correct typo in enum field

Tudor Brindus (21):
      xwayland: use wlr_log_errno instead of %m
      xwayland/selection: prevent fd leak on unsupported MIME type
      xwayland/selection: rename Wayland-facing data and helpers
      xwayland/selection: make `xwm_data_source_write` return 0 on failure
      xwayland/selection: explicitly bail if first write to Wayland fd fails
      xwayland/selection: simplify incremental transfer control flow
      xwayland/selection: extract out property requests
      xwayland/selection: refactor remaining incremental transfer code
      xwayland/selection: end incr transfer on empty prop, not next selection
      xwayland/selection: don't request another selection while one is pending
      xwayland/selection: don't leak Wayland fd if ConvertSelection fails
      xwayland/selection: destroy all selections on Xwayland restart
      xwayland/selection: make xwm_selection_finish take a wlr_xwm_selection *
      xwayland/selection: introduce `xwm_selection_transfer_init`
      xwayland/selection: make xwm_selection_init take a wlr_xwm_selection *
      xwayland/selection: use one X11 window per incoming transfer
      xwayland/selection: use one target window per selection
      xwayland/selection: allow simultaneous Wayland-to-X11 transfers
      xwayland/selection: ignore requests for anything but the newest data
      xwayland/selection: log when proxy window loses ownership
      xwayland/selection: flush connection after changing xwm selection owner

fwsmit (1):
      examples/foreign-toplevel: Add documenation and output selection

zccrs (2):
      Use absolute paths in include in header files
      render/egl: check "EGL_KHR_platform_gbm" for EGL gbm platform
2021-04-23 12:42:43 +02:00
.builds ci: update xwayland dep on alpine 2021-03-22 11:54:57 +01:00
backend backend/drm: stop testing for buffer in drm_connector_commit_buffer 2021-04-06 20:35:15 +02:00
docs docs: Minor libseat corrections 2021-03-15 23:44:09 +01:00
examples examples/dmabuf-capture: stop using av_init_packet 2021-03-22 17:15:06 +01:00
include wlroots 0.13.0 2021-04-23 12:42:43 +02:00
protocol layer-shell: allow new values for keyboard-interactivity 2021-01-12 20:13:52 +01:00
render wlroots 0.13.0 2021-04-23 12:42:43 +02:00
tinywl tinywl: fix wlr_backend_autocreate call 2021-01-07 14:39:04 +01:00
types wlroots 0.13.0 2021-04-23 12:42:43 +02:00
util build: simplify HAS_LIBUUID definition 2021-04-06 20:34:47 +02:00
xcursor xcursor: use strncat instead of strncpy 2021-03-08 12:03:48 +01:00
xwayland xwayland: use ICCCM state defines from xcb-icccm 2021-03-29 12:24:26 +02:00
.editorconfig Set .editorconfig ident_size 2019-01-25 11:37:46 +01:00
.gitignore Remove rootston 2019-08-09 08:34:59 +09:00
CONTRIBUTING.md contributing: add note about events that destroy objects 2020-06-08 10:12:38 -06:00
LICENSE Update LICENSE year (MIT license) 2018-04-12 21:29:59 -04:00
meson.build wlroots 0.13.0 2021-04-23 12:42:43 +02:00
meson_options.txt xwayland: require xcb-icccm 2021-03-29 12:24:26 +02:00
README.md xwayland: require xcb-icccm 2021-03-29 12:24:26 +02:00
wlroots.syms util: add wlr_output_destroy_safe 2020-02-17 20:52:37 +01:00

wlroots

Pluggable, composable, unopinionated modules for building a Wayland compositor; or about 50,000 lines of code you were going to write anyway.

  • wlroots provides backends that abstract the underlying display and input hardware, including KMS/DRM, libinput, Wayland, X11, and headless backends, plus any custom backends you choose to write, which can all be created or destroyed at runtime and used in concert with each other.
  • wlroots provides unopinionated, mostly standalone implementations of many Wayland interfaces, both from wayland.xml and various protocol extensions. We also promote the standardization of portable extensions across many compositors.
  • wlroots provides several powerful, standalone, and optional tools that implement components common to many compositors, such as the arrangement of outputs in physical space.
  • wlroots provides an Xwayland abstraction that allows you to have excellent Xwayland support without worrying about writing your own X11 window manager on top of writing your compositor.
  • wlroots provides a renderer abstraction that simple compositors can use to avoid writing GL code directly, but which steps out of the way when your needs demand custom rendering code.

wlroots implements a huge variety of Wayland compositor features and implements them right, so you can focus on the features that make your compositor unique. By using wlroots, you get high performance, excellent hardware compatibility, broad support for many wayland interfaces, and comfortable development tools - or any subset of these features you like, because all of them work independently of one another and freely compose with anything you want to implement yourself.

Check out our wiki to get started with wlroots.

wlroots is developed under the direction of the sway project. A variety of wrapper libraries are available for using it with your favorite programming language.

Building

Install dependencies:

  • meson
  • wayland
  • wayland-protocols
  • EGL
  • GLESv2
  • libdrm
  • GBM
  • libinput
  • xkbcommon
  • udev
  • pixman
  • libseat (optional, for seatd support)
  • systemd (optional, for logind support)
  • elogind (optional, for logind support on systems without systemd)
  • libuuid (optional, for xdg-foreign support)

If you choose to enable X11 support:

  • xwayland (build-time only, optional at runtime)
  • xcb
  • xcb-composite
  • xcb-xfixes
  • xcb-xinput
  • xcb-icccm
  • xcb-image
  • xcb-render
  • xcb-errors (optional, for improved error reporting)

Run these commands:

meson build/
ninja -C build/

Install like so:

sudo ninja -C build/ install

Contributing

See CONTRIBUTING.md.