După șase luni de dezvoltare, a fost publicată lansarea pachetului wayland-protocols 1.34, care conține un set de protocoale și extensii care completează capacitățile protocolului de bază Wayland și oferă capabilitățile necesare pentru construirea de servere compozite și medii de utilizator.
Toate protocoalele trec secvenţial prin trei faze - dezvoltare, testare şi stabilizare. După finalizarea etapei de dezvoltare (categoria „instabilă”), protocolul este plasat în ramura „staging” și inclus oficial în setul de protocoale wayland, iar după finalizarea testării, este mutat în categoria stabilă. Protocoalele din categoria „staging” pot fi deja utilizate în servere compozite și clienți unde este necesară funcționalitatea aferentă. Spre deosebire de categoria „instabilă”, „staging” interzice efectuarea de modificări care încalcă compatibilitatea, dar dacă în timpul testării sunt identificate probleme și deficiențe, înlocuirea cu o nouă versiune semnificativă a protocolului sau o altă extensie Wayland nu este exclusă.
Noua versiune oferă mai multe protocoale noi, plasate în categoria „staging”:
- „xdg-toplevel-drag” - extinde mecanismul „drag & drop” cu posibilitatea de a atașa ferestre de nivel superior la o operație de glisare, care poate fi folosită, de exemplu, pentru a organiza glisarea barelor de instrumente sau a filelor browserului cu mouse-ul. Noul protocol vă permite să creați părți detașabile ale unei ferestre care, atunci când sunt trase din acea fereastră, devin ferestre noi și pot fi mutate deasupra ferestrei existente înainte de a fi reatașate.
- „xdg-dialog” - vă permite să atribuiți atribute specifice dialogului suprafețelor de nivel superior, de exemplu, puteți crea dialoguri modale care blochează interacțiunea utilizatorului cu restul interfeței.
- „linux-drm-syncobj” - Oferă instrumente pentru sincronizarea explicită a bufferelor folosind obiecte de sincronizare DRM (Direct Rendering Manager). Se presupune că, în contextul sincronizării la desenarea într-un buffer, protocolul propus va îmbunătăți funcționarea cu driverele bazate pe API-urile grafice Vulkan și OpenGL (implementarea se bazează pe handlere din drivere). Noul protocol face posibilă asigurarea faptului că o operațiune de randare la un buffer este finalizată înainte ca managerul compozit să redeze tamponul.
În prezent, wayland-protocols include următoarele protocoale stabile, care asigură compatibilitate inversă:
- „viewporter” - permite clientului să efectueze acțiuni de scalare și de tăiere a marginilor suprafeței pe partea serverului.
- „prezentare-timp” - oferă afișare video.
- „xdg-shell” este o interfață pentru crearea și interacțiunea cu suprafețe ca ferestre, care vă permite să le mutați pe ecran, să le minimizați, să extindeți, să redimensionați etc.
- „linux-dmabuf” - oferă partajarea mai multor plăci video folosind tehnologia DMA-BUF (vă permite să creați un wl_buffer bazat pe DMA-BUF).
Protocoale testate în ramura „staging”:
- drm-lease - furnizează resursele necesare pentru a genera o imagine stereo cu buffer-uri diferite pentru ochiul stâng și drept atunci când ieșiți către căștile de realitate virtuală.
- „ext-session-lock” - definește un mijloc de blocare a sesiunii, de exemplu, în timp ce economizorul de ecran rulează sau este afișat dialogul de autentificare.
- „single-pixel-buffer” - vă permite să creați buffer-uri cu un singur pixel care includ patru valori RGBA pe 32 de biți.
- „xdg-activation” - vă permite să transferați focalizarea între diferite suprafețe de la primul nivel (de exemplu, folosind xdg-activation, o aplicație poate comuta focalizarea pe alta).
- tip-de-conținut - permite clienților să transmită informații compozite Server Informații despre conținutul afișat care pot fi utilizate pentru a optimiza comportamentul în funcție de conținut, cum ar fi setarea unor proprietăți DRM specifice, cum ar fi „tipul de conținut”. Este declarat suport pentru următoarele tipuri de conținut: niciunul (fără informații despre tipul de date), foto (ieșire foto digitală care necesită procesare minimă), video (video sau animație, care necesită o sincronizare mai precisă pentru a evita sacadarea) și joc (lansarea jocului, care necesită o ieșire cu latență minimă).
- ext-idle-notify - Permite serverelor compozite să trimită notificări clienților despre inactivitatea utilizatorului, care pot fi folosite pentru a activa moduri suplimentare de economisire a energiei după un anumit timp de inactivitate.
- tearing-control - vă permite să dezactivați sincronizarea verticală (VSync) cu un impuls de amortizare verticală în aplicațiile pe ecran complet, utilizat pentru a proteja împotriva ruperii la ieșire. În aplicațiile multimedia, artefactele cauzate de rupere sunt un efect nedorit, dar în programele de jocuri, artefactele pot fi tolerate dacă tratarea lor provoacă întârzieri suplimentare.
- ext-foreign-toplevel-list - Preia informații despre suprafețele plasate la nivelul superior, care vă permit să organizați ferestre pentru a se andoca peste alt conținut, de exemplu, pentru a atașa propriile panouri și comutatoare pentru ferestre.
- security-context - vă permite să identificați clienții folosind izolarea sandbox. Un client poate înregistra o nouă conexiune la un server compus bazat pe Wayland și poate atașa acestuia un context de securitate, după care managerul compozit va limita capabilitățile disponibile conexiunii stabilite pe baza contextului de securitate specificat.
- forma cursorului este o modalitate alternativă de a personaliza aspectul cursorului, bazată pe trecerea unei serii de imagini ale cursorului în loc de fixarea pe o suprafață (wl_surface).
- „ext-transient-seat” este conceput pentru a crea sesiuni (locuri) independente temporare, concepute pentru utilizare cu dispozitive de intrare virtuale. De exemplu, atunci când se implementează capacitatea de conectare la desktop la distanță Protocolul permite crearea unei sesiuni separate cu o tastatură și un mouse virtual pentru fiecare utilizator.
Protocoale dezvoltate în ramura „instabilă”:
- „fullscreen-shell” - controlul muncii în modul ecran complet.
- "input-method" - metode de procesare a introducerii.
- „idle-inhibit” - blocarea lansării screensaver-ului (screensaver).
- "input-timestamps" - marcaje de timp pentru evenimentele de intrare.
- „keyboard-shortcuts-inhibit” - controlează atașarea comenzilor rapide de la tastatură și a tastelor rapide.
- „linux-explicit-syncronization” este specific pentru Linux mecanism pentru sincronizarea tampoanelor în raport cu suprafața.
- „gesturi-pointer” - control de pe ecranele tactile.
- „constrângeri pointer” - constrângeri pointer (blocare).
- „selectare primară” - prin analogie cu X11, asigură funcționarea clipboard-ului primar (selecție primară), informații din care se inserează de obicei cu butonul din mijloc al mouse-ului.
- „evenimente indicator relativ” - evenimente indicator relativ.
- „tablet” - suport pentru intrare de pe tablete.
- „text-input” - organizarea introducerii textului.
- „xdg-foreign” este o interfață pentru interacțiunea cu suprafețele clientului „învecinat”.
- „xdg-decoration” - redarea decorațiunilor ferestrei pe partea serverului.
- „xdg-output” - informații suplimentare despre ieșirea video (folosită pentru scalarea fracțională).
- „xwayland-keyboard-grab” - capturați intrarea în aplicațiile XWayland.
Sursa: opennet.ru
