Monado Integration Dataflow
The dataflow for the ILLIXR Monado integration comprises two steps:
In Monado, ILLIXR is recognized as an HMD for Monado, while in ILLIXR, Monado looks like a user application (
such as vkdemo
). After ILLIXR is initialized from Monado, and Monado is registered as a plugin for
ILLIXR, the most recent pose information can be easily obtained via the switchboard.
The compositor side of Monado integration with ILLIXR is implemented more subtly. The original Monado compositor primarily performs distortion correction and aberration correction in a Vulkan back-end compositor. The compositor also has one, Vulkan based, client compositor which passes frame data to the back-end compositor.
The current ILLIXR integration for Monado is a temporary solution and has some drawbacks caused by the concurrent and continued development from both the Monado and ILLIXR projects. The integration:
-
Does not use the pose that user application declares to use at rendering (using the OpenXR specification). This is due to incongruence with Monado's internal interfaces and representations. The pose difference used by
timewarp_vk
is computed using the most recent query for a pose update. -
Cannot submit frame data with a depth buffer.
-
Cannot have poses that make use of OpenXR Spaces. Raw pose data is instead retrieved from the application's SLAM algorithms.
-
Does not support controller action.
-
User-space applications cannot acquire more than one swap chain buffer for each eye during the processing of a frame.
-
Must initialize ILLIXR during the session initialization.