Monado OpenXR Runtime
Monado Developer Documentation

This documentation is intended for developers wanting to dive into the code of Monado. It also assumes that you have read README.md: that file also holds getting started information and general documentation.

This documentation is maintained in part in documentation comments in the code itself, extracted and rendered by Doxygen. These extracted documentation pages are best browsed through the "Modules" or "Files" links above. (The directory structure matches the top levels of modules, but some are sub-divided further into sub-modules within a directory.)

There are also a number of pages in this site (including this one) that are maintained as fully human-authored Markdown files outside of source code files, but still in the repository in the doc/ directory. Some are linked below in a logical outline, and some documentation comments in code cross-reference these pages. See the "Related Pages" link above for a complete list of these non-code-based documentation pages. (Since they are not maintained in the source code files directly, they may sometimes be slightly out-of-date, so in case of conflict, the code-based documentation is correct. Please submit a merge request to fix any such issues you may notice.)

Changelog

Changelog for Monado

If you are viewing this on the web at https://monado.pages.freedesktop.org/monado/, the changelog above also includes a section for changes that have not yet been in a tagged release.

Developer Guides

Design Documentation

Monado is architected as a collection of loosely-coupled, internally cohesive components that interact through the internal, abstract "XRT" (XrRunTime) API. State Trackers consume implementations of these APIs provided by other modules.

The key interfaces to begin learning Monado are:

Here is the documentation for all XRT interfaces used to interact between modules.

Advanced Usage Information

Source layout

  • src/xrt/include - XRT interfaces defines the internal interfaces of Monado.
  • src/xrt/drivers - Hardware Drivers.
  • src/xrt/compositor - Compositor code for doing distortion and driving the display hardware of a device.
  • src/xrt/state_trackers/oxr - OpenXR state tracker, implements the OpenXR API.
  • src/xrt/state_trackers/gui - GUI Config Interface, various helper and debug GUI code.
  • src/xrt/auxiliary - Auxiliary and other larger components, like Tracking and Math.
  • src/xrt/targets - glue code and build logic to produce final binaries.
  • src/external - a small collection of external code and headers.