Wydanie Wayland-Protocols 1.44 i serwera kompozytowego Weston 14.0.2.

Opublikowano wersję pakietu wayland-protocols 1.44, zawierającą zestaw protokołów i rozszerzeń, które uzupełniają podstawowy protokół Wayland i oferują możliwości niezbędne do budowy serwerów kompozytowych oraz środowisk użytkownika.

W Wayland-Protocols 1.44 zaproponowano nowy protokół color-representation-v1 do określania reprezentacji kolorów powierzchni Wayland. Dzięki nowemu protokołowi klienci mogą przesyłać metadane niezbędne do określenia przezroczystości, modelu kolorów, subdyskretizacji oraz zakresu kwantyzacji, które są stosowane podczas konwersji bufora z danymi odpowiednimi dla modelu kolorów YCbCr na reprezentację RGB.

Wszystkie protokoły przechodzą kolejno fazy rozwoju, testowania i stabilizacji. Po zakończeniu etapu rozwoju (kategoria «unstable») protokół trafia do gałęzi «staging» i zostaje oficjalnie włączony do zestawu wayland-protocols, a po zakończeniu testów przenosi się do kategorii stabilnych. Protokół z kategorii «staging» można już stosować w serwerach kompozytowych i klientach, gdzie wymagana jest związana z nimi funkcjonalność. W odróżnieniu od kategorii «unstable» w «staging» zakazane jest wprowadzanie zmian, które naruszają kompatybilność, ale w przypadku wykrycia problemów i niedociągnięć w trakcie testów, nie wyklucza się zastąpienia go nową, znaczną wersją protokołu lub innym rozszerzeniem Wayland.

Aby przyspieszyć dostarczanie protokołów do deweloperów i stymulować ich wczesną implementację w istniejących projektach, od przedostatniego wydania dodatkowo wprowadzono fazę «experimental», w której dopuszcza się wprowadzanie zmian naruszających kompatybilność oraz dodawanie «surowych» protokołów, które można stopniowo udoskonalać. Jeśli dla wprowadzenia protokołu do fazy «staging» konieczne jest skonformowanie zespołu wsparcia i uzyskanie określonej liczby potwierdzeń (ACK) od uczestników przeglądów, to dla wprowadzenia go do «experimental» wystarczy brak sprzeciwu (NACK) w ciągu dwutygodniowego okresu przeglądu.

Obecnie zestaw wayland-protocols obejmuje następujące stabilne protokoły, w których zapewniona jest wsteczna kompatybilność:

  • «viewporter» — pozwala klientowi na wykonywanie działań związanych z powiększaniem i przycinaniem krawędzi powierzchni po stronie serwera.
  • «presentation-time» — zapewnia wyświetlanie wideo.
  • «xdg-shell» — interfejs do tworzenia i interakcji z powierzchniami jako oknami, pozwalający na ich przesuwanie po ekranie, minimalizowanie, maksymalizowanie, zmianę rozmiaru itd.
  • «linux-dmabuf» — dostarcza możliwości tworzenia wl_bufferów opartych na DMA-BUF.
  • «tablet» — organizacja wejścia z tabletów graficznych.

