From a641ce89551807ba72b7b885c839ef7b27e7d9fd Mon Sep 17 00:00:00 2001 From: Christoph Haag Date: Tue, 5 Oct 2021 17:53:29 +0200 Subject: [PATCH] doc: Update Implementing OpenXR extensions Mention that oxr_xr* function prototypes go into src/xrt/state_trackers/oxr/oxr_api_funcs.h and move all other details after the bullet points about functions. --- doc/implementing-extensions.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/doc/implementing-extensions.md b/doc/implementing-extensions.md index 3e33ed848..fa2241c8a 100644 --- a/doc/implementing-extensions.md +++ b/doc/implementing-extensions.md @@ -16,16 +16,18 @@ The general steps to implement an OpenXR extension in Monado are as follows. `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 the `oxr_api_*` files, instead equivalents with - the prefix `XRT_` 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 with `oxr_`. -* Implement the Monado specific functions in an appropriate source file +* Add Monado internal prototypes for the new functions in + `src/xrt/state_trackers/oxr/oxr_api_funcs.h`. The Monado implementations of + OpenXR functions are prefixed with `oxr_` and use the `XRAPI_ATTR` and + `XRAPI_CALL` macros to satisfy calling conventions for all platforms. +* Implement the `oxr_` Monado internal 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 - relevant `oxr_*.c` file (without `_api_`). + relevant `oxr_*.c` file (without `_api_`). The definitions for those functions + go into `src/xrt/state_trackers/oxr/oxr_objects.h`. +* 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 typically not used outside of the `oxr_api_*` files, instead + equivalents with the prefix `XRT_` are defined here.