Twórcy projektu Cuarzo OS zaprezentowali pierwsze wydanie biblioteki Louvre, która dostarcza komponenty do rozwoju serwerów kompozytowych opartych na protokole Wayland. Kod napisany jest w C++ i rozpowszechniany na licencji GPLv3.
Biblioteka zajmuje się wszystkimi operacjami niskiego poziomu, w tym zarządzaniem buforami graficznymi, interakcją z podsystemami wejściowymi i graficznymi API w systemie Linux, a także oferuje gotowe implementacje różnych rozszerzeń protokołu Wayland. Obecność gotowych komponentów pozwala nie tracić miesięcy pracy na tworzenie standardowych elementów niskopoziomowych, ale od razu otrzymać gotowy i działający złożony framework serwerowy, który można dostosować do swoich potrzeb i uzupełnić o niezbędne rozszerzona funkcjonalność. Jeśli to konieczne, programista może zastąpić metody dostarczone przez bibliotekę do obsługi protokołów, zdarzeń wejściowych i zdarzeń renderowania.
Według twórców biblioteka zauważalnie przewyższa wydajność konkurencyjnymi rozwiązaniami. Przykładowo przykładowy serwer złożony louvre-weston-clone, napisany przy użyciu Louvre, który odtwarza funkcjonalność projektu Weston, w porównaniu z Weston i Sway, zużywa w testach mniej zasobów procesora i karty graficznej, a także pozwala aby osiągnąć niezmiennie wysoką liczbę klatek na sekundę, nawet w złożonych scenariuszach.
Najważniejsze cechy Luwru:
- Obsługa konfiguracji z wieloma procesorami graficznymi (Multi-GPU).
- Obsługuje wiele sesji użytkownika (wielosesyjne, przełączanie TTY).
- System renderowania obsługujący metody oparte na renderowaniu 2D (LPainter), scenach i widokach.
- Możliwość korzystania z własnych shaderów i programów OpenGL ES 2.0.
- Automatyczne przerysowywanie wykonywane w miarę potrzeb (tylko w przypadku zmiany zawartości obszaru).
- Praca wielowątkowa, pozwalająca na osiągnięcie wysokiego FPS przy włączonej synchronizacji pionowej nawet przy renderowaniu skomplikowanych scenariuszy (implementacje jednowątkowe mają problemy z utrzymaniem wysokiego FPS ze względu na brakujące klatki, których nie można przetworzyć ze względu na opóźnienia w oczekiwaniu na synchronizację z impulsem wygaszenia klatek (vpuste).
- Obsługuje pojedyncze, podwójne i potrójne buforowanie.
- Implementacja schowka na dane tekstowe.
- Obsługa Waylanda i rozszerzeń:
- XDG Shell to interfejs do tworzenia i interakcji z powierzchniami w postaci okien, który umożliwia przesuwanie ich po ekranie, minimalizowanie, rozszerzanie, zmianę rozmiaru itp.
- XDG Dekoracja - renderowanie dekoracji okiennych po stronie serwera.
- Czas prezentacji – zapewnia wyświetlanie wideo.
- Linux DMA-Buf - współdzielenie wielu kart graficznych przy użyciu technologii dma-buf.
- Obsługuje pracę w środowiskach opartych na sterownikach Intel (i915), AMD (amdgpu) i NVIDIA (sterownik autorski lub nouveau).
- Funkcje jeszcze nie zaimplementowane (na liście planów):
- Zdarzenia dotykowe - obsługa zdarzeń na ekranie dotykowym.
- Gesty wskaźnika — sterowanie na ekranie dotykowym.
- Viewporter — umożliwia klientowi skalowanie i przycinanie krawędzi powierzchni po stronie serwera.
- Transformacja obiektów LView.
- XWayland - uruchamianie aplikacji X11.
Źródło: opennet.ru