Wprowadzono KWinFT, rozwidlenie KWin skupione na Waylandzie

Roman Gilg, uczestnicząc przy rozwoju KDE, Wayland, Xwayland i X Server, wprowadzono projekt KWinFT (KWin Fast Track), opracowanie elastycznego i łatwego w użyciu menedżera okien kompozytowych dla Wayland i X11 w oparciu o bazę kodu KWin .Name. Oprócz menedżera okien w projekcie opracowano także bibliotekę zawijanie wraz z wdrożeniem powiązania z biblioteką libwayland dla Qt/C++, dalszy rozwój KWayland .Name, ale wolny od wiązania z Qt. Kod jest rozpowszechniany na licencjach GPLv2 i LGPLv2.

Celem projektu jest recykling KWin i KWayland przy użyciu
nowoczesne technologie i praktyki deweloperskie, które pozwalają przyspieszyć rozwój projektu, refaktoryzację kodu, dodać optymalizacje i uprościć dodawanie fundamentalnych innowacji, których integracja z KWin w jego obecnej formie jest trudna. KWinFT i Wrapland mogą być używane do bezproblemowego zastąpienia KWin i KWayland, ale nie są one ograniczone przez blokadę KWin w wielu produktach, gdzie utrzymanie pełnej kompatybilności jest priorytetem, który uniemożliwia rozwój innowacji.

Dzięki KWinFT programiści mają wolną rękę do eksperymentowania z nowymi funkcjami, zachowując jednocześnie stabilność dzięki zastosowaniu bardziej nowoczesnych technik programistycznych. Przykładowo do sprawdzenia kodu KWinFT wykorzystywany jest system ciągłej integracji obejmujący weryfikację przy użyciu różnych linterów, automatyczne generowanie złożeń oraz zaawansowane testowanie. Jeśli chodzi o rozwój funkcjonalności, głównym celem KWinFT będzie zapewnienie wysokiej jakości i kompletnej obsługi protokołów
Wayland, w tym przeróbka elementów architektonicznych KWin, które komplikują integrację z Waylandem.

Wśród eksperymentalnych innowacji dodanych już do KWinFT są:

  • Proces komponowania został przerobiony, co znacznie poprawiło renderowanie treści w X11 i Wayland. Dodatkowo dodano timer, aby zminimalizować opóźnienia pomiędzy utworzeniem obrazu a jego wyświetleniem na ekranie.
  • Zaimplementowano rozszerzenie protokołu Wayland”widz„, umożliwiając klientowi wykonanie skalowania i przycinania krawędzi powierzchni po stronie serwera. W połączeniu z następną główną wersją XWayland, rozszerzenie zapewni możliwość emulacji zmian rozdzielczości ekranu w starszych grach.
  • Pełna obsługa obracania i tworzenia kopii lustrzanych wyników dla sesji opartych na Wayland.

Wrapland zapewnia interfejs programistyczny w stylu Qt, który zapewnia dostęp do funkcji libwayland w formie łatwej do użycia w projektach C++. Pierwotnie Wrapland miał zostać opracowany jako rozwidlenie KWayland, ale ze względu na niezadowalający stan kodu KWayland, obecnie rozważa się go jako projekt mający na celu całkowitą przebudowę KWayland. Najważniejszą różnicą pomiędzy Wraplandem i KWaylandem jest to, że nie jest on już powiązany z Qt i może być używany oddzielnie, bez konieczności instalowania Qt. W przyszłości Wrapland może być używany jako uniwersalna biblioteka z API C++, eliminując potrzebę korzystania przez programistów z API libwayland C.

Gotowe pakiety tworzone są dla użytkowników Manjaro Linux. Aby używać KWinFT, wystarczy zainstalować kwinft z repozytorium, a aby powrócić do standardowego KWin, zainstaluj pakiet kwin. Korzystanie z Wrapland nie ogranicza się do KDE, na przykład przygotowano implementację klienta do użycia w wlroots protokół kontroli wyjścia, pozwalający na serwery złożone oparte na wlroots (Kołysać, Ogień) użyj KScreen, aby dostosować wynik.

Tymczasem kontynuować aktualizacje projektu zostaną opublikowane KWin-niskie opóźnienie, tworząc edycję menedżera złożonego KWin z poprawkami zwiększającymi responsywność interfejsu i naprawiającymi niektóre problemy związane z szybkością reakcji na działania użytkownika, takie jak zacinanie się wprowadzania danych. Oprócz DRM VBlank, KWin-lowlatency obsługuje glXWaitVideoSync, glFinish lub NVIDIA VSync w celu zapewnienia ochrony przed rozrywaniem bez negatywnego wpływu na responsywność (oryginalna ochrona przed rozdzieraniem KWin jest realizowana za pomocą timera i może prowadzić do dużych opóźnień (do 50 ms) sygnału wyjściowego i w rezultacie opóźnienie reakcji na wejście). Zamiast standardowego serwera kompozytowego w KDE Plasma 5.18 można używać nowych wersji KWin-lowlatency.

Źródło: opennet.ru

Dodaj komentarz