Bol k dispozícii nový balík wayland-protocols 1.38, ktorý obsahuje súbor protokolov a rozšírení doplňujúcich základný protokol Wayland a poskytujúcich možnosti potrebné na vytváranie kompozitných serverov a používateľských prostredí.
Všetky protokoly prechádzajú postupne tromi fázami — vývojom, testovaním a stabilizáciou. Po skončení fázy vývoja (kategória „unstable“) je protokol zaradený do vetvy „staging“ a oficiálne zahrnutý do balíka wayland-protocols, a po ukončení testovania je presunutý do kategórie stabilných. Protokoly z kategórie „staging“ sa už dajú použiť v kompozičných serveroch a klientoch, kde je potrebná s nimi spojitá funkcionalita. Na rozdiel od kategórie „unstable“ je v „staging“ zakázané vykonávať zmeny, ktoré narušujú kompatibilitu, avšak v prípade zistenia problémov a nedostatkov počas testovania nie je vylúčené nahradiť ich novou, významnou verziou protokolu alebo iným rozšírením Wayland.
V novej verzii bola do kategórie „staging“ pridaná séria protokolov:
- 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).
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 sedení (seat), ktoré sú navrhnuté na použitie spoločne s virtuálnymi vstupnými zariadeniami. Napríklad pri realizácii možnosti pripojenia k diaľkovej pracovnej ploche protokol umožňuje vytvoriť pre každého používateľa samostatné sedenie 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.
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.
Navyše si môžeme všimnúť návrh zamestnanca spoločnosti Valve na pridanie ďalšej fázy propagácie nových protokolov Wayland — „experimental“, ktorá by znížila prekážky na zaradenie protokolov do súboru Wayland-Protocols a urýchlila ich zavedenie. V súčasnosti je na zaradenie protokolu do fázy staging potrebné vytvoriť tím podpory a získať určitý počet potvrdení (ACK) od účastníkov hodnotenia. V „experimental“ sa navrhuje prijímať protokol nie na základe potvrdení, ale na základe absencie námietok (NACK) počas dvojtýždňového hodnotiaceho obdobia. V prípade potreby môžu účastníci hodnotenia predĺžiť diskusiu ešte o ďalšie dva týždne vyhlásením stavu „WAIT“.
V experimentej fáze sa tiež navrhuje umožniť zmeny narušujúce kompatibilitu a pridanie "surových" protokolov, ktoré sa budú môcť postupne upravovať na potrebnú úroveň. Tým pádom experimentej fáza umožní rýchlo predkladať nové prototypy protokolov vývojárom, podporovať ich implementáciu v existujúcich projektoch a získavať spätnú väzbu od používateľov. Navrhovaný proces by mal zbaviť vývojárov protokolov dlhých diskusií a byrokracie predtým, než budú schválené do Wayland-Protocols. Napríklad, protokoly xdg-system-bell, fifo a commit-timing prijaté v súčasnom vydaní sa diskutovali viac ako rok.
Zdroj: opennet.ru
