Gli sviluppatori del progetto Cuarzo OS hanno presentato il primo rilascio della libreria Louvre, che fornisce componenti per lo sviluppo di server compositi basati sul protocollo Wayland. Il codice è scritto in C++ e distribuito sotto licenza GPLv3.
La libreria si occupa di tutte le operazioni a basso livello, inclusa la gestione dei buffer grafici, l'interazione con i sottosistemi di input e le API grafiche in Linux, e offre anche implementazioni pronte di varie estensioni del protocollo Wayland. La disponibilità di componenti pronti consente di risparmiare mesi di lavoro per creare elementi a basso livello standardizzati, permettendo di avere subito una struttura di server composito funzionante. server, che può essere adattata secondo le proprie esigenze e arricchita con funzionalità avanzate necessarie. Se necessario, lo sviluppatore può sovrascrivere i metodi forniti dalla libreria per la gestione dei protocolli, degli eventi di input e del rendering.
Secondo gli sviluppatori, la libreria supera notevolmente in prestazioni le soluzioni concorrenti. Ad esempio, un esempio di server composito chiamato louvre-weston-clone, realizzato con Louvre e che riproduce la funzionalità del progetto Weston, consuma meno risorse CPU e GPU nei test rispetto a Weston e Sway, e consente di raggiungere un FPS costantemente elevato anche in scenari complessi.

Caratteristiche principali di Louvre:
- Supporto per configurazioni multi-GPU.
- Supporto per più sessioni utente.
- Sistema di rendering con supporto per metodi basati su rendering 2D, scene e visualizzazioni.
- Possibilità di utilizzare i propri shader e programmi OpenGL ES 2.0.
- Ridistribuzione automatica eseguita secondo necessità (solo quando il contenuto dell'area cambia).
- Elaborazione multi-threading che consente di ottenere elevate FPS con la v-sync attiva anche durante il rendering di scenari complessi (le implementazioni a thread singolo hanno problemi a mantenere alte FPS a causa di frame persi che non riescono ad essere elaborati in tempo a causa delle attese per la sincronizzazione con il segnale di vuoto del frame).
- Supporto per buffering singolo, doppio e triplo.
- Implementazione del buffer di scambio per dati testuali.
- Supporto per Wayland e estensioni:
- XDG Shell — interfaccia per la creazione e l'interazione con superfici come finestre, che consente di spostarle, minimizzarle, massimizzarle, ridimensionarle, ecc.
- XDG Decoration — rendering delle decorazioni delle finestre lato server.
- Presentation Time — garantisce la visualizzazione dei video.
- Linux DMA-Buf — condivisione di più schede grafiche tramite tecnologia dma-buf.
- Supporto per il funzionamento in ambienti basati su driver Intel (i915), AMD (amdgpu) e NVIDIA (driver proprietario o nouveau).
- Funzionalità ancora non implementate (in programma):
- Touch Events — gestione degli eventi degli schermi tattili.
- Pointer Gestures — controllo tramite schermi tattili.
- Viewporter — consente al client di eseguire operazioni di scalatura e ritaglio dei bordi della superficie lato server.
- Trasformazione degli oggetti LView.
- XWayland — esecuzione di applicazioni X11.


Fonte: opennet.ru
