È stato pubblicato il pacchetto wayland-protocols 1.31, che contiene 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, testing e stabilizzazione. Al termine della fase di sviluppo (categoria "unstable"), il protocollo viene inserito nel ramo "staging" e ufficialmente incluso nel pacchetto wayland-protocols, e dopo il completamento del testing viene spostato nella categoria stabile. I protocolli della categoria "staging" possono già essere utilizzati in server e client compositi, dove è richiesta la funzionalità associata. A differenza della categoria "unstable", in "staging" è vietato apportare modifiche che interrompano la compatibilità, ma in caso di problemi e difetti emersi durante il testing, non si esclude la sostituzione con una nuova versione significativa del protocollo o con un'altra estensione di Wayland.
La nuova versione è stata pubblicata una settimana dopo il rilascio di Wayland-Protocols 1.30, in cui è stata aggiunta la supporto per il protocollo tearing-control per disabilitare la sincronizzazione verticale. Nella versione 1.31, il protocollo fractional-scale è stato aggiunto alla categoria «staging», che consente al gestore composito di trasmettere valori di scaling frazionari per le superfici, permettendo al client di determinare le dimensioni più precise dei buffer per gli oggetti wp_viewport, rispetto alla trasmissione di informazioni sul scaling arrotondate. Le implementazioni del protocollo fractional-scale sono pronte per wlroots, KWin e glfw.
Attualmente, il pacchetto wayland-protocols include i seguenti protocolli stabili, in cui è garantita la retrocompatibilità:
- viewporter" – consente al cliente di eseguire operazioni di scaling e ritaglio dei bordi della superficie sul lato server.
- «presentation-time» — gestisce la visualizzazione dei video.
- "xdg-shell" è un'interfaccia per la creazione e l'interazione con le superfici come finestre, consentendo di spostarle sullo schermo, minimizzarle, massimizzarle, cambiarne le dimensioni, ecc.
Protocolli testati nella branch «staging»:
- drm-lease — fornisce le risorse necessarie per creare un'immagine stereoscopica con buffer diversi per l'occhio sinistro e destro quando visualizzata su visori VR.
- «ext-session-lock» — definisce i mezzi per il blocco della sessione, ad esempio durante l'attivazione dello screensaver o la visualizzazione di una finestra di dialogo per l'autenticazione.
- «single-pixel-buffer» — consente la creazione di buffer a singolo pixel che includono quattro valori RGBA a 32 bit.
- «xdg-activation» — consente di passare il focus tra diverse superfici di primo livello (ad esempio, mediante xdg-activation, un'applicazione può trasferire il focus a un'altra).
- content-type consente ai client di inviare informazioni al compositore server sul contenuto visualizzato, che possono essere utilizzate per ottimizzare il comportamento in base al contenuto, ad esempio impostando proprietà DRM specifiche, come il "content type". È dichiarato il supporto per i seguenti tipi di contenuto: none (nessuna informazione sul tipo di dati), photo (visualizzazione di foto digitali con minima elaborazione), video (video o animazione, è richiesta una sincronizzazione più precisa per evitare lag) e game (esecuzione di giochi, è richiesta un'uscita con minima latenza).
- ext-idle-notify — consente ai server compositi di inviare ai client notifiche sull'inattività dell'utente, che possono essere utilizzate per attivare modalità di risparmio energetico aggiuntive dopo un certo periodo di inattività.
- tearing-control — consente di disabilitare la sincronizzazione verticale (VSync) con impulsi di spegnimento nei programmi a schermo intero, utilizzata per prevenire la comparsa di tearing durante l'uscita. Negli applicativi multimediali, la comparsa di artefatti dovuti al tearing è un effetto indesiderato, ma nei programmi di gioco è possibile tollerare gli artefatti se la loro eliminazione porta a ritardi aggiuntivi.
I protocolli in fase di sviluppo nel ramo «unstable»:
- «fullscreen-shell» — gestione delle operazioni in modalità schermo intero.
- «input-method» — elaborazione dei metodi di input.
- «idle-inhibit» — blocco dell'attivazione dello screensaver (salvaschermo).
- «input-timestamps» — registrazioni temporali per eventi di input.
- «keyboard-shortcuts-inhibit» — gestione delle combinazioni di tasti e delle scorciatoie da tastiera.
- «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 dei gesti su schermi tattili.
- «pointer constraints» — vincoli sui puntatori (blocco).
- «primary-selection» — analogamente a X11, gestisce il funzionamento del buffer di copia primario (primary selection), il cui inserimento avviene normalmente con il pulsante centrale del mouse.
- «relative pointer events» — eventi relativi ai puntatori.
- «tablet» — supporto per l'input da tablet.
- «text-input» — organizzazione dell'input di testo.
- «xdg-foreign» — interfaccia di interazione con le superfici di un client «vicino».
- «xdg-decoration» — rendering delle decorazioni delle finestre lato server.
- «xdg-output» — informazioni supplementari sull'output video (utilizzato per il ridimensionamento frazionale).
- «xwayland-keyboard-grab» — acquisizione dell'input nelle applicazioni XWayland.
Fonte: opennet.ru
