wlroots/types
David Turner c87ab6465d Support direct scanout with src crop and dst boxes
Enable scene-tree direct scanout of a single buffer with various options
for scaling and source crop. This is intended to support direct scanout
for fullscreen video with/without scaling, letterboxing/pillarboxing
(e.g. 4:3 content on a 16:9 display), and source crop (e.g. when
1920x1088 planes are used for 1920x1080 video).

This works by explicitly specifying the source crop and destination box
for the primary buffer in the output state.  DRM atomic and libliftoff
backends will turn this into a crop and scale of the plane (assuming the
hardware supports that).  For the Wayland/X11/DRM-legacy backends I just
reject this so scanout will be disabled.

The previous behaviour is preserved if buffer_src_box and buffer_dst_box
are unset: the buffer is displayed at native size at the top-left of the
output with no crop.

The change to `struct wlr_output_state` makes this a binary breaking
change (but this works transparently for scene-tree compositors like
labwc after a recompile).
2024-10-22 18:28:09 +01:00
..
buffer Avoid using wayland-{client,server}.h 2024-04-17 13:37:12 +00:00
data_device seat: add serials to touch up events 2024-04-18 14:34:51 +00:00
output Support direct scanout with src crop and dst boxes 2024-10-22 18:28:09 +01:00
scene Support direct scanout with src crop and dst boxes 2024-10-22 18:28:09 +01:00
seat seat/pointer: reset pressed buttons on "grab-compatible" focus change 2024-08-14 22:43:44 +03:00
tablet_v2 wlr_surface: fix argument order consistency 2024-07-13 19:56:58 +00:00
xdg_shell xdg-shell: add wlr_xdg_toplevel_configure() 2024-08-20 09:15:39 +00:00
meson.build linux-drm-syncobj-v1: new protocol implementation 2024-06-12 18:40:25 +02:00
wlr_alpha_modifier_v1.c alpha-modifier-v1: add a missing NULL check in wlr_alpha_modifier_v1_get_surface_state() 2024-05-01 03:07:16 +03:00
wlr_compositor.c compositor: add surface role map hook 2024-08-14 18:52:13 +00:00
wlr_content_type_v1.c content-type-v1: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
wlr_cursor_shape_v1.c cursor-shape-v1: expose tablet tool in event 2024-03-05 11:20:05 +01:00
wlr_cursor.c cursor: add support for linux-drm-syncobj-v1 2024-08-06 17:37:06 +00:00
wlr_damage_ring.c damage_ring: Remove wlr_damage_ring_set_bounds 2024-10-09 06:31:46 +00:00
wlr_data_control_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_drm_lease_v1.c drm-lease-v1: Free the wlr_drm_lease_v1 on error 2024-02-22 00:41:06 +01:00
wlr_drm.c render: drop wlr_renderer_get_dmabuf_texture_formats() 2024-04-21 11:27:29 +00:00
wlr_export_dmabuf_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_ext_foreign_toplevel_list_v1.c ext-foreign-toplevel-list: add _from_resource() 2024-10-01 18:59:18 +03:00
wlr_foreign_toplevel_management_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_fractional_scale_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_fullscreen_shell_v1.c treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practical 2023-10-03 01:51:07 -04:00
wlr_gamma_control_v1.c wlr_gamma_control: Store gamma size when creating control 2024-04-01 23:00:48 +02:00
wlr_idle_inhibit_v1.c treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practical 2023-10-03 01:51:07 -04:00
wlr_idle_notify_v1.c idle-notify: make wl_global public 2024-03-18 08:12:53 +00:00
wlr_input_device.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_input_method_v2.c input-method-v2: set no keymap format if no keymap is set 2024-09-11 15:09:56 +05:30
wlr_keyboard_group.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_keyboard_shortcuts_inhibit_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_keyboard.c keyboard: add utilities for pointer keys 2024-10-07 18:41:07 +00:00
wlr_layer_shell_v1.c layer-shell: introduce wlr_layer_surface_v1_get_exclusive_edge() 2024-08-18 01:02:08 +00:00
wlr_linux_dmabuf_v1.c wlr_linux_dmabuf_v1: log plane index in error messages for dma-buf 2024-10-15 18:05:16 +00:00
wlr_linux_drm_syncobj_v1.c linux-drm-syncobj-v1: Skip release if there is no timeline 2024-08-28 18:44:46 +02:00
wlr_matrix.c matrix: remove wlr_matrix_projection() 2022-06-08 19:27:36 +00:00
wlr_output_layer.c output-layer: add feedback event 2023-02-20 18:38:57 +01:00
wlr_output_layout.c output-layout: fix missing global for outputs with a custom mode 2023-12-21 11:28:58 +01:00
wlr_output_management_v1.c output-management-v1: add wlr_output_configuration_v1_build_state() 2024-03-14 22:03:10 +00:00
wlr_output_power_management_v1.c output-power-management: send zwlr_output_power_v1.failed on output destroy 2024-08-01 15:24:20 +03:00
wlr_output_swapchain_manager.c swapchain, damage_ring: Drop buffer age 2024-08-21 09:45:54 -04:00
wlr_pointer_constraints_v1.c pointer-constraints: don't init/finish current/pending states 2024-08-14 15:41:31 +00:00
wlr_pointer_gestures_v1.c wlr_pointer_gestures_v1: emit destroy signal in destroy function 2024-05-06 10:47:33 +03:00
wlr_pointer.c pointer: release pressed buttons on destroy 2024-09-24 19:53:54 +00:00
wlr_presentation_time.c types/wlr_output: removing the useless pointer 2024-08-21 14:04:24 +00:00
wlr_primary_selection_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_primary_selection.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_region.c compositor: deprecate wlr/types/wlr_region.h 2023-11-24 15:09:31 +03:00
wlr_relative_pointer_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_screencopy_v1.c wlr_screencopy_v1: send fine-grained damage events 2024-09-10 20:54:04 +08:00
wlr_security_context_v1.c security-context: constify lookup_client() 2024-03-18 08:18:51 +00:00
wlr_server_decoration.c Drop wl_client and user data assertions in bind handlers 2023-10-10 20:10:00 +03:00
wlr_session_lock_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_shm.c shm: add support for wl_shm version 2 2024-07-07 18:16:45 +02:00
wlr_single_pixel_buffer_v1.c single-pixel-buffer: make wl_global public 2024-03-18 08:12:53 +00:00
wlr_subcompositor.c subcompositor: drop unused subsurface state 2024-10-08 19:18:38 +03:00
wlr_switch.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_tablet_pad.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_tablet_tool.c input-device: unconfuse tablet naming 2024-02-29 16:09:07 +01:00
wlr_tearing_control_v1.c tearing_control_v1: Free the wlr_tearing_control_v1 on error 2024-09-09 16:16:56 +08:00
wlr_text_input_v3.c types/text-input-v3: assert on invalid _leave() and _enter() calls 2024-03-22 21:34:48 +00:00
wlr_touch.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_transient_seat_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_viewporter.c viewporter: fix "has buffer" check 2024-03-24 02:20:18 +00:00
wlr_virtual_keyboard_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_virtual_pointer_v1.c pointer: release pressed buttons on destroy 2024-09-24 19:53:54 +00:00
wlr_xcursor_manager.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_xdg_activation_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_xdg_decoration_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_xdg_foreign_registry.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_xdg_foreign_v1.c xdg-foreign: clean up 2024-08-14 15:56:36 +03:00
wlr_xdg_foreign_v2.c xdg-foreign: clean up 2024-08-14 15:56:36 +03:00
wlr_xdg_output_v1.c treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practical 2023-10-03 01:51:07 -04:00