Conheça wxrd, um compositor autônomo de Wayland para xrdesktop

Conheça wxrd, um compositor autônomo de Wayland para xrdesktop
Conheça wxrd, um compositor autônomo de Wayland para xrdesktop

O Wayland tem se tornado padrão quando falamos em sistemas operacionais Linux. Isso tudo graças a um importante trabalho da equipe Collabora em torno do desenvolvimento deste recurso. Desde o início, um caso de uso importante para o xrdesktop era que os aplicativos que já estavam em execução na área de trabalho 2D deveriam estar perfeitamente disponíveis em VR com o toque de um botão. Embora seja possível implementar algo assim de uma forma agnóstica de desktop com pura prova de conceito xlib/xcb: x3d, por razões de desempenho e robustez optamos pela integração de código em gerenciadores de janela. Normalmente, os gerenciadores de janela têm uma abstração interna das janelas que gerenciam que é muito mais fácil de consumir de forma confiável do que o protocolo X11 bruto. Então, conheça wxrd, um compositor autônomo de Wayland para xrdesktop.

As primeiras duas integrações do gerenciador de janelas com as quais começamos eram um patchset para gnome-shell e um plugin kwin. A abordagem de integração do gerenciador de janelas infelizmente sofre várias desvantagens.

Mais importante, entretanto, nem todo mundo está executando o kwin ou gnome-shell, e adicionar integração em mais e mais gerenciadores de janela resultaria em uma bagunça insustentável.

Cada gerenciador de janelas é enviado em uma versão diferente em distribuições diferentes também. O patchset do gnome-shell precisa ser ajustado para cada mudança de versão principal. O plug-in kwin precisa ser compilado para uma versão kwin específica, o que significa que um PPA do Ubuntu com uma versão KDE atualizada quebraria uma versão empacotada do plug-in.

Embora a capacidade de espelhar aplicativos 2D já em execução sem bom desempenho tenha sido um recurso exclusivo do xrdesktop, que é apreciado por nossos usuários e ainda será mantido, também ouvimos muitas vozes que desejam uma solução XR mais nativa, especialmente olhando para autônomo dispositivos.

Conheça wxrd, um compositor autônomo de Wayland para xrdesktop

Conheça wxrd, um compositor autônomo de Wayland para xrdesktop

Como alternativa à integração do gerenciador de janelas, desenvolvemos um cliente autônomo baseado em wlroots e no wxrc compositor, que estava inativo até recentemente. wxrd segue uma abordagem semelhante à Simula VR (haskell, godot) ou Stardust (stereokit), em que o desktop XR é um aplicativo autônomo que não espelha as janelas existentes de um desktop 2D, mas mostra apenas as janelas em XR que foram explicitamente iniciadas em este desktop XR. Outros pioneiros notáveis são o automóvel, um compositor VR Wayland de Kwayland e espaços seguros, uma implementação totalmente personalizada do Wayland e do X11. O que diferencia o xrdesktop dessas alternativas é que a pilha de tecnologia do xrdesktop concentra-se em uma pequena pegada. Em vez de depender de grandes estruturas e bibliotecas, o xrdesktop com wxrd se concentra em dependências mínimas e em um escopo gerenciável.

O cliente autônomo wxrd é implementado como um compositor do Wayland, mas isso não significa que você precisa executar sua área de trabalho no Wayland para usá-lo. Wlroots suporta vários backends, por exemplo, seu backend X11 permite rodar compositores baseados em wlroots em uma janela de desktop X11.

Graças à implementação do xwayland do wlroots, não apenas o wxrd pode exibir os aplicativos do Wayland em VR, mas também os aplicativos do X11.

Existem grandes vantagens em executar um compositor autônomo em vez de uma integração do gerenciador de janelas 2D:

  • Quando executado em uma sessão do Wayland ou X11, o wlroots abre uma janela que fornece uma maneira fácil de capturar diretamente a entrada do teclado e do mouse e encaminhá-la para uma janela de RV específica. Trabalhos futuros incluirão UX baseada em teclado e mouse, além de entrada de controlador VR.
  • O Windows não é mais restrito pelas limitações de um desktop 2D e eles podem ser arbitrariamente grandes (embora atualmente o hardware esteja limitado ao tamanho máximo de uma textura Vulkan).
  • As janelas renderizadas em wxrd são executadas na taxa de atualização nativa do HMD, enquanto as janelas espelhadas com o gnome-shell e a integração kwin são executadas na taxa de atualização do monitor original em que são exibidas.
  • As fontes podem ser renderizadas em uma densidade de pixels ajustada para VR e não para o monitor conectado no momento.
  • Em ambientes onde nenhum monitor de área de trabalho, mas apenas um HMD está conectado, a execução de um gerenciador de janelas 2D não é desejável.

Algumas desvantagens:

  • Somente aplicativos que são iniciados especificamente para exibição neste compositor autônomo são mostrados em VR (por exemplo WAYLAND_DISPLAY=wayland-0), as janelas já em execução em sua área de trabalho 2D não serão espelhadas;
  • O suporte do fornecedor de gráficos Wayland pode ser limitado em implementações Vulkan como a da NVIDIA. Mesmo que ele suporte gbm e wlroots em geral, no momento da escrita VK_EXT_image_drm_format_modifier não é suportado, o que é necessário para compartilhar buffers de Wayland com Vulkan.

Demo

A Parte 1 mostra como o xwayland permite perfeitamente que os aplicativos X11 sejam executados. O glxgears está rodando a 144 frames por segundo, a taxa de atualização nativa do Valve Index usado na gravação deste vídeo.

A Parte 2 mostra xrgears (outro aplicativo OpenXR) sendo iniciado a partir do wxrd.

A Parte 3 demonstra como um teclado físico e o teclado VR podem ser usados para inserir texto em aplicativos. Mesmo personagens Unicode especiais como Emojis funcionam.

A Parte 4 demonstra como o foco da janela para entrada do teclado pode ser alterado apenas com o teclado físico, sem o uso de controladores VR. Isso estabelece a base técnica para UX com teclado e mouse, além de controladores de VR.

Para ter uma ideia mais completa deste recurso, acesse este link.

Acesse a versão completa
Sair da versão mobile