Protokoły testowane w gałęzi «staging»:

  • drm-lease — zapewnia zasoby niezbędne do tworzenia stereo obrazu z różnymi buforami dla lewego i prawego oka przy wyjściu na hełmy VR.
  • «ext-session-lock» — definiuje środki blokady sesji, na przykład podczas działania wygaszacza ekranu lub wyświetlania dialogu autoryzacji.
  • «single-pixel-buffer» — pozwala na tworzenie jednopikselowych buforów, zawierających cztery 32-bitowe wartości RGBA.
  • «xdg-activation» — pozwala na przekazywanie fokusów między różnymi powierzchniami pierwszego poziomu (na przykład za pomocą xdg-activation jedna aplikacja może przełączyć fokus na inną).
  • content-type — pozwala klientom na przekazywanie serwerowi kompozytowemu informacji o wyświetlanym zawartości, które mogą być używane do optymalizacji zachowania w kontekście zawartości, na przykład ustalania specyficznych właściwości DRM, takich jak «content type». Zgłoszono wsparcie dla następujących typów zawartości: none (brak informacji o typie danych), photo (wyświetlanie zdjęć cyfrowych, wymagających minimalnej obróbki), video (wideo lub animacja, wymagająca dokładniejszej synchronizacji, aby uniknąć zacięć) oraz game (uruchamianie gier, wymagające wyjścia z minimalnym opóźnieniem).
  • ext-idle-notify — umożliwia serwerom kompozytowym przekazywanie klientom powiadomień o braku aktywności użytkownika, co może być używane do aktywacji dodatkowych trybów oszczędzania energii po określonym czasie braku aktywności.
  • tearing-control — pozwala wyłączyć synchronizację pionową (VSync) w aplikacjach pełnoekranowych za pomocą impulsu wygaszającego, stosowanego w celu ochrony przed pojawianiem się zjawiska zerwania obrazu (tearing). W aplikacjach multimedialnych pojawianie się artefaktów z powodu zerwań jest niepożądanym efektem, jednak w programach gier można się z nimi pogodzić, jeśli ich eliminacja prowadzi do dodatkowych opóźnień.
  • ext-foreign-toplevel-list — umożliwia uzyskanie informacji o powierzchniach umieszczonych na samym szczycie (toplevel), które pozwalają na organizację przypinania okien nad inną zawartością, na przykład do podłączenia własnych paneli i przełączników okien.
  • security-context — pozwala identyfikować klientów korzystających z izolacji sandbox. Klient może zarejestrować nowe połączenie z kompozytowym serwerem opartym na Wayland i przypisać mu kontekst bezpieczeństwa, po czym na podstawie wskazanego kontekstu bezpieczeństwa kompozytowy menedżer ograniczy możliwości dostępne dla ustalonego połączenia.
  • cursor-shape — alternatywny sposób dostosowywania wyglądu kursora, oparty na przesyłaniu serii obrazów kursora zamiast przypinania do powierzchni (wl_surface).
  • «ext-transient-seat» — przeznaczony do tworzenia tymczasowych, niezależnych sesji (seat), zaprojektowanych do użytku z wirtualnymi urządzeniami wejściowymi. Na przykład przy implementacji możliwości podłączania do zdalnego pulpitu protokół pozwala stworzyć dla każdego użytkownika osobną sesję z wirtualną klawiaturą i myszą.
  • «xdg-toplevel-drag» — rozszerza mechanizm „drag & drop” o możliwość przypinania okien górnego poziomu do operacji przenoszenia, co może być wykorzystane, na przykład, do organizowania przeciągania paneli narzędziowych lub kart przeglądarki. Nowy protokół umożliwia tworzenie odłączanych części okna, które podczas przeciągania z tego okna stają się nowymi oknami i mogą być przenoszone nad istniejącym oknem przed ponownym przypięciem.
  • «xdg-dialog» — pozwala przypisywać górnym powierzchniom cechy specyficzne dla okien dialogowych, na przykład można tworzyć dialogi modalne, które blokują interakcję użytkownika z pozostałą częścią interfejsu.
  • «linux-drm-syncobj» — zapewnia narzędzia do jawnej synchronizacji buforów przy użyciu obiektów synchronizacji DRM (Direct Rendering Manager). Zakłada się, że w kontekście synchronizacji podczas renderowania do bufora proponowany protokół poprawi działanie z driverami opartymi na graficznych API Vulkan i OpenGL (wdrożenie oparte na handlerach w driverach). Nowy protokół umożliwia upewnienie się, że operacja renderowania do bufora jest zakończona, zanim menedżer kompozycji wyświetli ten bufor.
  • alpha-modifier, umożliwiający klientom zmianę poziomu przezroczystości powierzchni i przenoszenie operacji umożliwiających przezroczystość na stronę serwera kompozytowego, który z kolei może przekazywać te operacje KMS.
  • xdg-toplevel-icon — przypisanie ikony do okna najwyższego poziomu.
  • ext-image-capture-source i ext-image-copy-capture — organizacja przechwytywania treści wyświetlanej na ekranie.
  • xdg-system-bell — pozwala na wyświetlanie sygnału systemowego, który może być używany, na przykład, jako ostrzeżenie w emulatorze terminali. Forma wyświetlania sygnału jest określana według uznania menedżera kompozycji, może to być nie tylko dźwięk, ale również odpowiedź wizualna.
  • fifo — implementuje mechanizm FIFO (pierwszy przyszedł — pierwszy wyszedł) do przetwarzania kolejki aktualizacji zawartości wyświetlanej powierzchni. Z praktycznego punktu widzenia protokół pozwala na wykorzystanie oczekiwania na zakończenie pionowego odświeżania (vblank) zamiast wywoływania callbacków przy każdej gotowości do wyświetlenia nowej klatki, co rozwiązuje problem wysokiego obciążenia GPU przy użyciu VSync.
  • commit-timing — umożliwia powiązanie ograniczenia czasowego z zawartością powierzchni (serwer kompozycji powinien wyświetlić zmianę zawartości w możliwie najkrótszym czasie, ale nie wcześniej).
  • ext-data-control — pozwala dla przywilejowanych klientów zarządzać przetwarzaniem danych, na przykład do realizacji menedżerów schowka.
  • ext-workspace — wdraża koncepcję wirtualnych pulpitów i oferuje zdarzenia z informacjami o stanie pulpitów, a także możliwości aktywacji i dezaktywacji pulpitów. Protokół może być stosowany do tworzenia paneli i wskaźników, które wyświetlają listę dostępnych wirtualnych pulpitów i umożliwiają przełączanie między nimi.
  • color-management — zapewnia możliwości zarządzania kolorem oraz wsparcie dla rozszerzonego zakresu dynamiki jasności (HDR, High Dynamic Range). Dzięki dodanemu rozszerzeniu aplikacje klienckie mogą uzyskiwać informacje o związanych właściwościach urządzeń wyjściowych dotyczących reprodukcji kolorów i przekazywać serwerowi kompozycji dane o właściwościach reprodukcji kolorów własnej zawartości. W kompozycji serwerze ta informacja może być wykorzystywana do automatycznego zarządzania kolorem podczas wyświetlania treści na różnych urządzeniach wyjściowych, na przykład do przekształcania zawartości w formę odpowiednią do wyświetlania na monitorach HDR. Profile ICC są używane do opisu przestrzeni kolorów.
  • xdg-toplevel-tag — pozwala klientom Wayland na przypisywanie znaczników do powierzchni na najwyższym poziomie, które serwer kompozytowy może wykorzystać do identyfikacji okien po ponownym uruchomieniu aplikacji (na przykład, aplikacja może ustawić znaczniki „main window” oraz „settings” dla głównego okna i okna z ustawieniami). Tego typu identyfikacja jest przydatna do przywracania pozycji, rozmiaru i właściwości okien po ich ponownym uruchomieniu, a także do określania specjalnych zasad dla poszczególnych typów okien.

