L'azienda Collabora ha presentato il server composito wxrd, basato sul protocollo Wayland e progettato per creare un desktop basato sui componenti xrdesktop all'interno di ambienti virtuali tridimensionali. Come base viene utilizzata la libreria wlroots, sviluppata dagli sviluppatori dell'ambiente desktop Sway, e il server composito wxrc, progettato per l'uso in sistemi di realtà virtuale. Il codice del progetto è scritto in linguaggio C e distribuito con licenza MIT.
A differenza della soluzione inizialmente proposta in xrdesktop, wxrd offre un compositore specializzato server per ambienti di realtà virtuale, invece di adattare i gestori di finestre e le shell desktop esistenti per i sistemi VR (il progetto xrdesktop fornisce patch separate per kwin e GNOME Shell, che richiedono un adattamento per ogni nuova versione di questi componenti). L'uso di wxrd consente di non limitarsi a rispecchiare il contenuto di un desktop bidimensionale esistente, visualizzato allo stesso tempo su un normale monitor, ma di elaborare separatamente le finestre, specificamente avviate per il desktop tridimensionale (cioè non fornire accesso dal visore VR al desktop in uso sul sistema attuale, ma creare un ambiente separato per il visore VR).

A differenza di progetti simili come Simula VR, Stardust, Motorcar e Safespaces, il server composito wxrd è stato creato tenendo conto dell'uso di un numero minimo di dipendenze e di un basso consumo di risorse. Wxrd consente inoltre di lavorare non solo con applicazioni basate sul protocollo Wayland e offre la possibilità di eseguire applicazioni X11 tramite il server DDX xwayland.
Poiché l'estensione del protocollo Wayland per le tastiere virtuali è in fase di sviluppo, l'immissione dei dati in wxrd è realizzata tramite un sistema di emulazione dell'input da tastiera, che esegue la trasmissione di tutti i caratteri unicode, inclusi gli emoji, dalla tastiera virtuale fornita in xrdesktop. Per funzionare, wxrd richiede una scheda grafica che supporti l'API grafica Vulkan e l'estensione VK_EXT_image_drm_format_modifier, supportata in Mesa a partire dalla versione 21.1 (inclusa in Ubuntu 21.04). Per utilizzare l'API Vulkan per il rendering è necessaria l'estensione VK_EXT_physical_device_drmm, disponibile in Mesa 21.2 (Ubuntu 21.10).
Vantaggi dell'uso di un compositore separato server per i sistemi di realtà virtuale invece di integrare con i gestori di finestre bidimensionali utilizzati per visualizzare il desktop tradizionale:
- All'avvio in una sessione basata su Wayland o X11, la libreria wlroots apre una finestra in cui è possibile organizzare facilmente la cattura degli input da tastiera e degli eventi del mouse e reindirizzare tali input a una finestra specifica nell'ambiente di realtà virtuale. In futuro, questa funzionalità sarà utilizzata per gestire l'input non solo tramite il controller VR, ma anche tramite una normale tastiera e un mouse.
- Le finestre non sono limitate ai confini del desktop bidimensionale e possono avere dimensioni arbitrarie, limitate solo dalla dimensione massima delle texture supportate dall'hardware.
- Il rendering delle finestre in wxrd avviene alla frequenza di aggiornamento nativa per i visori 3D (HMD), mentre durante il mirroring delle finestre da gestori di finestre tradizionali viene utilizzata la frequenza applicata per l'aggiornamento delle informazioni su un monitor fisso.
- Il rendering dei caratteri può essere effettuato tenendo conto della densità dei pixel del visore 3D, senza vincoli alla densità dei pixel del monitor fisso.
- È possibile utilizzare wxrd su sistemi in cui è presente solo un visore 3D e manca un monitor normale.
Svantaggi di un server composito separato per VR:
- Nell'ambiente VR vengono mostrate solo le applicazioni specificamente avviate per un server composito separato, senza possibilità di spostare o specchiare nell'ambiente VR le finestre già aperte sul desktop tradizionale (cioè, per continuare a lavorare con le applicazioni aperte su uno schermo normale, sarà necessario riavviarle in un ambiente separato per il visore 3D).
- Il supporto di Wayland potrebbe essere limitato nelle implementazioni dell'API Vulkan. Ad esempio, gbm e wlroots non possono essere utilizzati con i driver proprietari NVIDIA a causa della mancanza di supporto per l'estensione VK_EXT_drm_format_modifier.

Fonte: opennet.ru
