Przedstawiono wydanie pakietu wayland-protocols w wersji 1.49, zawierającego zestaw protokołów i rozszerzeń, które uzupełniają podstawowy protokół Wayland oraz zapewniają funkcje niezbędne do budowy serwerów kompozytowych i środowisk użytkownika.
W nowej wersji:
- Dodano eksperymentalny protokół xx-fractional-scale, umożliwiający skalowanie systemu logicznych współrzędnych, których wartości są określane przez liczby całkowite, w celu zwiększenia precyzji pozycjonowania i podniesienia rozdzielczości logicznych współrzędnych do pojedynczych pikseli. Taka możliwość rozwiązuje problem z ograniczoną rozdzielczością systemu logicznych współrzędnych, niewystarczającą do pozycjonowania na poziomie pojedynczych pikseli, co jest niezbędne do pełnej implementacji ułamkowego skalowania.
- Do protokołu „linux-dmabuf” dodano wsparcie dla systemów z wieloma GPU. W takich systemach klient może uzgodnić z kompozytorami serwerem który z GPU powinien być używany.
- W protokole color-management-v1 dodano wsparcie dla metadanych obrazów w formacie BT.2100 do zastosowań w kompozytowym serwerze specjalistycznych procesorach, które umożliwiają poprawne wyświetlanie treści HDR stworzonych dla systemu Windows.
Wszystkie protokoły przechodzą kolejno fazy rozwoju, testowania i stabilizacji. Po zakończeniu etapu rozwoju (kategoria „unstable”) protokół zostaje umieszczony w gałęzi „staging” i oficjalnie włączony do zestawu wayland-protocols, a po zakończeniu testów przeniesiony do kategorii stabilnych. Protokół z kategorii „staging” można już stosować w kompozytowych. serwerach i klientów, gdzie wymagana jest związana z nimi funkcjonalność. W przeciwieństwie do kategorii „unstable”, w „staging” wprowadzanie zmian naruszających kompatybilność jest zabronione, jednak w przypadku wystąpienia problemów i niedociągnięć podczas testów, nie wyklucza się zastąpienia nową znaczącą 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” — umożliwia klientowi działania związane ze skalowaniem i przycinaniem krawędzi powierzchni po stronie klienta. 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» — umożliwia przekazywanie fokusu pomiędzy różnymi powierzchniami pierwszego poziomu (na przykład za pomocą
xdg-activation jedno zastosowanie może przestawiać fokus na inne). - content-type — pozwala klientom na przesyłanie kompozytowi serwera informacji o wyświetlanym zawartości, które mogą być użyte do optymalizacji zachowania w zależności od zawartości, na przykład do ustalania specyficznych właściwości DRM, takich jak „typ treści”. Zadeklarowano wsparcie dla następujących typów treści: none (brak informacji o typie danych), photo (wyświetlanie cyfrowych zdjęć, wymagające minimalnej obróbki), video (wideo lub animacja, wymaga bardziej precyzyjnej synchronizacji, aby wyeliminować przycięcia) oraz game (uruchamianie gier, wymaga 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 (kompozytowej serwer musi wyświetlić zmianę zawartości w miarę możliwości w określonym 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 — oferuje możliwości zarządzania kolorem oraz wsparcie dla rozszerzonego zakresu dynamicznego jasności (HDR, High Dynamic Range). Dzięki dodanemu rozszerzeniu aplikacje klienckie mogą otrzymywać informacje o właściwościach urządzeń wyjściowych związanych z przekazem kolorów i przesyłać serwerowi kompozytowemu dane o właściwościach przekazu kolorów własnej zawartości. Na serwerze kompozytowym informacje te mogą być wykorzystywane do automatycznego zarządzania kolorem podczas wyświetlania zawartości na różnych urządzeniach wyjściowych, na przykład do konwersji zawartości w sposób odpowiedni do wyświetlania na monitorach HDR. Do opisu przestrzeni kolorów używane są profile ICC.
- 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.
- color-representation — określenie reprezentacji kolorów powierzchni Wayland. Klienci Wayland mogą przesyłać metadane niezbędne do określenia przezroczystości, modelu kolorów, subdyskretizacji i zakresu kwantyzacji, stosowane podczas konwersji bufora z danymi odpowiadającymi modelowi kolorów YCbCr na reprezentację RGB.
- ext-background-effect — stosowanie efektów do przezroczystych części powierzchni Wayland, takich jak rozmycie tła.
- pointer-warp — pozwala aplikacji na natychmiastowe przeniesienie wskaźnika do określonej pozycji.
- xdg-session-management — możliwości przywracania stanu i pozycji okien przerwanego sesji, na przykład po awaryjnym zakończeniu działania serwera kompozytowego lub aplikacji.
Protokół, który jest opracowywany w gałęzi „experimental”:
- xx-session-management — przywracanie stanu okien dla przerwanych sesji (na przykład po awaryjnym zakończeniu menedżera kompozytowego).
- xx-input-method — daje aplikacjom możliwość wdrażania metod wprowadzania tekstu dla serwerów kompozytowych oraz formowania wprowadzonego tekstu, co może być wykorzystywane na przykład do tworzenia wirtualnych klawiatur i nakładek IME (Input Method Editor) do obsługi wprowadzania.
- xx-text-input — umożliwia serwerom kompozytowym wdrażanie metod wprowadzania i przesyłanie tekstu do aplikacji. Protokół standaryzuje interakcję pomiędzy serwerem kompozytowym a aplikacjami i pozwala na zarządzanie takimi możliwościami, jak przesyłanie wprowadzanego tekstu, obsługa zdarzeń związanych ze zmianą fokusu wprowadzania oraz uwzględnianie specyfiki pól wprowadzania (język, zaznaczenie tekstu, typ zawartości).
- xx-cutouts — w celu uzyskania informacji o wycinkach na ekranie (na przykład obszarach pod przednią kamerę na ekranie smartfona).
- xx-zones — do tworzenia i dodawania okien najwyższego poziomu do «stref» — środowisk z własną przestrzenią współrzędnych. Protokół pozwala na organizację logicznego rozmieszczenia okien, w którym każde okno jest umieszczane w stosunku do innego okna.
- xx-keyboard-filter — do przechwytywania wybranych przez klienta zdarzeń klawiatury, zmiany zdarzeń wejściowych lub blokowania przekazywania określonych zdarzeń do powierzchni Wayland, na której ustawiony jest fokus wejścia.
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.
Źródło: opennet.ru
