mirror of
https://github.com/lbgos/rift-s-linux.git
synced 2026-10-23 10:01:13 +02:00
1.5 KiB
1.5 KiB
Implementing OpenXR extensions
Khronos often adds new functionality to the OpenXR specification as extensions.
The general steps to implement an OpenXR extension in Monado are as follows.
- Edit scripts/generate_oxr_ext_support.py. Usually you only need to add an
entry to the
EXTENSIONSlist at the top. - Run the script
python scripts/generate_oxr_ext_support.py. - Format the regenerated file with
clang-format -i src/xrt/state_trackers/oxr/oxr_extension_support.h. - Add entry points for each new function in
src/xrt/state_trackers/oxr/oxr_api_negotiate.c. - Monado internal implementations of "objects" (think XrSession or
XrHandTracker) go into
src/xrt/state_trackers/oxr/oxr_objects.h. - Enums, defines and types go into
src/xrt/include/xrt/xrt_defines.h. OpenXR types are not used outside of theoxr_api_*files, instead equivalents with the prefixXRT_are defined here. - Add Monado specific prototypes for the new functions in
src/xrt/state_trackers/oxr/oxr_objects.h. The Monado implementations of OpenXR functions are prefixed withoxr_. - Implement the Monado specific functions in an appropriate source file
src/state_trackers/oxr/oxr_api_*.c. Trivial functions can be implemented right there along with the usual parameter checks. More complex functions that access more internal monado state should call functions implemented in the relevantoxr_*.cfile (without_api_).