Die Entwickler des Cuarzo OS-Projekts haben die erste Version der Louvre-Bibliothek vorgestellt, die Komponenten zur Entwicklung von Kompositionsservern auf Basis des Wayland-Protokolls bereitstellt. Der Code ist in C++ geschrieben und wird unter der GPLv3-Lizenz veröffentlicht.
Die Bibliothek ĂŒbernimmt alle niedrigstufigen Operationen, einschlieĂlich der Verwaltung von Grafikspeichern, der Interaktion mit Eingabesystemen und Grafik-APIs in Linux, und bietet zudem fertige Implementierungen verschiedener Erweiterungen des Wayland-Protokolls. Das Vorhandensein fertiger Komponenten ermöglicht es, nicht Monate mit der Erstellung typischer niedrigstufiger Elemente zu verbringen, sondern sofort ein funktionsfĂ€higes und arbeitsfĂ€higes GerĂŒst des Kompositionsservers zu erhalten. Server, das an die eigenen BedĂŒrfnisse angepasst und mit erforderlichen erweiterten Funktionen ergĂ€nzt werden kann. Bei Bedarf kann der Entwickler die von der Bibliothek bereitgestellten Methoden zur Verarbeitung von Protokollen, Eingabeveranstaltungen und Rendering ĂŒberschreiben.
Laut den Entwicklern ĂŒbertrifft die Bibliothek die konkurrierenden Lösungen in Bezug auf die Leistung erheblich. Beispielsweise verbraucht der mit Louvre geschriebene Beispielkompositionsserver louvre-weston-clone, der die FunktionalitĂ€t des Projekts Weston reproduziert, in durchgefĂŒhrten Tests im Vergleich zu Weston und Sway weniger CPU- und GPU-Ressourcen und ermöglicht es, auch in komplexen Szenarien eine konstant hohe FPS zu erreichen.

Die Hauptfunktionen von Louvre:
- UnterstĂŒtzung fĂŒr Betrieb in Multi-GPU-Konfigurationen.
- UnterstĂŒtzung fĂŒr mehrere Benutzersitzungen (Multi-Session, TTY-Umschaltung).
- Ein Rendering-System mit UnterstĂŒtzung fĂŒr Methoden basierend auf 2D-Rendering (LPainter), Szenen (Scene) und Ansichten (Views).
- Die Möglichkeit, eigene Shader und OpenGL ES 2.0-Programme zu verwenden.
- Automatische Neuzeichnung, die nach Bedarf durchgefĂŒhrt wird (nur bei Ănderungen des Inhalts des Bereichs).
- Multithread-Betrieb, der hohe FPS mit aktivem V-Sync auch beim Rendering komplexer Szenarien ermöglicht (einstufige Implementierungen haben Probleme mit der Erhaltung hoher FPS aufgrund von Frame-Drops, die nicht rechtzeitig verarbeitet werden können wegen Warteverzögerungen auf die Synchronisation mit dem vertikalen Synchronisationsimpuls (vblank).
- UnterstĂŒtzung fĂŒr Einzel-, Doppel- und Dreifachpufferung.
- Implementierung eines Puffers fĂŒr den Austausch von Textdaten.
- UnterstĂŒtzung fĂŒr Wayland und Erweiterungen:
- XDG Shell â eine Schnittstelle zur Erstellung und Interaktion mit OberflĂ€chen wie Fenstern, die es ermöglicht, sie auf dem Bildschirm zu verschieben, zu minimieren, zu maximieren, ihre GröĂe zu Ă€ndern usw.
- XDG Decoration â das Zeichnen von Fensterdekorationen auf der Serverseite.
- Presentation Time â sorgt fĂŒr die Wiedergabe von Videos.
- Linux DMA-Buf â die gemeinsame Nutzung mehrerer Grafikkarten mithilfe der Technologie dma-buf.
- UnterstĂŒtzung der Arbeit in Umgebungen auf Basis der Treiber Intel (i915), AMD (amdgpu) und NVIDIA (proprietĂ€rer Treiber oder nouveau).
- Noch nicht realisierte Möglichkeiten (im Plan):
- Touch Events â Verarbeitung von Ereignissen von Touchscreens.
- Pointer Gestures â Steuerung von Touchscreens.
- Viewporter â ermöglicht es dem Client, auf der Serverseite Aktionen zum Skalieren und Zuschneiden der RĂ€nder der OberflĂ€che auszufĂŒhren.
- Transformation von LView-Objekten.
- XWayland â AusfĂŒhrung von X11-Anwendungen.


Quelle: opennet.ru
