Bolo vydané balenie wayland-protocols 1.39, ktoré obsahuje súbor protokolov a rozšírení, doplňujúcich základný protokol Wayland a poskytujúcich funkcionalitu potrebnú na vytváranie kompozitných serverov a používateľských prostredí.
Všetky protokoly postupne prechádzajú fázami vývoja, testovania a stabilizácie. Po dokončení fázy vývoja (kategória „unstable“) je protokol umiestnený do vetvy „staging“ a oficiálne zaradený do súboru wayland-protocols, a po dokončení testovania je presunutý do kategórie stabilných. Protokoly z kategórie „staging“ je možné už využívať v kompozitných serveroch a klientoch, kde je potrebná funkčnosť s nimi spojená. Na rozdiel od kategórie „unstable“ je v „staging“ zakázané vykonávať zmeny, ktoré narušujú kompatibilitu, no v prípade zistenia problémov a nedostatkov počas testovania nie je vylúčená výmena za novú významnú verziu protokolu alebo iné Wayland-rozšírenie.
V novej verzii bola pridaná ďalšia fáza propagácie protokolov — „experimental“, zameraná na zníženie bariéry na zaradenie protokolov do súboru Wayland-Protocols, urýchlenie prenosu protokolov k vývojárom a stimuláciu skorého zavedenia v existujúcich projektoch. Nová fáza umožní zbaviť vývojárov protokolov dlhých diskusií a administratívy pred prijatím do súboru Wayland-Protocols.
Ak sa na zaradenie protokolu do fázy „staging“ vyžaduje vytvorenie tímu podpory a získanie určitého počtu potvrdení (ACK) od účastníkov recenzovania, tak pre vstup do „experimental“ stačí absencia námietok (NACK) počas dvojtýždňového recenzného obdobia. V fáze „experimental“ je povolené robiť zmeny, ktoré narušujú kompatibilitu, a pridávať „surové“ protokoly, ktoré je možné postupne dovedieť do požadovanej úrovne.
Do kategórie „staging“ boli pridané protokoly:
- ext-data-control — umožňuje privilegovaným klientom spravovať spracovanie údajov, napríklad na implementáciu správcu schránky.
- ext-workspace — realizuje koncept virtuálnych pracovných plôch a ponúka udalosti s informáciami o stave pracovných plôch, ako aj možnosti na aktiváciu a deaktiváciu pracovných plôch. Protokol môže byť použitý na vytváranie panelov a indikátorov, ktoré zobrazujú zoznam dostupných virtuálnych pracovných plôch a umožňujú prechod medzi nimi.
V súčasnosti obsahuje wayland-protocols nasledujúce stabilné protokoly, ktoré zaisťujú spätnú kompatibilitu:
- „viewporter“ — umožňuje klientovi vykonávať akcie priblíženia a orezu okrajov povrchu na strane servera.
- „presentation-time“ — zabezpečuje zobrazenie videa.
- „xdg-shell“ — rozhranie na vytváranie a interakciu s povrchmi ako s oknami, čo umožňuje ich presúvanie na obrazovke, minimalizovanie, maximalizovanie, zmenu veľkosti atď.
- „linux-dmabuf“ — zabezpečuje zdieľanie viacerých grafických kariet pomocou technológie DMA-BUF (umožňuje vytvorenie wl_buffer na základe DMA-BUF).
- „tablet“ — organizácia vstupu z grafických tabletov.
Protokoly, ktoré sú testované vo vetve „staging“:
- drm-lease — poskytuje zdroje potrebné na vytvorenie stereoscénického obrazu s rôznymi buframi pre ľavé a pravé oko pri výstupe na virtuálne helmy.
- „ext-session-lock“ — definuje prostriedky na zamknutie relácie, napríklad počas aktivity ochrany obrazovky alebo zobrazenia autentifikačného dialógu.
- „single-pixel-buffer“ — umožňuje vytvárať jednopixelové buffery, ktoré obsahujú štyri 32-bitové hodnoty RGBA.
- „xdg-activation“ — umožňuje preniesť fokus medzi rôznymi povrchmi prvej úrovne (napríklad pomocou xdg-activation môže jedna aplikácia prepnúť fokus na inú).
- content-type — umožňuje klientom prenášať kompozitnému serveru informácie o zobrazovanom obsahu, ktoré môžu byť použité na optimalizáciu správania s ohľadom na obsah, napríklad nastavení špecifických vlastností DRM, ako je „content type“. Bola potvrdená podpora nasledujúcich typov obsahu: none (bez informácií o type dát), photo (výstup digitálnych fotografií, ktorý vyžaduje minimálne spracovanie), video (video alebo animácia, vyžaduje presnejšiu synchronizáciu, aby sa predišlo trhaniu) a game (spúšťanie hier, vyžaduje výstup s minimálnou latenciou).
- ext-idle-notify — umožňuje kompozitným serverom prenášať klientom upozornenia o nečinnosti používateľa, čo môže byť využité na aktiváciu dodatočných režimov úspory energie po určitom čase nečinnosti.
- tearing-control — umožňuje vypnúť vertikálne synchronizovanie (VSync) s impulzom na potlačenie snímkov v aplikáciách na celú obrazovku, čo sa používa na ochranu pred roztrhnutím (tearing) pri zobrazovaní. V multimediálnych aplikáciách sa objavovanie artefaktov z roztrhnutia považuje za nežiaduci efekt, avšak v herných programoch sa s artefaktmi dá vyrovnať, ak ich potlačenie vedie k dodatočným oneskoreniam.
- ext-foreign-toplevel-list — poskytuje informácie o povrchách umiestnených na najvyššej úrovni (toplevel), ktoré umožňujú organizovať pripnuté okná nad iným obsahom, napríklad na pripojenie vlastných panelov a prepínačov okien.
- security-context — umožňuje identifikovať zákazníkov používajúcich izoláciu sandbox. Zákazník môže zaregistrovať nové pripojenie k kompozitnému serveru založenému na Wayland a pripojiť k nemu bezpečnostný kontext, po ktorom kompozitný manažér obmedzí možnosti dostupné pre nastavené pripojenie podľa zadaného bezpečnostného kontextu.
- cursor-shape — alternatívny spôsob nastavenia vzhľadu kurzora, ktorý je založený na odosielaní série obrázkov kurzora namiesto viazania na povrch (wl_surface).
- «ext-transient-seat» — určený na vytváranie dočasných nezávislých relácií (seat), ktoré sú navrhnuté na použitie s virtuálnymi vstupnými zariadeniami. Napríklad, pri implementácii možnosti pripojenia k vzdialenej pracovnej ploche protokol umožňuje vytvoriť pre každého používateľa samostatnú reláciu s virtuálnou klávesnicou a myšou.
- «xdg-toplevel-drag» — rozširuje mechanizmus „drag & drop“ o možnosť pripojenia okien najvyššej úrovne k operácii presúvania, čo sa môže využiť napríklad na organizovanie presúvania panelov nástrojov alebo kariet prehliadača myšou. Nový protokol umožňuje vytvárať odpojiteľné časti okna, ktoré pri presúvaní z tohto okna sa stávajú novými oknami a môžu byť presúvané nad existujúcim oknom pred opätovným pripojením.
- «xdg-dialog» — umožňuje priradiť povrchom najvyššej úrovne vlastnosti špecifické pre dialógové okná, napríklad je možné vytvárať modálne dialógy, ktoré blokujú interakciu používateľa s ostatnou časťou rozhrania.
- „linux-drm-syncobj“ – poskytuje nástroje pre explicitnú synchronizáciu búferov pomocou DRM (Direct Rendering Manager) synchronizačných objektov. Predpokladá sa, že v kontexte synchronizácie pri vykresľovaní do búfera umožní navrhnutý protokol zlepšiť spoluprácu s ovládačmi na základe grafických API Vulkan a OpenGL (implementácia sa zakladá na spracovateľoch v ovládačoch). Nový protokol umožňuje overiť, že operácia vykreslenia do búfera bola dokončená skôr, ako zložený správca zobrazí tento búfer.
- alpha-modifier, ktorý umožňuje klientom meniť úroveň priehľadnosti povrchu a presúvať operácie zabezpečenia priehľadnosti na stranu zloženého servera, ktorý môže tieto operácie preposlať KMS.
- xdg-toplevel-icon – pripájanie ikony k oknu najvyššej úrovne.
- ext-image-capture-source a ext-image-copy-capture – organizácia zachytávania obsahu, ktorý sa zobrazuje na obrazovke.
- xdg-system-bell – umožňuje generovať systémový signál, ktorý môže byť použitý napríklad ako varovanie v emulátoroch terminálov. Forma výstupu signálu sa určuje podľa zloženého správcu, môže to byť nielen zvuk, ale aj vizuálny reakcia.
- fifo – implementuje FIFO mechanizmus (prvý prišiel – prvý odišiel) spracovania fronty aktualizácie obsahu zobrazeného povrchu. Z praktického hľadiska protokol umožňuje pri výstupe využívať čakanie na dokončenie vertikálneho zosnímania (vblank) namiesto vyžadovania callbackov pri každej pripravenosti na zobrazenie nového snímku, čo rieši problém s vysokou záťažou na GPU pri používaní VSync.
- commit-timing – umožňuje priradiť časové obmedzenie k obsahu povrchu (zložený server by mal zobraziť zmenu obsahu, ak je to možné, v rámci určeného času, ale nie skôr).
Protokoly, ktoré sa vyvíjajú v pobočke „unstable“:
- „fullscreen-shell“ – riadenie práce v režime celej obrazovky.
- „input-method“ – spracovanie metód vstupu.
- „idle-inhibit“ – blokovanie spustenia screensaveru (uzamknutie obrazovky).
- „input-timestamps“ – časové pečiatky pre udalosti vstupu.
- „keyboard-shortcuts-inhibit“ – správa pripojenie klávesových kombinácií a klávesových skratiek.
- „linux-explicit-synchronization“ – špecifický pre Linux mechanizmus synchronizácie búferov vzhľadom na povrch.
- „pointer-gestures“ – správa z dotykových obrazoviek.
- „pointer constraints“ – obmedzenia ukazovateľov (blokovanie).
- „primary-selection“ – analogicky s X11 zabezpečuje prácu primárneho schránkového systému (primary selection), vkladanie informácií z ktorého sa obvykle vykonáva stredným tlačidlom myši.
- „relative pointer events“ – relatívne udalosti ukazovateľov.
- „text-input“ – organizácia vkladania textu.
- „xdg-foreign“ – rozhranie interakcie so „susednými“ povrchmi klienta.
- „xdg-decoration“ – vykresľovanie dekorácií okien na strane servera.
- „xdg-output“ – dodatočné informácie o videovýstupe (používa sa na zlomkové priblíženie).
- „xwayland-keyboard-grab“ – uchopenie vstupu v aplikáciách XWayland.
Zdroj: opennet.ru
