Компания Collabora представи композитен сървър wxrd, реализиран на базата на протокола Wayland и предназначен за формиране на работен плот с компоненти xrdesktop в тримерни среди на виртуалната реалност. За основа се използва библиотеката wlroots, развивана от разработчиците на потребителската среда Sway, и композитният сървър wxrc, създаден за използване в системи за виртуална реалност. Кодът на проекта е написан на езика Си и се разпространява под лиценза MIT.
В отличие от първоначално предложеното в xrdesktop решение, wxrd предлага специализиран композитен сървър за среди на виртуалната реалност, вместо адаптация на съществуващите мениджъри на прозорци и десктоп обвивки (проектът xrdesktop предоставя отделни пачове за kwin и GNOME Shell, които изискват адаптация за всяко ново издание на тези компоненти). Използването на wxrd позволява не просто да се отразява съдържанието на съществуващия двумерен работен плот, показван на обикновен монитор, а отделно да се обработват прозорци, специално стартирани за тримерния работен плот (т.е. не предоставя достъп от VR шлема до текущия работен плот на системата, а да се формира отделна среда за VR шлема).

В отличие от подобни проекти Simula VR, Stardust, Motorcar и Safespaces, композитният сървър wxrd е създаден с внимание към използването на минимален брой зависимости и ниско потребление на ресурси. Wxrd също така позволява работа не само с приложения на базата на протокола Wayland и дава възможност чрез DDX сървър xwayland да стартирате X11 приложения.
Тъй като разширението на протокола Wayland за виртуални клавиатури е в етап на разработка, въвеждането на данни в wxrd се реализира чрез система за емулация на клавиатурен вход, която предава всички unicode символи, включително емоджита, от виртуалната клавиатура, предоставяна в xrdesktop. За работа с wxrd е необходима видеокарта с поддръжка на графичния API Vulkan и разширението VK_EXT_image_drm_format_modifier, поддържано в Mesa от версия 21.1 (включва се в Ubuntu 21.04). За използване на API Vulkan за рендериране е нужно разширението VK_EXT_physical_device_drmm, появило се в Mesa 21.2 (Ubuntu 21.10).
Предимства на използването на отделен композитен сървър за виртуални реалности вместо интеграция с двумерни мениджъри на прозорци, използвани за показване на традиционния работен плот:
- При стартиране в сесия на база Wayland или X11, библиотеката wlroots отваря прозорец, в който лесно можете да организирате захвата на клавиатурни входове и събития на мишката и да пренасочите този вход в определен прозорец в средата на виртуалната реалност. В бъдеще тази възможност се планира да се използва за организиране на вход не само чрез VR контролер, но и с обикновена клавиатура и мишка.
- Прозорците не са ограничени от рамките на двумерния работен плот и могат да имат произволен размер, ограничен само от максимално поддържаното от хардуера размер на текстури.
- Рендерирането на прозорци в wxrd се извършва с родната за 3D шлемовете (HMD) честота на обновяване на картината, докато за огледално отразяване на прозорци от обикновени мениджъри на прозорци се използва честотата, приложима за обновяване на информацията на стационарния монитор.
- Рендерирането на шрифтове може да се извършва с оглед на плътността на пикселите на 3D шлема, без да е свързано с плътността на пикселите на стационарния монитор.
- Възможно е използването на wxrd на системи, в които има само 3D шлем и липсва обичайната форма на монитор.
Недостатъци на отделен композитен сървър за VR:
- В VR среда се показват само приложения, специално стартирани за отделен композитен сървър, без възможност за преместване или огледално отразяване в VR среда на прозорци, вече отворени на традиционния работен плот (т.е. за да продължите работа с приложения, отворени на обикновения екран, ще трябва да ги рестартирате в отделна среда за 3D шлем).
- Поддръжката на Wayland може да бъде ограничена в реализациите на API Vulkan. Например, gbm и wlroots не могат да се използват с проприетарни драйвери на NVIDIA поради липсата на поддръжка на разширението VK_EXT_drm_format_modifier.

Източник: opennet.ru
