04.07.2022

Представлен wxrd, композитный сервер на базе Wayland для систем виртуальной реальности

Компания Collabora представила композитный сервер wxrd, реализованный на базе протокола Wayland и предназначенный для формирования рабочего стола на базе компонентов xrdesktop внутри трёхмерных окружений виртуальной реальности. В качестве основы используется библиотека wlroots, развиваемая разработчиками пользовательского окружения Sway, и композитный сервер wxrc, рассчитанный на использование в системах виртуальной реальности. Код проекта написан на языке Си и распространяется под лицензией MIT.

В отличие от изначально предложенного в xrdesktop решения, wxrd предлагает специализированный композитный сервер для окружений виртуальной реальности, вместо адаптации для VR-систем существующих оконных менеджеров и оболочек рабочего стола (проектом xrdesktop предоставляются отдельные патчи к kwin и GNOME Shell, которые требуют адаптации для каждого нового выпуска данных компонентов). Применение wxrd позволяет не просто отзеркаливать содержимое существующего двумерного рабочего стола, в это же время показываемого на обычном мониторе, а отдельно обрабатывать окна, специально запущенные для трёхмерного рабочего стола (т.е. не предоставить доступ из VR-шлема к используемому на текущей системе рабочему столу, а сформировать отдельное окружение для VR-шлема).

[embedded content]

В отличие от похожих проектов Simula VR, Stardust, Motorcar и Safespaces, композитный сервер wxrd создан с оглядкой на использование минимального числа зависимостей и небольшое потребление ресурсов. Wxrd также позволяет работать не только с приложениями на базе протокола Wayland и даёт возможность при помощи DDX-сервера xwayland запускать X11-приложения.

Так как расширение протокола Wayland для виртуальных клавиатур находится на стадии разработки, ввод данных в wxrd реализован через систему эмуляции клавиатурного ввода, выполняющую передачу всех unicode-символов, включая emoji, из предоставляемой в xrdesktop виртуальной клавиатуры. Для работы wxrd требуется видеокарта с поддержкой графического API Vulkan и расширения VK_EXT_image_drm_format_modifier, поддерживаемого в Mеsa начиная с выпуска 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.

[embedded content] Источник.