Gli sviluppatori del progetto Cuarzo OS hanno presentato la prima versione della libreria Louvre, che fornisce componenti per lo sviluppo di server compositi basati sul protocollo Wayland. Il codice è scritto in C++ e distribuito con licenza GPLv3.
La libreria si occupa di tutte le operazioni a basso livello, inclusa la gestione dei buffer grafici, l'interazione con i sottomoduli 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 non spendere mesi di lavoro per creare elementi a basso livello standard, ma di ottenere subito una struttura funzionante del compositore. server, che può essere adattata alle proprie esigenze e ampliata con la funzionalità avanzata necessaria. Se necessario, il programmatore può ridefinire i metodi forniti dalla libreria per gestire protocolli, eventi di input e rendering.
Secondo gli sviluppatori, la libreria supera notevolmente in termini di prestazioni le soluzioni concorrenti. Ad esempio, un esempio di server composito creato con Louvre, denominato louvre-weston-clone, che riproduce la funzionalità del progetto Weston, consuma meno risorse CPU e GPU rispetto a Weston e Sway, come dimostrato nei test, e consente di ottenere un FPS costantemente elevato anche in scenari complessi.

Le principali funzionalità di Louvre:
- Supporto per configurazioni con più GPU (Multi-GPU).
- Supporto per più sessioni utente (Multi-Session, cambio TTY).
- Sistema di rendering con supporto per metodi basati su rendering 2D (LPainter), scene (Scene) e visualizzazioni (Views).
- Possibilità di utilizzare i propri shader e programmi OpenGL ES 2.0.
- Ridisegno automatico eseguito su richiesta (solo quando cambia il contenuto dell'area).
- Esecuzione multithread, che consente di ottenere alti FPS con v-sync attivato anche durante il rendering di scenari complessi (implementazioni single-thread hanno problemi a mantenere alti FPS a causa di frame persi che non possono essere elaborati a causa di ritardi nell'attesa della sincronizzazione con il segnale di blanking del frame (vblank).
- Supporto per buffering singolo, doppio e triplo.
- Implementazione del buffer di scambio per dati testuali.
- Supporto per Wayland e le estensioni:
- XDG Shell — un'interfaccia per la creazione e l'interazione con le superfici come se fossero finestre, consentendo di spostarle sullo schermo, ridurle, ingrandirle, modificarne le dimensioni, 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 la tecnologia dma-buf.
- Supporto per l'operatività in ambienti basati su driver Intel (i915), AMD (amdgpu) e NVIDIA (driver proprietario o nouveau).
- Funzionalità non ancora implementate (nella lista dei piani):
- Touch Events — gestione degli eventi degli schermi tattili.
- Pointer Gestures — controllo tramite schermi tattili.
- Viewporter — consente al client di eseguire azioni di zoom e ritaglio dei bordi della superficie lato server.
- Trasformazione degli oggetti LView.
- XWayland — avvio di applicazioni X11.


Fonte: opennet.ru
