A empresa Collabora apresentou o servidor compositor wxrd, implementado com base no protocolo Wayland e destinado à formação de um desktop utilizando componentes xrdesktop dentro de ambientes tridimensionais de realidade virtual. Como base, é utilizada a biblioteca wlroots, desenvolvida pelos criadores do ambiente de usuário Sway, e o servidor compositor wxrc, projetado para uso em sistemas de realidade virtual. O código do projeto é escrito em C e distribuído sob licença MIT.
Diferentemente da solução inicialmente proposta no xrdesktop, o wxrd oferece um compositor especializado servidor para ambientes de realidade virtual, em vez de adaptar gerenciadores de janelas e shells de desktop existentes para sistemas VR (o projeto xrdesktop fornece patches separados para kwin e GNOME Shell, que exigem adaptações para cada nova versão desses componentes). A utilização do wxrd permite não apenas espelhar o conteúdo de um desktop 2D existente, mostrado ao mesmo tempo em um monitor comum, mas também processar separadamente as janelas especificamente lançadas para o desktop tridimensional (ou seja, não fornecer acesso do headset VR ao desktop atualmente em uso no sistema, mas criar um ambiente separado para o headset VR).

Diferentemente de projetos semelhantes como Simula VR, Stardust, Motorcar e Safespaces, o servidor compositor wxrd foi criado com o objetivo de usar o mínimo de dependências e consumir poucos recursos. O wxrd também permite trabalhar não apenas com aplicativos baseados no protocolo Wayland e oferece a possibilidade de usar o servidor DDX xwayland para iniciar aplicativos X11.
Como a extensão do protocolo Wayland para teclados virtuais ainda está em desenvolvimento, a entrada de dados no wxrd é realizada através de um sistema de emulação de entrada de teclado, que transmite todos os caracteres unicode, incluindo emojis, do teclado virtual fornecido no xrdesktop. Para trabalhar com o wxrd, é necessário ter uma placa de vídeo que suporte a API gráfica Vulkan e a extensão VK_EXT_image_drm_format_modifier, suportada no Mesa a partir da versão 21.1 (que faz parte do Ubuntu 21.04). Para usar a API Vulkan para renderização, é necessário a extensão VK_EXT_physical_device_drmm, que apareceu no Mesa 21.2 (Ubuntu 21.10).
Vantagens do uso de um compositor separado servidor para sistemas de realidade virtual em vez de integração com gerenciadores de janelas 2D, utilizados para exibir a área de trabalho tradicional:
- Ao ser iniciado em uma sessão baseada em Wayland ou X11, a biblioteca wlroots abre uma janela na qual é possível organizar facilmente a captura de entrada do teclado e eventos do mouse e redirecionar essa entrada para uma determinada janela no ambiente de realidade virtual. No futuro, essa funcionalidade está prevista para ser usada para organizar a entrada não apenas através de controladores VR, mas também com um teclado e mouse comuns.
- As janelas não são limitadas às proporções da área de trabalho 2D e podem ter tamanhos arbitrários, restritos apenas pelo tamanho máximo de textura suportado pelo hardware.
- A renderização de janelas no wxrd é feita na taxa de atualização nativa dos headsets 3D (HMD), enquanto a espelhamento de janelas de gerenciadores de janelas comuns utiliza a taxa aplicada para atualizar informações em monitores estacionários.
- A renderização de fontes pode ser feita considerando a densidade de pixels do headset 3D, sem estar vinculada à densidade de pixels do monitor estacionário.
- O wxrd pode ser usado em sistemas que possuem apenas um headset 3D e não têm um monitor comum.
Desvantagens de um servidor compositor separado para VR:
- No ambiente VR, apenas aplicativos especificamente iniciados para o servidor compositor separado são exibidos, sem a possibilidade de mover ou espelhar janelas já abertas na área de trabalho tradicional (ou seja, para continuar trabalhando com aplicativos abertos na tela comum, será necessário reiniciá-los em um ambiente separado para o headset 3D).
- O suporte a Wayland pode ser limitado nas implementações da API Vulkan. Por exemplo, gbm e wlroots não podem ser usados com drivers proprietários da NVIDIA devido à falta de suporte para a extensão VK_EXT_drm_format_modifier.

Fonte: opennet.ru
