Skip to content

Drm refactor

Xaver Hugl requested to merge zamundaaa/kwin:drm-output-refactor into master

Umm, so this got started as only a refactor of DrmOutput... Things kinda got out of hand. Do tell me if I should split this into multiple MRs (or commits...).

The three biggest changes are

  • instead of doing atomic commits in DrmOutput we now have a DrmPipeline class that manages the atomic (and legacy!) stuff internally and enables us to properly do test commits and batch changes with present
  • DrmObjects now really have all the properties in them and are better suited for usage outside of DrmOutput (for DRM leasing we need the Edid for example).
  • format modifier support: formats are queried from drm planes and if available, modifiers are used

For supporting tiled monitors and screen mirroring (and also Eyefinity-like operation) we probably want DrmOutput to be able to use multiple DrmPipeline objects at once but that really deserves its own MR, as does actual usage of overlay planes.

Things left to do / to fix:

  • When turning a screen on again after turning it off plasmashell crashes -> dpms has to be set to off before disabling an output. Maybe do that in KWaylandServer instead?
  • make use of the queried formats+modifiers
  • fix gamma ramp setting with AMS, it distorts all colors
  • KWin sometimes crashes while allocating memory for apparently random things -> problem with my installation
  • either fix or get rid of the now broken autotest -> removed it, it's IMO not really useful in its current state
  • hardware cursors don't work in AMS. All atomic commits with the cursor plane enabled fail -> disabled for now
  • test with modifiers (that are apparently not supported on my PC)
Edited by Xaver Hugl

Merge request reports