Wayland viewporter support

Merged Robert Mader requested to merge rmader/mutter:viewporter into master

This implements the viewporter protocol which offers a cropping and scaling capabilities to wayland clients, see spec.

There are several use cases for this, for example video players and games (see the gstreamer gtk-wayland demo), both as a convenience function and as potential performance optimization when paired with hardware overlays or when used to scale up textures to save bandwidth etc.

As a by-product it also laid ground for buffer-transforms (!322 (merged)), because they both require disconnecting the direct relationship between the buffer and the surface size.

In can be tested with:

  • westons weston-scaler [-b|-d|-s|-n]
  • weston-simple-damage --use-viewporter --transform=[normal|90|180|270|flipped|flipped-90|...] [--use-damage-buffer] --scale=[1|2|3|...]
  • the gstreamer gtk-wayland demo

Requires / based on: !322 (merged)

Implements: #132 (closed)

previously part of !121 (closed), based on old patches by Jasper St. Pierre and the weston implementation

Edited by Robert Mader

Merge request reports