Wprowadzono wxrd, złożony serwer oparty na Wayland dla systemów rzeczywistości wirtualnej

Firma Collabora zaprezentowała złożony serwer wxrd, zaimplementowany w oparciu o protokół Wayland i przeznaczony do tworzenia desktopu w oparciu o komponenty xrdesktop w trójwymiarowych środowiskach wirtualnej rzeczywistości. Podstawą jest biblioteka wlroots, opracowana przez twórców środowiska użytkownika Sway oraz serwer kompozytowy wxrc, przeznaczony do wykorzystania w systemach rzeczywistości wirtualnej. Kod projektu napisany jest w języku C i jest rozpowszechniany na licencji MIT.

W przeciwieństwie do rozwiązania pierwotnie zaproponowanego w xrdesktop, wxrd oferuje wyspecjalizowany serwer złożony dla środowisk wirtualnej rzeczywistości, zamiast dostosowywać istniejące menedżery okien i powłoki pulpitu do systemów VR (projekt xrdesktop zapewnia osobne łatki dla kwin i powłoki GNOME, które wymagają adaptacji dla każdej nowej uwolnienie tych składników). Użycie wxrd pozwala nie tylko odzwierciedlić zawartość istniejącego dwuwymiarowego pulpitu, jednocześnie wyświetlaną na zwykłym monitorze, ale także osobno przetwarzać okna uruchomione specjalnie dla trójwymiarowego pulpitu (tj. nie zapewniać dostępu z kasku VR na pulpit używany na bieżącej tabeli systemowej, ale w celu utworzenia osobnego środowiska dla kasku VR).

W przeciwieństwie do podobnych projektów Simula VR, Stardust, Motorcar i Safespaces, serwer kompozytowy wxrd został stworzony z myślą o wykorzystaniu minimalnej liczby zależności i niskim zużyciu zasobów. Wxrd pozwala także na pracę nie tylko z aplikacjami opartymi na protokole Wayland, ale umożliwia uruchamianie aplikacji X11 przy wykorzystaniu serwera xwayland DDX.

Ponieważ rozszerzenie protokołu Wayland dla klawiatur wirtualnych jest w fazie rozwoju, wprowadzanie danych do wxrd jest realizowane poprzez system emulacji wprowadzania z klawiatury, który przesyła wszystkie znaki Unicode, w tym emoji, z klawiatury wirtualnej dostarczonej w xrdesktop. Aby uruchomić wxrd, potrzebujesz karty graficznej obsługującej API graficzne Vulkan i rozszerzenie VK_EXT_image_drm_format_modifier, obsługiwane w Mesie od wersji 21.1 (zawartej w Ubuntu 21.04). Korzystanie z API Vulkan do renderowania wymaga rozszerzenia VK_EXT_physical_device_drmm, wprowadzonego w Mesa 21.2 (Ubuntu 21.10).

Plusy wykorzystania osobnego serwera kompozytowego dla systemów rzeczywistości wirtualnej zamiast integracji z menedżerami okien XNUMXD używanymi do wyświetlania tradycyjnego pulpitu:

  • Po uruchomieniu w sesji opartej na Wayland lub X11 biblioteka wlroots otwiera okno, w którym można łatwo przechwytywać zdarzenia wprowadzane za pomocą klawiatury i myszy oraz przekierowywać te dane wejściowe do określonego okna w środowisku rzeczywistości wirtualnej. W przyszłości planują wykorzystać tę funkcję do organizowania danych wejściowych nie tylko za pomocą kontrolera VR, ale także za pomocą zwykłej klawiatury i myszy.
  • Okna nie są ograniczone ramką pulpitu XNUMXD i mogą mieć dowolny rozmiar, ograniczony jedynie maksymalnym rozmiarem tekstury obsługiwanym przez sprzęt.
  • Renderowanie okien w wxrd odbywa się z natywną częstotliwością odświeżania obrazu 3D na wyświetlaczu montowanym na głowie (HMD), natomiast podczas tworzenia kopii lustrzanych okien z konwencjonalnych menedżerów okien używana jest częstotliwość używana do aktualizacji informacji na stacjonarnym monitorze.
  • Czcionki mogą być renderowane z uwzględnieniem gęstości pikseli hełmu 3D, bez odniesienia do gęstości pikseli stacjonarnego monitora.
  • Można używać wxrd w systemach, które mają tylko zestaw słuchawkowy 3D i nie mają zwykłego monitora.

Wady oddzielnego serwera kompozytowego dla VR:

  • W środowisku VR wyświetlane są tylko aplikacje uruchomione specjalnie dla oddzielnego serwera kompozytowego, bez możliwości przeniesienia lub odbicia lustrzanego okien już otwartych na tradycyjnym pulpicie do środowiska VR (tzn. aby kontynuować pracę z aplikacjami otwartymi na zwykłym ekranie, należy będzie musiał zostać uruchomiony ponownie w oddzielnym środowisku dla kasku 3D).
  • Obsługa Waylanda może być ograniczona w przypadku implementacji Vulkan API. Na przykład gbm i wlroots nie mogą być używane z zastrzeżonymi sterownikami NVIDIA ze względu na brak obsługi rozszerzenia VK_EXT_drm_format_modifier.



Źródło: opennet.ru

Dodaj komentarz