Skip to content

Make each stage view correspond to a single CRTC

Jonas Ådahl requested to merge jadahl/mutter:wip/per-crtc-view into master

This splits up the stage renderer in one view per CRTC, instead of one view per logical monitor, which was the case before. It also moves the damage tracking to the views away from the stage window.

It's yet another step towards having one frame clock per CRTC.

The only thing it immediately fixes is fixing monitor mirroring and tiled monitor support when using EGLStreams.

This will ultimately have various benefits:

  • It'll allow us to use KMS modifiers that would only be compatible with a single CRTC
  • It'll allow us to render content knowing exactly what gamma ramps will be used when displaying
  • It'll make it possible to schedule each CRTC according to its own clock
  • It simplifies the renderer by not having to deal with each view targeting multiple CRTCs on multiple GPUs

There are some known side effects with this approach:

  • For mirrored monitors, we'll now render the stage view once for each monitor
  • For mirrored monitors, there will be one surface for each instead of them sharing a single one
  • For tiled monitors, there will be as many surfaces as there are tiles, and each tile will be rendered separately

Merge request reports