Installation for Linux
Monado is an open source XR runtime delivering immersive experiences such as VR and AR on mobile, PC/desktop, and other devices. Monado aims to be a complete and conformant implementation of the OpenXR API made by Khronos. The project is currently being developed for GNU/Linux and aims to support other operating systems such as Windows in the near future.
About OpenXR and Monado.
Software that supports VR by using the OpenXR API requires two software packages to work:
OpenXR runtimes like Monado can be though of as “VR headset and VR controller drivers” and the OpenXR loader, analog to the Vulkan loader, is responsible for finding and connecting applications to this “driver” so that OpenXR applications do not need to interact directly with a runtime. Applications link to only the libopenxr_loader.so or .dll library and use the C headers provided by the OpenXR SDK.
More general background information about OpenXR and OpenXR runtimes can be found at About Runtimes.
The initial focus of Monado lies on desktop VR usage. In the future a main goal will be to bring Monado to mobile and standalone AR devices, but desktop VR support will remain an important aspect for Monado for the foreseeable future.
Monado Requirements.
Monado currently runs on Linux. A windows port is in progress.
The Monado compositor requires a Vulkan driver with the instance extensions:
- VK_KHR_external_fence_capabilities
- VK_KHR_external_memory_capabilities
- VK_KHR_external_semaphore_capabilities
- VK_KHR_get_physical_device_properties2
- VK_KHR_surface
For direct mode on Linux/X11
- VK_KHR_display
- VK_EXT_direct_mode_display
- VK_EXT_acquire_xlib_display
Device extensions:
- VK_KHR_dedicated_allocation
- VK_KHR_external_fence
- VK_KHR_external_fence_fd
- VK_KHR_external_memory
- VK_KHR_external_memory_fd
- VK_KHR_external_semaphore
- VK_KHR_external_semaphore_fd
- VK_KHR_get_memory_requirements2
- VK_KHR_swapchain
OpenXR applications using Vulkan are supported with all Vulkan drivers that support the listed extensions. In particular radv, intel anv and the nvidia proprietary driver are tested and confirmed to work.
OpenXR applications using OpenGL require an OpenGL driver with support for the GL_EXT_memory_object_fd
OpenGL extension. OpenGL applications are supported with radeonsi and the nvidia proprietary driver.
Intel does not currently support this extension in mainline mesa but there are WIP MRs for mesa/iris and for mesa/i965 that have been tested to work with Monado.
Running Monado with the amdvlk Vulkan driver
generally works but may not render OpenXR applications using OpenGL correctly.
Distribution packages.
Debian through OBS.
CI builds for buster.
Ubuntu packages.
The core packages are
- libopenxr-loader1
- This is libopenxr_loader.so library. OpenXR applications link to this library and can not be compiled/run without it.
- libopenxr-dev
- The OpenXR headers are required to compile OpenXR C/C++ applications.
- libopenxr1-monado
- The Monado OpenXR runtime
Useful packages:
- xr-hardware
- udev rules allowing users without root permissions to use XR hardware, installation is highly recommended
- libopenxr-utils
- OpenXR applications and demos, including the hello_xr example
openxr-layer-corevalidation
- OpenXR applications and demos, including the hello_xr example
- A validation layer for OpenXR. Can be enabled with the environment variable
XR_ENABLE_API_LAYERS=XR_APILAYER_LUNARG_core_validation
- openxr-layer-apidump
- Another layer that can dump all OpenXR calls an application makes to a file
- monado-cli, monado-gui
- See Tools for a detailed description.