Protokół, który jest rozwijany w gałęzi «unstable»:

  • «fullscreen-shell» — zarządzanie pracą w trybie pełnoekranowym.
  • «input-method» — obsługa metod wprowadzania.
  • «idle-inhibit» — blokada uruchamiania wygaszacza ekranu (ekranowej zasłony).
  • «input-timestamps» — znaczniki czasowe dla zdarzeń wejściowych.
  • «keyboard-shortcuts-inhibit» — zarządzanie przypinaniem kombinacji klawiszowych i skrótów klawiszowych.
  • «linux-explicit-synchronization» — specyficzny dla Linux mechanizm synchronizacji buforów związany z powierzchnią.
  • «pointer-gestures» — zarządzanie gestami z ekranów dotykowych.
  • «pointer constraints» — ograniczenia wskaźników (blokada).
  • «primary-selection» — podobnie jak w X11 zapewnia działanie pierwszego bufora wymiany (primary selection), z którego wstawianie informacji zazwyczaj odbywa się za pomocą środkowego przycisku myszy.
  • «relative pointer events» — względne zdarzenia wskaźników.
  • «text-input» — organizacja wprowadzania tekstu.
  • «xdg-foreign» — interfejs interakcji z powierzchniami „sąsiedniego” klienta.
  • «xdg-decoration» — renderowanie dekoracji okien po stronie serwera.
  • «xdg-output» — dodatkowe informacje o wyjściu wideo (używane do skalowania niecałkowitego).
  • «xwayland-keyboard-grab» — przechwytywanie wejścia w aplikacjach XWayland.

Dodatkowo warto wspomnieć o aktualizacji projektu Weston 14.0.2, który rozwija standardowy serwer kompozytowy, skoncentrowany na zapewnieniu wysokiej jakości bazy kodu oraz przykładów do użycia Wayland w środowiskach desktopowych i na platformach wbudowanych. W nowej wersji Weston, poza poprawkami błędów, wprowadzono możliwość zbudowania backendu VNC do zdalnego dostępu do pulpitu z nową wersją biblioteki neatvnc.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster