Skip to content

Draft: output: introduce wlr_output_group

EBADBEEF requested to merge EBADBEEF/wlroots:wlr_output_group into master

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) or they can be a mirror of the output group.

Inspired and copied from !3067 and !3344

I have been testing this for a few days on my tiled display (zisworks x39) and it is really nice to have my full screen available correctly!

This branch will automatically group together displays that have the TILE drm property (which comes from a DisplayID tiled display block in the EDID).

Some notes:

  • TODOs in the code where I have questions or thoughts.
  • Not tested with multiple GPUs at all.
  • Tiles are synchronized so no tearing (group waits for all children to present before re-emitting the present event).
  • Tested with hotplugging connections and cleanup on shutdown
  • Mirroring was thrown in as an afterthought, but it does sorta work (without cursor). Maybe dst_box is a bad idea.
  • I am also not super confident on the output state management (impl->commit vs. wlr_output_commit) but by trial and error (and plenty of digging through the code) it seems to work.

Merge request reports