È stata pubblicata la versione 1.31 del pacchetto wayland-protocols, che include un insieme di protocolli e estensioni che arricchiscono le funzionalità del protocollo di base Wayland e forniscono le capacità necessarie per costruire server compositi e ambienti utente.
Tutti i protocolli passano attraverso tre fasi: sviluppo, test e stabilizzazione. Al termine della fase di sviluppo (categoria «unstable»), il protocollo viene spostato nel ramo «staging» e ufficialmente incluso nel pacchetto wayland-protocols; dopo il completamento dei test, viene spostato nella categoria stabile. I protocolli nella categoria «staging» possono già essere utilizzati in server compositi e client dove è necessaria la funzionalità correlata. A differenza della categoria «unstable», in «staging» non sono permesse modifiche che violano la compatibilità, ma nel caso vengano rilevati problemi o carenze durante i test, non è esclusa la sostituzione con una nuova versione significativa del protocollo o con un altro supplemento Wayland.
La nuova versione è stata pubblicata una settimana dopo il rilascio di Wayland-Protocols 1.30, che ha introdotto il supporto per il protocollo tearing-control per disattivare la sincronizzazione verticale. Nella versione 1.31, è stato aggiunto il protocollo fractional-scale alla categoria «staging», tramite il quale il compositore può trasmettere valori di scalatura frazionari per le superfici, consentendo al client di determinare dimensioni di buffer più precise per gli oggetti wp_viewport, rispetto alla trasmissione di informazioni di scala arrotondate. Le implementazioni del protocollo fractional-scale sono pronte per wlroots, KWin e glfw.
Attualmente, il pacchetto wayland-protocols include i seguenti protocolli stabili, che garantiscono la compatibilità retroattiva:
- viewporter» — consente al client di eseguire operazioni di scalatura e ritaglio dei bordi della superficie lato client server.
- «presentation-time» — permette la visualizzazione dei video.
- «xdg-shell» — interfaccia per la creazione e interazione con le superfici come finestre, consentendo di spostarle sullo schermo, minimizzarle, ingrandirle, ridimensionarle, ecc.
Protocolli in fase di testing nel ramo «staging»:
- drm-lease — fornisce le risorse necessarie per formare immagini stereoscopiche con buffer diversi per l'occhio sinistro e destro durante la visualizzazione su caschi di realtà virtuale.
- «ext-session-lock» — definisce i mezzi per il blocco della sessione, ad esempio, durante il funzionamento del salvaschermo o la visualizzazione di una finestra di autenticazione.
- «single-pixel-buffer» — consente la creazione di buffer a singolo pixel che includono quattro valori RGBA a 32 bit.
- «xdg-activation» — consente di trasferire il focus tra diverse superfici di primo livello (ad esempio, tramite xdg-activation un'app può spostare il focus su un'altra).
- content-type — consente ai client di trasmettere al compositore server informazioni sui contenuti visualizzati, che possono essere utilizzate per ottimizzare il comportamento in base al contenuto, ad esempio, l'impostazione di proprietà DRM specifiche come «content type». È dichiarato il supporto per i seguenti tipi di contenuto: none (nessuna informazione sul tipo di dati), photo (output di foto digitali che richiede una minima elaborazione), video (video o animazione, richiede una sincronizzazione più precisa per evitare lag) e game (esecuzione di giochi, richiede un output con minima latenza).
- ext-idle-notify — consente ai server compositi di inviare ai client notifiche di inattività dell'utente, il che può essere utilizzato per attivare modalità di risparmio energetico aggiuntive dopo un certo periodo di inattività.
- tearing-control — consente di disattivare la sincronizzazione verticale (VSync) con impulso di spegnimento nei programmi a schermo intero, utilizzata per prevenire la comparsa di tearing durante l'output. Negli applicativi multimediali, la comparsa di artefatti dovuta al tearing è un effetto indesiderato, ma nei giochi si può tollerare, anche se la lotta contro di essi causa ulteriori ritardi.
Protocolli sviluppati nella branch «unstable»:
- «fullscreen-shell» — gestione del funzionamento in modalità schermo intero.
- «input-method» — gestione dei metodi di input.
- «idle-inhibit» — blocco dell'attivazione del salvaschermo.
- «input-timestamps» — marcature temporali per eventi di input.
- «keyboard-shortcuts-inhibit» — gestione della fissazione delle combinazioni di tasti e delle scorciatoie.
- «linux-dmabuf» — condivisione di più schede grafiche tramite la tecnologia dma-buf.
- «linux-explicit-synchronization» — meccanismo di sincronizzazione dei buffer specifico per Linux legato alla superficie.
- «pointer-gestures» — gestione dai touchscreen.
- «pointer constraints» — restrizioni sui puntatori (blocco).
- «primary-selection» — analogamente a X11 gestisce il funzionamento del buffer di appunti primari, il cui inserimento di solito avviene tramite il pulsante centrale del mouse.
- «relative pointer events» — eventi di puntatori relativi.
- «tablet» — supporto per l'input da tablet.
- «text-input» — organizzazione dell'input di testo.
- «xdg-foreign» — interfaccia per interagire con le superfici del cliente «vicino».
- «xdg-decoration» — rendering delle decorazioni delle finestre lato server.
- «xdg-output» — informazioni aggiuntive sull'uscita video (utilizzato per il ridimensionamento frazionale).
- Tutti i protocolli passano attraverso fasi di sviluppo, test e stabilizzazione. Al termine della fase di sviluppo (categoria «unstable»), il protocollo viene inserito nel ramo «staging» e ufficialmente incluso nel set di wayland-protocols; dopo il completamento dei test, viene spostato nella categoria stabile. I protocolli della categoria «staging» possono già essere utilizzati nei server compositi e nei client, dove è richiesta la funzionalità correlata. A differenza della categoria «unstable», nella «staging» non è consentita l'introduzione di modifiche che violano la compatibilità, ma in caso di problemi e difetti riscontrati durante i test, non è esclusa la sostituzione con una nuova versione significativa del protocollo o un'altra estensione Wayland.
Fonte: opennet.ru
