Bylo představeno vydání balíčku wayland-protocols 1.49, které obsahuje sadu protokolů a rozšíření doplňujících základní protokol Wayland a poskytujících funkce nezbytné pro vytváření kompozitních serverů a uživatelských prostředí.
V nové verzi:
- Byl přidán experimentální protokol xx-fractional-scale, který umožňuje škálování systému logických souřadnic, jehož hodnoty jsou určovány celými čísly, za účelem zvýšení přesnosti polohování a zvýšení rozlišení logických souřadnic na jednotlivé pixely. Tato funkce řeší problém s omezeným rozlišením systému logických souřadnic, které není dostatečné pro polohování na úrovni jednotlivých pixelů, potřebné pro plnohodnotnou realizaci zlomkového škálování.
- Do protokolu «linux-dmabuf» byla přidána podpora práce na systémech s více GPU. Na takových systémech může klient dohodnout s kompozitními serverem který GPU by měl být použit.
- Do protokolu color-management-v1 byla přidána podpora metadat obrázků ve formátu BT.2100 pro použití v kompozitních serveru specifických zpracovatelích, které umožňují správně zobrazit HDR obsah vytvořený pro Windows.
Všechny protokoly procházejí fázemi vývoje, testování a stabilizace. Po dokončení fáze vývoje (kategorie «unstable») je protokol umístěn do větve «staging» a oficiálně zařazen do sady wayland-protocols, a po dokončení testování je přesunut do kategorie stabilních. Protokoly z kategorie «staging» lze již používat v kompozitních serverech a klientech, kde je vyžadována související funkčnost. Na rozdíl od kategorie «unstable» je v «staging» zakázáno provádět změny porušující kompatibilitu, ale v případě zjištění problémů a nedostatků během testování není vyloučeno nahrazení novou významnou verzí protokolu nebo jiným Wayland rozšířením.
Aby urychlit doručování protokolů k vývojářům a podpořit včasnou implementaci protokolů ve stávajících projektech, byla od předminulého vydání navíc přidána fáze "experimental", ve které je povoleno provádět změny narušující kompatibilitu a přidávat "syrové" protokoly, které lze postupně dostat na požadovanou úroveň. Pokud je pro zařazení protokolu do fáze "staging" nutné vytvořit podpůrný tým a získat určité množství potvrzení (ACK) od účastníků recenzování, pak pro zařazení do "experimental" stačí absence námitek (NACK) během dvoutýdenního recenzního období.
V současnosti sestava wayland-protocols obsahuje následující stabilní protokoly, které zajišťují zpětnou kompatibilitu:
- viewporter» — umožňuje klientovi provádět akce pro měřítkování a ořezávání okrajů povrchu na straně serveru.
- „presentation-time“ — zajišťuje zobrazení videa.
- "xdg-shell" — rozhraní pro vytváření a interakci s plochami jako s okny, umožňující je přesouvat po obrazovce, minimalizovat, maximalizovat, měnit jejich rozměry atd.
- "linux-dmabuf" — poskytuje možnosti pro vytváření wl_bufferů na základě DMA-BUF.
- "tablet" — organizace vstupu z grafických tabletů.
Protokoly testované ve větvi „staging“:
- drm-lease — poskytuje prostředky potřebné k vytvoření stereofonního obrazu s různými vyrovnávacími paměťmi pro levé a pravé oko při výstupu na virtuální brýle.
- „ext-session-lock“ — určuje prostředky pro blokaci sezení, například během činnosti spořiče obrazovky nebo zobrazení dialogu pro autentifikaci.
- „single-pixel-buffer“ — umožňuje vytvářet jednopixelové vyrovnávací paměti obsahující čtyři 32bitové hodnoty RGBA.
- «xdg-activation» — umožňuje předat fokus mezi různými povrchy prvního stupně (například pomocí
xdg-activation může jedna aplikace přepnout fokus na jinou). - content-type — umožňuje klientům předat kompozitnímu serveru informace o zobrazovaném obsahu, které mohou být využity k optimalizaci chování s ohledem na obsah, například k nastavení specifických DRM vlastností, jako je „content type. Byla deklarována podpora následujících typů obsahu: none (žádné informace o typu dat), photo (výstup digitálních fotografií, vyžadující minimální zpracování), video (video nebo animace, vyžadující přesnější synchronizaci, aby se vyloučila trhání) a game (spouštění her, vyžadující výstup s minimální latencí).
- ext-idle-notify — dává možnost kompozitním serverům předávat klientům oznámení o neaktivitě uživatele, což může být využito k aktivaci dalších režimů úspor energie po určité době neaktivity.
- tearing-control — umožňuje vypnout vertikální synchronizaci (VSync) s rámcovým hlemýžděm ve fullscreen aplikacích, používanou k ochraně proti trhání při vykreslování. V multimediálních aplikacích je výskyt artefaktů z trhání nežádoucím efektem, ale v herních programech lze s artefakty smířit, pokud boj proti nim přináší dodatečné zpoždění.
- ext-foreign-toplevel-list — získání informací o površích umístěných na nejvyšší úrovni (toplevel), které umožňují organizovat uchycení oken nad jiným obsahem, například pro připojení vlastních panelů a přepínačů oken.
- security-context — umožňuje identifikaci klientů využívajících sandboxovou izolaci. Klient může zaregistrovat nové připojení k kompozitnímu serveru založenému na Waylandu a připojit k němu bezpečnostní kontext, po kterém kompoziční správce podle zadaného bezpečnostního kontextu omezí možnosti dostupné pro ustanovené spojení.
- cursor-shape — alternativní způsob nastavení vzhledu kurzoru, založený na posílání série obrazů kurzoru místo vazby na povrch (wl_surface).
- «ext-transient-seat» — určen pro vytváření dočasných nezávislých sezení (seat), navržených pro použití s virtuálními vstupními zařízeními. Například při realizaci možnosti připojení k vzdálené ploše protokol umožňuje vytvoření samostatného sezení s virtuální klávesnicí a myší pro každého uživatele.
- «xdg-toplevel-drag» — rozšiřuje mechanismus „drag & drop“ o možnost připojení horních úrovňových oken k operaci přesunutí, což může být využito například pro organizaci přetahování myší panelů nástrojů nebo záložek prohlížeče. Nový protokol umožňuje vytváření odpojovatelných částí okna, které při přetahování z tohoto okna se stávají novými okny a mohou se pohybovat nad existujícím oknem před opětovným připojením.
- «xdg-dialog» — umožňuje přiřazovat povrchům horní úrovně specifické vlastnosti pro dialogová okna, například lze vytvářet modální dialogy, které blokují interakci uživatele s ostatními částmi rozhraní.
- «linux-drm-syncobj» — poskytuje nástroje pro explicitní synchronizaci bufferů pomocí synchronizačních objektů DRM (Direct Rendering Manager). Předpokládá se, že v kontextu synchronizace při vykreslování do buffera navržený protokol zlepší práci s ovladači založenými na grafických API Vulkan a OpenGL (implementace je založena na zpracovatelích v ovladačích). Nový protokol umožňuje ověřit, že operace vykreslení do buffera je dokončena, než kompoziční manažer tento buffer zobrazuje.
- alpha-modifier, který umožňuje klientům měnit úroveň průhlednosti povrchu a delegovat operace zajištění průhlednosti na stranu kompozičního serveru, který je může předat KMS.
- xdg-toplevel-icon — vazba ikony na vrchní okno.
- ext-image-capture-source a ext-image-copy-capture — organizace záznamu obsahu vykreslovaného na obrazovce.
- xdg-system-bell — umožňuje vyvolat systémový signál, který může být například použit jako varování v emulátoru terminálů. Forma vyvolání signálu je na uvážení kompozičního manažera, může to být nejen zvuk, ale i vizuální reakce.
- fifo — implementuje FIFO mechanismus (first in, first out) zpracování fronty pro aktualizaci obsahu zobrazované plochy. Z praktického hlediska protokol umožňuje očekávání dokončení vertikální synchronizace (vblank) místo používání callback volání při každé přípravě k zobrazení nového snímku, což řeší problém s vysokým zatížením GPU při používání VSync.
- commit-timing — umožňuje připojit časové omezení k obsahu povrchu (kompozitní server by měl zobrazit změnu obsahu co nejdříve podle uvedeného času, ale ne dříve).
- ext-data-control — umožňuje privilegovaným klientům řídit zpracování dat, například pro implementaci správců schránky.
- ext-workspace — implementuje koncept virtuálních pracovních ploch a nabízí události s informacemi o stavu pracovních ploch a také možnosti pro aktivaci a deaktivaci pracovních ploch. Protokol může být použit k vytváření panelů a ukazatelů, které zobrazují seznam dostupných virtuálních pracovních ploch a umožňují mezi nimi přepínat.
- color-management — poskytuje možnosti pro správu barev a podporu rozšířeného dynamického rozsahu jasu (HDR, High Dynamic Range). Díky přidanému rozšíření mohou klientské aplikace získávat informace o vlastnostech výstupních zařízení souvisejících s barevným podáním a předávat kompozitnímu serveru data o vlastnostech barevného podání vlastního obsahu. Tyto informace mohou být v kompozitním serveru použity pro automatickou správu barev při zobrazování obsahu na různých výstupních zařízeních, například pro převod obsahu na formát vhodný pro zobrazení na HDR monitorech. Pro popis barevných prostorů se používají ICC profily.
- xdg-toplevel-tag — umožňuje Wayland klientům přiřazovat tagy k povrchům nejvyšší úrovně, které kompozitní server může použít k identifikaci oken po restartu aplikace (například aplikace může přiřadit tagy "hlavní okno" a "nastavení" hlavnímu oknu a oknu s nastavením). Taková identifikace je užitečná pro obnovení polohy, velikosti a vlastností oken po restartu, a také pro určení speciálních pravidel pro jednotlivé typy oken.
- color-representation — určení barevného vyjádření Wayland povrchu. Wayland klienti mohou předávat metadata nezbytná k určení průhlednosti, barevného modelu, subdiskretizace a rozsahu kvantizace, které jsou aplikovány při převodu bufferu s daty odpovídajícími barevnému modelu YCbCr do vyjádření RGB.
- ext-background-effect — aplikace efektů na průhledné části plochy Wayland, jako je rozmazání pozadí.
- pointer-warp — umožňuje aplikaci okamžitě přesunout ukazatel na zadanou pozici.
- xdg-session-management — možnosti pro obnovení stavu a polohy oken přerušené relace, například po havarijním ukončení kompozitního serveru nebo aplikace.
Protokoly vyvíjené ve větvi „experimental“:
- xx-session-management — obnovení stavu oken po přerušených sezeních (například po havárii kompozitního správce).
- xx-input-method — umožňuje aplikacím implementovat metody zadávání textu pro kompozitní servery a tvořit zadaný text, což může být použito například k vytváření virtuálních klávesnic a IME vrstev (Input Method Editor) pro zpracování vstupu.
- xx-text-input — umožňuje kompozitním serverům implementovat vstupní metody a zasílat text do aplikací. Protokol standardizuje interakci mezi kompozitním serverem a aplikacemi a umožňuje řídit možnosti, jako je přenos vstupovaného textu, zpracování událostí změny fokusu vstupu a zohledňování specifik polí pro vstup (jazyk, označení textu, typ obsahu).
- xx-cutouts — pro získání informací o výřezech na obrazovce (například oblasti pod přední kamerou na obrazovce smartphonu).
- xx-zones — pro vytváření a přidávání oken vyšší úrovně do „zón“ — prostředí se svým vlastním prostorovým souřadnicovým systémem. Protokol umožňuje organizovat logické uspořádání oken, ve kterém je každé okno umístěno relativně k jinému oknu.
- xx-keyboard-filter — pro zachytávání vybraných událostí klávesnice klientem, úpravy událostí vstupu nebo blokování přenosu určitých událostí do Wayland povrchu, na kterém je aktivní fokus vstupu.
Protokoly vyvíjené ve větvi „unstable“:
- „fullscreen-shell“ — správa provozu v režimu celé obrazovky.
- „input-method“ — zpracování metod vkládání.
- „idle-inhibit“ — blokace spuštění spořiče obrazovky.
- „input-timestamps“ — časové značky pro události vstupu.
- „keyboard-shortcuts-inhibit“ — správa přiřazení klávesových zkratek a horkých kláves.
- „linux-explicit-synchronization“ — specifický pro Linux mechanismus synchronizace vyrovnávacích pamětí vázaný na plochu.
- „pointer-gestures“ — správa příkazů z dotykových obrazovek.
- „pointer constraints“ — omezení ukazatelů (blokace).
- „primary-selection“ — analogicky k X11 zajišťuje funkčnost primární schránky (primary selection), jejíž informace se obvykle vkládají prostředními tlačítky myši.
- „relative pointer events“ — relativní události ukazatelů.
- „text-input“ — organizace textového vkládání.
- „xdg-foreign“ — rozhraní pro interakci s plochami „sousedního“ klienta.
- „xdg-decoration“ — vykreslování dekorací oken na straně serveru.
- „xdg-output“ — další informace o video výstupu (používá se pro zlomkové škálování).
- „xwayland-keyboard-grab“ — zachycení vstupu v aplikacích XWayland.
Zdroj: opennet.ru
