wxrd, a Wayland-based composite server for virtual reality systems, is introduced

Collabora introduced the wxrd composite server, implemented on the basis of the Wayland protocol and designed to form a desktop based on xrdesktop components inside XNUMXD virtual reality environments. It is based on the wlroots library, developed by the developers of the Sway user environment, and the wxrc composite server, designed for use in virtual reality systems. The project code is written in C and distributed under the MIT license.

Unlike the solution originally proposed in xrdesktop, wxrd offers a specialized composite server for virtual reality environments, instead of adapting existing window managers and desktop shells for VR systems (the xrdesktop project provides separate patches for kwin and GNOME Shell, which require adaptation for each new release of these components). The use of wxrd allows you not only to mirror the contents of an existing XNUMXD desktop that is displayed on a regular monitor at the same time, but to separately process windows specially launched for a XNUMXD desktop (i.e. not provide access from a VR helmet to the desktop used on the current system). table, but to form a separate environment for the VR helmet).

Unlike similar projects like Simula VR, Stardust, Motorcar and Safespaces, the wxrd composite server is designed with a minimum number of dependencies and low resource consumption in mind. Wxrd also allows you to work not only with applications based on the Wayland protocol and makes it possible to run X11 applications using the xwayland DDX server.

Since the Wayland protocol extension for virtual keyboards is under development, input to wxrd is implemented through a keyboard input emulation system that transfers all unicode characters, including emoji, from the virtual keyboard provided to xrdesktop. wxrd requires a graphics card that supports the Vulkan graphics API and the VK_EXT_image_drm_format_modifier extension supported by Mesa since release 21.1 (included with Ubuntu 21.04). Using the Vulkan API for rendering requires the VK_EXT_physical_device_drmm extension introduced in Mesa 21.2 (Ubuntu 21.10).

Pros of using a separate VR composite server instead of integrating with the XNUMXD window managers used to display the traditional desktop:

  • When run in a Wayland or X11 based session, the wlroots library opens a window where you can easily capture keyboard input and mouse events and redirect that input to a specific window in a VR environment. In the future, they plan to use this feature to organize input not only through a VR controller, but also using a conventional keyboard and mouse.
  • Windows are not limited to a XNUMXD desktop and can be arbitrarily sized, limited only by the maximum texture size supported by the hardware.
  • Windows are rendered in wxrd at the native 3D helmet (HMD) refresh rate, while window mirroring from conventional window managers uses the rate used to update information on a stationary monitor.
  • Font rendering can be performed taking into account the pixel density of the 3D helmet, without reference to the pixel density of a stationary monitor.
  • It is possible to use wxrd on systems that only have a 3D helmet and no regular monitor.

Cons of a separate composite server for VR:

  • The VR environment only shows applications that are specifically launched for a separate composite server, without the ability to transfer or mirror windows already open on the traditional desktop to the VR environment (i.e., to continue working with applications open on a normal screen, you will have to restart in a separate environment for the 3D helmet).
  • Wayland support may be limited in implementations of the Vulkan API. For example, gbm and wlroots cannot be used with proprietary NVIDIA drivers due to lack of support for the VK_EXT_drm_format_modifier extension.



Source: opennet.ru

Add a comment