Objavljen je izvod paketa wayland-protocols 1.38, koji sadrži skup protokola i proširenja koja dopunjuju osnovni protokol Wayland i pružaju mogućnosti potrebne za izgradnju kompozitnih servera i korisničkih okruženja.
Svi protokoli prolaze kroz tri faze — razvoj, testiranje i stabilizacija. Nakon završetka faze razvoja (kategorija „unstable”), protokol se prebacuje u granu „staging” i službeno se uključuje u skup wayland-protocols, a nakon završetka testiranja prelazi u kategoriju stabilnih. Protokoli iz kategorije „staging” već se mogu primenjivati u kompozitnim serverima i klijentima gde su potrebne odgovarajuće funkcionalnosti. Za razliku od kategorije „unstable”, u „staging” nije dozvoljeno unositi promene koje narušavaju kompatibilnost, ali u slučaju otkrivanja problema i nedostataka tokom testiranja ne isključuje se zamena novom značajnom verzijom protokola ili drugim Wayland-proširenjem.
U novoj verziji dodani su protokoli u kategoriju „staging“:
- xdg-system-bell — omogoča predvajanje sistemskega signala, ki se lahko uporablja, na primer, kot opozorilo v terminalskem emulatorju. Oblika predvajanja signala je določena po izbiri kompozicijskega upravljalca, to lahko ni le zvok, temveč tudi vizualni odziv.
- fifo — реализует механизм FIFO (первым пришёл — первым ушёл) для обработки очереди обновления содержимого отображаемой поверхности. Практически, протокол позволяет использовать ожидание завершения вертикальной развёртки (vblank) вместо callback-вызовов при каждой готовности к отображению нового кадра, что решает проблему высокой нагрузки на GPU при использовании VSync.
- commit-timing — позволяет привязать ограничение времени к содержимому поверхности (композитный сервер должен отобразить изменение контента по возможности через указанное время, но не раньше).
Trenutno nabor wayland-protocols vključuje naslednje stabilne protokole, ki zagotavljajo povratno združljivost:
- „viewporter“ — omogoča strankam izvajanje dejanj glede povečave in rezanja robov površine na strežniku.
- „presentation-time“ – zajišťuje zobrazování videa.
- „xdg-shell“ — vmesnik za ustvarjanje in interakcijo s površinami kot okni, kar omogoča njihovo premikanje po zaslonu, minimiziranje, maksimiziranje, spreminjanje velikosti itd.
- „linux-dmabuf” — osigurava deljenje više grafičkih kartica pomoću tehnologije DMA-BUF (omogućava izradu wl_buffer na osnovu DMA-BUF).
- „tablet“ – organizace vstupu z grafických tabletů.
Protokoly testované ve větvi „staging“:
- drm-lease – poskytuje zdroje potřebné k vytváření stereoskopického obrazu s různými buffery pro levé a pravé oko při zobrazování na hemlch virtuální reality.
- „ext-session-lock“ – určuje prostředky pro zamykání sezení, například během provozu spořiče obrazovky nebo zobrazování autentizačního dialogu.
- „single-pixel-buffer“ – umožňuje vytvářet jednopixelové buffery obsahující čtyři 32bitové hodnoty RGBA.
- „xdg-activation“ – umožňuje předat fokus mezi různými plochami prvního stupně (například pomocí xdg-activation může jedna aplikace přepnout fokus na jinou).
- content-type — omogoča strankam, da posredujejo kompozitnemu strežniku podatke o predstavljenem vsebinu, ki se lahko uporabijo za optimizacijo obnašanja na podlagi vsebine, na primer, nastavitvi specifičnih lastnosti DRM, kot so „content type“. Podprti so naslednji tipi vsebine: none (brez podatkov o vrsti podatkov), photo (prikaz digitalnih fotografij, ki zahteva minimalno obdelavo), video (video ali animacija, pri čemer je potrebna natančnejša sinhronizacija za preprečitev zatikanja) in game (začetek iger, pri katerem je potrebno prikazovanje z minimalno zakasnitvijo).
- ext-idle-notify — omogoča kompozitnim strežnikom, da strankam posredujejo obvestila o neaktivnosti uporabnika, kar se lahko uporabi za aktiviranje dodatnih načinov varčevanja z energijo po določenem času neaktivnosti.
- tearing-control — omogoča onemogočitev vertikalne sinhronizacije (VSync) pri celozaslonskih aplikacijah s pulzom za ugašanje okvirjev, ki se uporablja za zaščito pred nastajanjem razpok pri prikazu (tearing). V multimedijskih aplikacijah je pojav artefaktov zaradi razpok nezaželen učinek, vendar v igrah z artefakti to lahko sprejmemo, če boj proti njim povzroča dodatne zakasnitve.
- ext-foreign-toplevel-list — pridobitev informacij o površinah, postavljenih na najvišji ravni (toplevel), ki omogočajo organizacijo pritrjevanja oken nad drugo vsebino, na primer za povezovanje lastnih plošč in preklopnikov oken.
- security-context — omogoča identifikacijo strank, ki uporabljajo izolacijo peskovnika. Stranka lahko registrira novo povezavo s kompozitnim strežnikom na osnovi Wayland in ji priloži varnostni kontekst, po čemer bo kompozitni upravitelj na podlagi navedenega varnostnega konteksta omejil možnosti, dostopne za vzpostavljeno povezavo.
- cursor-shape — alternativen način za prilagajanje videza kazalca, ki temelji na posredovanju serije slik kazalca namesto vezave na površino (wl_surface).
- „ext-transient-seat” — namenjen za kreiranje privremenih nezavisnih sesija (seat), osmišljenih za korišćenje zajedno s virtuelnim uređajima za unos. Na primer, prilikom implementacije mogućnosti povezivanja s daljinskim radnim stolom protokol omogućava stvaranje zasebne sesije za svakog korisnika sa virtuelnom tastaturom i mišem.
- «xdg-toplevel-drag» — širi mehanizem «drag & drop» z možnostjo pritrditve oken najvišje ravni na operacijo premikanja, kar se lahko na primer uporablja za organizacijo premikanja orodnih vrstic ali zavihkov brskalnika z miško. Nov protokol omogoča ustvarjanje odklopljivih delov okna, ki ob premikanju iz tega okna postanejo nova okna in se lahko premikajo čez obstoječe okno, preden se ponovno pritrdi.
- «xdg-dialog» — omogoča dodelitev oznak površinam najvišje ravni, specifičnih za pogovorna okna, na primer, lahko ustvarjamo modalna pogovorna okna, ki blokirajo interakcijo uporabnika z ostalim delom vmesnika.
- „linux-drm-syncobj” — pruža alatke za eksplicitnu sinhronizaciju buferâ pomoću DRM objekata za sinhronizaciju (Direct Rendering Manager). Pretpostavlja se da će u kontekstu sinhronizacije za renderovanje u bufer, predloženi protokol poboljšati rad s drajverima zasnovanim na grafičkim API-jevima Vulkan i OpenGL (implementacija se zasniva na rukovaocima u drajverima). Novi protokol omogućava da se osigura da je operacija renderovanja u bufer završena pre nego što kompozitni menadžer prikaže taj bufer.
- alpha-modifier, ki omogoča strankam, da spremenijo raven prosojnosti površine in prenesejo operacije za zagotavljanje prosojnosti na stran kompozicijskega strežnika, ki lahko te operacije preusmeri na KMS.
- xdg-toplevel-icon — povezovanje ikone z oknom najvišje ravni.
- ext-image-capture-source in ext-image-copy-capture — organizacija zajema vsebine, prikazane na zaslonu.
Protokoli, ki se razvijajo v veji „unstable“:
- „fullscreen-shell“ — upravljanje dela v celozaslonskem načinu.
- „input-method“ — obdelava metod vnosa.
- „idle-inhibit“ — blokiranje zagonov ekrannega varčevalnika.
- „input-timestamps“ — časovne oznake za dogodke vnosa.
- „keyboard-shortcuts-inhibit“ — upravljanje pritrjevanja kombinacij na tipkovnici in hitrih tipk.
- „linux-explicit-synchronization“ — za Linux specifičen mehanizem sinhronizacije pomnilnika v povezavi s površino.
- „pointer-gestures“ — upravljanje s potezami na zaslonih na dotik.
- „pointer constraints“ — omejitve kazalcev (blokada).
- „primary-selection“ — po analogiji z X11 omogoča delovanje primarnega odložišča, katerega vstavljanje običajno poteka s srednjo miškino tipko.
- „relative pointer events“ — relativni dogodki kazalca.
- „text-input“ — organizacija vnosa besedila.
- „xdg-foreign“ — vmesnik za interakcijo s površinami „sosednjega“ odjemalca.
- «xdg-decoration» — risanje okenskih dekoracij na strežniku.
- «xdg-output» — dodatne informacije o video izhodu (uporablja se za sorazmerno merjenje).
- «xwayland-keyboard-grab» — zajem vnosa v aplikacijah XWayland.
Dodatno se može istaknuti predlog zaposlenog u kompaniji Valve o dodavanju još jedne faze promocije novih protokola Wayland — „experimental“, koja će smanjiti barijeru za uključivanje protokola u set Wayland-Protocols i ubrzati njihovu implementaciju. Trenutno je za ulazak protokola u fazu staging potrebno formirati tim podrške i dobiti određeni broj potvrda (ACK) od učesnika recenziranja. U „experimental“ se predlaže prihvatanje protokola bez dobijanja potvrda, već na osnovu nedostatka prigovora (NACK) tokom dvonedeljnog perioda recenziranja. Ako je potrebno, učesnici recenziranja mogu produžiti diskusiju još na dve nedelje postavljanjem statusa „WAIT“.
U fazi „experimental“ se takođe predlaže dozvoliti izmene koje krše kompatibilnost i dodavanje „sirovih“ protokola, koje će postupno dovesti do potrebnog nivoa. Na taj način, faza „experimental“ će omogućiti brzo dovođenje novih prototipova protokola do programera, stimulisati njihovu implementaciju u postojeće projekte i dobiti povratne informacije od korisnika. Predloženi proces trebao bi osloboditi programere protokola od dugotrajnih rasprava i birokratije pre nego što budu prihvaćeni u sastav Wayland-Protocols. Na primer, protokoli xdg-system-bell, fifo i commit-timing, koji su prihvaćeni u ovom izdanju, raspravljali su se više od godinu dana.
Izvor: opennet.ru
