Some DRM drivers have been exposing overlay planes for quite some time. Overlay planes can improve battery consumption by scanning out directly client buffers, skipping composition. While compositors usually take advantage of the cursor plane (and sometimes are able to use the primary plane to scan out directly a client's buffer), overlay planes are under-used.
The exception is Weston, which tries to use overlay planes (more work is underway, see https://gitlab.freedesktop.org/wayland/weston/issues/275). Other compositors ignore overlay planes.
The main challenge is to figure out how to assign buffers coming from clients to hardware planes. The only API exposed by KMS is atomic test commits, so user-space needs to try different combinations.
It would be nice to have a common library shared between compositors to de-duplicate the work. The library I have in mind offers an API similar to Android's hwcomposer: you give it a scenegraph, it figures out how to allocate planes.
I've started an experiment to figure out whether such a library would be viable: https://github.com/emersion/libliftoff
Getting feedback from compositor writers and DRM experts would be useful to push the project forward. Come and help making planes useful for compositors!
|Code of Conduct
|GSoC, EVoC or Outreachy