[PATCH weston v5 00/36] Head-based output configuration API a.k.a clone mode infrastructure

Pekka Paalanen ppaalanen at gmail.com
Thu Dec 14 11:40:37 UTC 2017

From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>

Hi all,

this is v5 (to match the numbering of my public branches) of the libweston user
facing API and infrastructure for supporting shared-CRTC clone mode.

Previous submission with rationale:

Design document:

The goal:

Changes in v5 compared to v3 are minor:
- "libweston: properly orphan wl_output resources" is new.
- Removal of wl_output global, when a head is detached from an enabled output.
- Print "Detected a monitor change" only for enabled heads.

You can find this series in the branch:

I went through the same testing procedure as with v3, the previous submission.

However, the interesting bits are in the branch:

As new things compared to clonemode-user-API-2, that one contains:
- support for configuring clone mode in weston.ini
- main.c implementation to configure a clode using the new API
- desktop-shell enhancements to avoid redundant panel and background surfaces
  in clone mode
- hooking up custom data to weston_output via a new user-side destroy signal
- naming outputs freely
- DRM-backend support for shared-CRTC clone mode
- video mode list merging in the DRM-backend

The shared-CRTC clone mode has been tested to work on an i.MX6 device.
Unfortunately it seems that PC hardware that would support it is becoming
scarce AFAIU.

Most of the patches in clonemode-4 depend on the atomic modesetting series and
can therefore be submitted only after that one.


Pekka Paalanen (36):
  libweston: introduce weston_head
  libweston: move wl_output to weston_head
  libweston: use head in wl_output global
  libweston: make wl_output point to weston_head
  libweston: refactor weston_mode_switch_finish
  libweston: introduce weston_output::head_list
  libweston: properly orphan wl_output resources
  libweston: strdup head make, model, serial_number
  cms-colord: find a good head
  libweston: add name to weston_head
  libweston: add weston_head::connected
  libweston: add compositor list of heads
  libweston: add heads_changed hook
  libweston: new head-based output management API
  libweston: add weston_head destroy signal
  libweston: add weston_head_is_device_changed() API
  weston: move weston_output_enable() into callers
  weston: migrate headless to head-based output API
  weston: migrate x11 to head-based output API
  weston: migrate wayland to head-based output API
  weston: migrate fbdev to head-based output API
  weston: migrate RDP to head-based output API
  weston: migrate DRM to head-based output API
  libweston: change windowed_output_api output_create to create_head
  libweston: remove output_pending_signal
  libweston: stop auto-adding the implicit head
  libweston: assert make/model in weston_output_enable()
  libweston: assert current_mode in weston_output_enable()
  libweston: cancel idle_repaint on output destroy
  compositor-headless: migrate to head-based output API
  compositor-rdp: migrate to head-based output API
  compositor-fbdev: make re-enable less drastic
  compositor-fbdev: migrate to head-based output API
  compositor-x11: migrate to head-based output API
  compositor-wayland: strict surface create/destroy
  compositor-wayland: migrate to head-based output API

 compositor/cms-colord.c             |  38 +-
 compositor/main.c                   | 304 +++++++++---
 compositor/weston-screenshooter.c   |   2 +-
 desktop-shell/input-panel.c         |   4 +-
 desktop-shell/shell.c               |   4 +-
 fullscreen-shell/fullscreen-shell.c |   4 +-
 ivi-shell/input-panel-ivi.c         |   4 +-
 libweston-desktop/wl-shell.c        |   2 +-
 libweston-desktop/xdg-shell-v5.c    |   2 +-
 libweston-desktop/xdg-shell-v6.c    |   2 +-
 libweston/compositor-drm.c          |  15 +-
 libweston/compositor-fbdev.c        | 206 +++++---
 libweston/compositor-headless.c     |  75 ++-
 libweston/compositor-rdp.c          |  64 ++-
 libweston/compositor-wayland.c      | 254 +++++++---
 libweston/compositor-x11.c          |  71 ++-
 libweston/compositor.c              | 948 +++++++++++++++++++++++++++++++++---
 libweston/compositor.h              | 182 ++++++-
 libweston/windowed-output-api.h     |  23 +-
 tests/weston-test.c                 |   2 +-
 20 files changed, 1832 insertions(+), 374 deletions(-)


More information about the wayland-devel mailing list