Hatékonyabb kijelzőkezelés a Plasma 6.5-ben – több KMS-offload és overlay plane támogatás

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

A Plasma 6.5 kiadásával a KWin kompozitor és a KMS (Kernel Mode Setting) alrendszer kapcsolatában komoly fejlesztések történtek, amelyek célja a hatékonyabb energiafelhasználás és a gyorsabb grafikus megjelenítés. A változások középpontjában a több overlay plane (fedő sík) használata áll, ami lehetővé teszi, hogy a GPU kevesebb adatot dolgozzon fel, ezáltal csökkenjen a fogyasztás, miközben a rendszer továbbra is gördülékenyen működik.

Három kulcselem a KMS-ben

A Linux grafikus alrendszerében a DRM/KMS atomic API három fontos objektummal dolgozik:

  • Connector – a kijelzőhöz való fizikai kapcsolatot képviseli.
  • CRTC – a megjelenítéshez szükséges adatfolyamot előállító hardverelem.
  • Plane – a képernyőn megjelenő egyes képrétegeket kezeli (három típusa van: primary, cursor és overlay).

Korábban a KWin többnyire csak az első kettőt használta: a primary plane-re renderelte a teljes képet, míg a cursor plane-re az egérmutatót. Ha ez utóbbi nem volt elérhető, a mutató is a fő rétegre került – ez volt a „szoftveres kurzor”.

Miért jó több plane-t használni?

Az overlay rétegek lehetővé teszik, hogy a GPU ne renderelje újra a teljes képernyőt minden apró változásnál. Például:

  • Kurzor mozgatásakor elég a hardveres sík pozícióját módosítani – azonnali reakció, kisebb energiaigény.
  • Videolejátszáskor a dekódolt képet közvetlenül egy overlay plane-re helyezheti a rendszer – a GPU többi része akár teljesen le is állhat.

Ez különösen fontos hordozható eszközökön (notebook, tablet, telefon), ahol minden watt számít.

A backend átalakítása

A korábbi DRM-backend egyszerűsített modellje nem kezelte jól a több síkot. Ezért a fejlesztők átalakították a rétegkezelést:

  • Minden elérhető plane-hez létrejön egy „layer” objektum.
  • A rendszer listában kezeli ezeket, és egységesen kezeli a tulajdonságaikat (méret, formátum, KMS-attribútumok).
  • Egyelőre egykijelzős rendszerek esetében aktiválja automatikusan az összes overlay plane-t – a többmonitoros támogatás később érkezik.

A kompozitor és a jelenet kezelése

A kurzor renderelését általánosították, így mostantól a mutató is ugyanúgy viselkedik, mint bármely más elem a jelenetben. Ez lehetővé tette, hogy az overlay-kezelés egységesen működjön minden elemre, legyen szó ablakról, felületről vagy kurzorról.

Overlay és underlay plane-ek használata

Az overlay plane-ekre olyan elemek kerülhetnek, amelyek:

  • dmabuf hardveres gyorsított pufferrel rendelkeznek,
  • nem takartak el más elemek által,
  • nem módosulnak épp KWin-effektus által.

A KWin ezeket a feltételeket ellenőrzi, és ha a konfiguráció működőképesnek bizonyul az „atomic test” során, a hardver közvetlenül jeleníti meg az elemeket, GPU-renderelés nélkül.

Az underlay plane ezzel ellentétes: az elemek a fő kép alatt helyezkednek el, és a KWin áttetsző „lyukat” hagy fölöttük. Ez ideális például videólejátszásnál feliratokkal, ahol a háttér (videó) gyakran frissül, a felirat viszont ritkábban.

Színkezelés a DRM color pipeline segítségével

A KWin most már képes kihasználni a DRM színpipeline funkciókat is, vagyis a színtér-átalakításokat (HDR → SDR konverzió, LUT, mátrixműveletek) a GPU-helyett közvetlenül a kijelző-hardver végezheti. Ez lehetővé teszi, hogy például HDR videók is megjelenjenek SDR kijelzőn, a GPU bevonása nélkül.

Energiafogyasztás – a mérések szerint

A fejlesztő tesztjei szerint az új overlay-rendszer komoly energiamegtakarítást eredményezett:

Videó típusa Overlay nélkül Overlay-jel Akkumulátor-idő overlay nélkül Overlay-jel
4K SDR (Firefox) 13,3 W 11,5 W 4,6 óra 5,3 óra
1080p SDR (Firefox) 11 W 9,6 W 5,5 óra 6,4 óra
4K HDR (mpv) 13,4 W 12,4 W 4,6 óra 4,9 óra

Egy azonos hardver (Framework 13 laptop, 50%-os fényerőn) üresjáratban kb. 4,5 W-ot fogyaszt, ami kb. 13,5 órás üzemidőt jelentene. A fejlesztés tehát több mint 10–15% energiamegtakarítást hozhat.

Mikor lesz mindez elérhető?

A funkció a Plasma 6.5-ben már benne van, de alapértelmezetten még kikapcsolt, mivel egyes AMD és NVIDIA illesztőprogramoknál instabilitás (lassú atomic teszt, kijelző-fagyás) fordult elő.

Aki szeretné kipróbálni, az a következő környezeti változóval bekapcsolhatja:

export KWIN_USE_OVERLAYS=1

A fejlesztők kifejezetten kérik a tesztelők visszajelzéseit, hogy a jövőben – várhatóan a Plasma 6.6 verzióban – már alapértelmezettként is engedélyezhessék az overlay-támogatást a kompatibilis hardvereken.