Twórcy projektu Cuarzo OS zaprezentowali pierwszą wersję biblioteki Louvre, która dostarcza komponenty do tworzenia serwerów kompozytowych opartych na protokole Wayland. Kod jest napisany w języku C++ i dystrybuowany na licencji GPLv3.
Biblioteka zajmuje się wykonywaniem wszystkich operacji niskopoziomowych, w tym zarządzaniem buforami graficznymi, interakcją z podsystemami wejścia oraz graficznymi interfejsami API w systemie Linux, a także oferuje gotowe implementacje różnych rozszerzeń protokołu Wayland. Posiadanie gotowych komponentów pozwala zaoszczędzić miesiące pracy na tworzenie typowych niskopoziomowych elementów, a zamiast tego pozwala od razu uzyskać gotowy i działający szkielet kompozytowy, serwera, który można dostosować do własnych potrzeb i wzbogacić o niezbędną rozbudowaną funkcjonalność. Jeśli zajdzie taka potrzeba, programista może nadpisać metody dostarczane przez bibliotekę w celu obsługi protokołów, zdarzeń wejścia i renderowania.
Według twórców biblioteka znacząco przewyższa wydajnością konkurencyjne rozwiązania. Na przykład przykład serwera kompozytowego louvre-weston-clone, stworzony za pomocą Louvre, który odtwarza funkcjonalność projektu Weston, w testach zużywa mniej zasobów CPU i GPU w porównaniu do Westona i Sway'a, a także pozwala osiągnąć stabilnie wysokie FPS, nawet w trudnych scenariuszach.

Główne możliwości Louvre:
- Wsparcie dla konfiguracji z wieloma GPU (Multi-GPU).
- Wsparcie dla wielu sesji użytkowników (Multi-Session, przełączanie TTY).
- System renderowania z obsługą metod opartych na renderowaniu 2D (LPainter), scen (Scene) i widoków (Views).
- Możliwość korzystania z własnych shaderów i programów OpenGL ES 2.0.
- Automatyczne przerysowywanie, wykonywane w razie potrzeby (tylko przy zmianie zawartości obszaru).
- Wielowątkowe przetwarzanie, co pozwala uzyskać wysokie FPS z włączonym v-sync, nawet przy renderowaniu skomplikowanych scenariuszy (implementacje jednowątkowe mają problemy z utrzymaniem wysokiego FPS z powodu opuszczania klatek, które nie mogą być przetworzone z powodu opóźnień związanych z oczekiwaniem na synchronizację z pulsacją gasiącą klatki (vblank).
- Wsparcie dla pojedynczego, podwójnego i potrójnego buforowania.
- Implementacja bufora wymiany dla danych tekstowych.
- Wsparcie dla Wayland i rozszerzeń:
- XDG Shell — interfejs do tworzenia i interakcji z powierzchniami jako oknami, co umożliwia ich przesuwanie po ekranie, minimalizowanie, maksymalizowanie, zmienianie rozmiaru itp.
- XDG Decoration — renderowanie dekoracji okien po stronie serwera.
- Presentation Time — zapewnia wyświetlanie wideo.
- Linux DMA-Buf — współdzielenie wielu kart graficznych za pomocą technologii dma-buf.
- Wsparcie działania w środowiskach opartych na sterownikach Intel (i915), AMD (amdgpu) oraz NVIDIA (sterownik proprietarny lub nouveau).
- Pomysły, które nie zostały jeszcze zrealizowane (na liście planów):
- Touch Events — obsługa zdarzeń z ekranów dotykowych.
- Pointer Gestures — sterowanie z ekranów dotykowych.
- Viewporter — pozwala klientowi na działania dotyczące skalowania i przycinania krawędzi powierzchni po stronie serwera.
- Transformacja obiektów LView.
- XWayland — uruchamianie aplikacji X11.


Źródło: opennet.ru
