output: introduce wlr_output_group

An output group is an output implementation that contains one or more
separate outputs as children. The children can be grouped together to
turn into one big output (for a tiled display).

Updates:
- use upstream src_box/dst_box
- provide wlr_backend_impl, set features.timeline=true if all children
  have it
- fix output destroy (happens on vt switch) by properly removing output
  from group registry
- add output->impl->test because otherwise trying direct scan out can
  fail and stop updating the screen (scene_entry_try_direct_scanout)
- use wlr_output_finish() on destroy
- remove output->impl->get_buffer_caps (but keep the logic that
  buffer_caps is the intersection of all children)
This commit is contained in:
EBADBEEF 2023-05-30 19:39:48 -07:00
parent a1ddc25b45
commit cbf921ccbb
3 changed files with 731 additions and 0 deletions

View file

@ -67,6 +67,7 @@ wlr_files += files(
'wlr_linux_drm_syncobj_v1.c',
'wlr_output_layer.c',
'wlr_output_layout.c',
'wlr_output_group.c',
'wlr_output_management_v1.c',
'wlr_output_power_management_v1.c',
'wlr_output_swapchain_manager.c',