26#include "xrt/xrt_config_have.h"
36#include "oxr_extension_support.h"
54#if defined(XRT_HAVE_D3D11) || defined(XRT_HAVE_D3D12)
59#ifdef XRT_FEATURE_RENDERDOC
60#include "renderdoc_app.h"
94#define OXR_MAX_BINDINGS_PER_ACTION 32
106#define OXR_XRT_POSE_TO_XRPOSEF(FROM, TO) \
109 struct xrt_pose xrt; \
111 } safe_copy = {FROM}; \
112 TO = safe_copy.oxr; \
118#define OXR_XRT_FOV_TO_XRFOVF(FROM, TO) \
121 struct xrt_fov xrt; \
123 } safe_copy = {FROM}; \
124 TO = safe_copy.oxr; \
140static inline XrInstance
158 const XrInstanceCreateInfo *createInfo,
159 XrVersion major_minor,
175oxr_instance_get_properties(
struct oxr_logger *log,
177 XrInstanceProperties *instanceProperties);
185oxr_instance_convert_time_to_timespec(
struct oxr_logger *log,
188 struct timespec *timespecTime);
194oxr_instance_convert_timespec_to_time(
struct oxr_logger *log,
196 const struct timespec *timespecTime,
200#ifdef XR_USE_PLATFORM_WIN32
206oxr_instance_convert_time_to_win32perfcounter(
struct oxr_logger *log,
209 LARGE_INTEGER *win32perfcounterTime);
215oxr_instance_convert_win32perfcounter_to_time(
struct oxr_logger *log,
217 const LARGE_INTEGER *win32perfcounterTime,
231static inline XrActionSet
242static inline XrHandTrackerEXT
248#ifdef OXR_HAVE_EXT_plane_detection
254static inline XrPlaneDetectorEXT
255oxr_plane_detector_to_openxr(
struct oxr_plane_detector_ext *plane_detector)
266static inline XrAction
272#ifdef OXR_HAVE_HTC_facial_tracking
278static inline XrFacialTrackerHTC
279oxr_facial_tracker_htc_to_openxr(
struct oxr_facial_tracker_htc *face_tracker_htc)
285#ifdef OXR_HAVE_FB_body_tracking
291static inline XrBodyTrackerFB
292oxr_body_tracker_fb_to_openxr(
struct oxr_body_tracker_fb *body_tracker_fb)
298#ifdef OXR_HAVE_BD_body_tracking
304static inline XrBodyTrackerBD
305oxr_body_tracker_bd_to_openxr(
struct oxr_body_tracker_bd *body_tracker_bd)
311#ifdef OXR_HAVE_FB_face_tracking2
317static inline XrFaceTracker2FB
318oxr_face_tracker2_fb_to_openxr(
struct oxr_face_tracker2_fb *face_tracker2_fb)
324#ifdef OXR_HAVE_ANDROID_face_tracking
330static inline XrFaceTrackerANDROID
331oxr_face_tracker_android_to_openxr(
struct oxr_face_tracker_android *face_tracker_android)
349static inline XrSession
358 const XrSessionCreateInfo *createInfo,
362oxr_session_enumerate_formats(
struct oxr_logger *log,
364 uint32_t formatCapacityInput,
365 uint32_t *formatCountOutput,
368#ifdef OXR_HAVE_EXT_enumerate_swapchain_formats2
370oxr_session_enumerate_formats2(
struct oxr_logger *log,
372 XrSwapchainFormatsEnumerateInfoEXT *enumerateInfo,
373 uint32_t formatCapacityInput,
374 uint32_t *formatCountOutput,
385oxr_session_begin(
struct oxr_logger *log,
struct oxr_session *sess,
const XrSessionBeginInfo *beginInfo);
393XRT_CHECK_RESULT XrResult
397oxr_session_locate_views(
struct oxr_logger *log,
399 const XrViewLocateInfo *viewLocateInfo,
400 XrViewState *viewState,
401 uint32_t viewCapacityInput,
402 uint32_t *viewCountOutput,
425#ifdef OXR_HAVE_KHR_android_thread_settings
427oxr_session_android_thread_settings(
struct oxr_logger *log,
429 XrAndroidThreadTypeKHR threadType,
433#ifdef OXR_HAVE_KHR_visibility_mask
435oxr_session_get_visibility_mask(
struct oxr_logger *log,
437 XrVisibilityMaskTypeKHR visibilityMaskType,
439 XrVisibilityMaskKHR *visibilityMask);
442oxr_event_push_XrEventDataVisibilityMaskChangedKHR(
struct oxr_logger *log,
444 XrViewConfigurationType viewConfigurationType,
448#ifdef OXR_HAVE_EXT_performance_settings
450oxr_session_set_perf_level(
struct oxr_logger *log,
452 XrPerfSettingsDomainEXT domain,
453 XrPerfSettingsLevelEXT level);
475 const XrActionSpaceCreateInfo *createInfo,
479oxr_space_get_reference_bounds_rect(
struct oxr_logger *log,
481 XrReferenceSpaceType referenceSpaceType,
482 XrExtent2Df *bounds);
485oxr_space_reference_create(
struct oxr_logger *log,
487 const XrReferenceSpaceCreateInfo *createInfo,
512 XrSpaceLocations *locations);
526XRT_CHECK_RESULT XrResult
543XRT_CHECK_RESULT XrResult
556static inline XrSwapchain
572static inline XrDebugUtilsMessengerEXT
581 const XrDebugUtilsMessengerCreateInfoEXT *,
596 uint32_t system_count,
597 XrFormFactor form_factor,
617oxr_system_get_properties(
struct oxr_logger *log,
struct oxr_system *sys, XrSystemProperties *properties);
620oxr_system_enumerate_view_confs(
struct oxr_logger *log,
622 uint32_t viewConfigurationTypeCapacityInput,
623 uint32_t *viewConfigurationTypeCountOutput,
624 XrViewConfigurationType *viewConfigurationTypes);
627oxr_system_enumerate_blend_modes(
struct oxr_logger *log,
629 XrViewConfigurationType viewConfigurationType,
630 uint32_t environmentBlendModeCapacityInput,
631 uint32_t *environmentBlendModeCountOutput,
632 XrEnvironmentBlendMode *environmentBlendModes);
635oxr_system_get_view_conf_properties(
struct oxr_logger *log,
637 XrViewConfigurationType viewConfigurationType,
638 XrViewConfigurationProperties *configurationProperties);
641oxr_system_enumerate_view_conf_views(
struct oxr_logger *log,
643 XrViewConfigurationType viewConfigurationType,
644 uint32_t viewCapacityInput,
645 uint32_t *viewCountOutput,
646 XrViewConfigurationView *views);
658oxr_system_get_face_tracking_android_support(
struct oxr_logger *log,
struct oxr_instance *inst,
bool *supported);
661oxr_system_get_face_tracking_htc_support(
struct oxr_logger *log,
667oxr_system_get_face_tracking2_fb_support(
struct oxr_logger *log,
669 bool *supports_audio,
670 bool *supports_visual);
684XRT_CHECK_RESULT XrResult
694oxr_event_push_XrEventDataSessionStateChanged(
struct oxr_logger *log,
696 XrSessionState state,
700oxr_event_push_XrEventDataInteractionProfileChanged(
struct oxr_logger *log,
struct oxr_session *sess);
703oxr_event_push_XrEventDataReferenceSpaceChangePending(
struct oxr_logger *log,
705 XrReferenceSpaceType referenceSpaceType,
708 const XrPosef *poseInPreviousSpace);
710#ifdef OXR_HAVE_FB_display_refresh_rate
712oxr_event_push_XrEventDataDisplayRefreshRateChangedFB(
struct oxr_logger *log,
714 float fromDisplayRefreshRate,
715 float toDisplayRefreshRate);
718#ifdef OXR_HAVE_EXTX_overlay
720oxr_event_push_XrEventDataMainSessionVisibilityChangedEXTX(
struct oxr_logger *log,
725#ifdef OXR_HAVE_EXT_performance_settings
727oxr_event_push_XrEventDataPerfSettingsEXT(
struct oxr_logger *log,
730 enum xrt_perf_sub_domain subDomain,
735#ifdef OXR_HAVE_EXT_view_configuration_views_change
737oxr_event_push_XrEventDataViewConfigurationViewsChangedEXT(
struct oxr_logger *log,
762oxr_xdev_destroy(
struct xrt_device **xdev_ptr);
776#ifdef OXR_HAVE_MNDX_xdev_space
777static inline XrXDevListMNDX
778oxr_xdev_list_to_openxr(
struct oxr_xdev_list *sc)
786 const XrCreateXDevListInfoMNDX *createInfo,
787 struct oxr_xdev_list **out_xdl);
790oxr_xdev_list_get_properties(
struct oxr_logger *log,
791 struct oxr_xdev_list *xdl,
793 XrXDevPropertiesMNDX *properties);
796oxr_xdev_list_space_create(
struct oxr_logger *log,
797 struct oxr_xdev_list *xdl,
798 const XrCreateXDevSpaceInfoMNDX *createInfo,
804 struct oxr_xdev_list *xdl,
817#ifdef XR_USE_GRAPHICS_API_OPENGL
818#ifdef XR_USE_PLATFORM_XLIB
821oxr_session_populate_gl_xlib(
struct oxr_logger *log,
823 XrGraphicsBindingOpenGLXlibKHR
const *next,
827#ifdef XR_USE_PLATFORM_WIN32
829oxr_session_populate_gl_win32(
struct oxr_logger *log,
831 XrGraphicsBindingOpenGLWin32KHR
const *next,
836#if defined(XR_USE_GRAPHICS_API_OPENGL) || defined(XR_USE_GRAPHICS_API_OPENGL_ES)
840 const XrSwapchainCreateInfo * ,
845#if defined(XR_USE_GRAPHICS_API_OPENGL_ES)
846#if defined(XR_USE_PLATFORM_ANDROID)
848oxr_session_populate_gles_android(
struct oxr_logger *log,
850 XrGraphicsBindingOpenGLESAndroidKHR
const *next,
862#ifdef XR_USE_GRAPHICS_API_VULKAN
865oxr_vk_get_instance_exts(
struct oxr_logger *log,
867 uint32_t namesCapacityInput,
868 uint32_t *namesCountOutput,
874 uint32_t namesCapacityInput,
875 uint32_t *namesCountOutput,
879oxr_vk_get_requirements(
struct oxr_logger *log,
881 XrGraphicsRequirementsVulkanKHR *graphicsRequirements);
886 const XrVulkanInstanceCreateInfoKHR *createInfo,
887 VkInstance *vulkanInstance,
888 VkResult *vulkanResult);
893 const XrVulkanDeviceCreateInfoKHR *createInfo,
894 VkDevice *vulkanDevice,
895 VkResult *vulkanResult);
898oxr_vk_get_physical_device(
struct oxr_logger *log,
901 VkInstance vkInstance,
902 PFN_vkGetInstanceProcAddr getProc,
903 VkPhysicalDevice *vkPhysicalDevice);
906oxr_session_populate_vk(
struct oxr_logger *log,
908 XrGraphicsBindingVulkanKHR
const *next,
914 const XrSwapchainCreateInfo * ,
926#ifdef XR_USE_PLATFORM_EGL
929oxr_session_populate_egl(
struct oxr_logger *log,
931 XrGraphicsBindingEGLMNDX
const *next,
937 PFN_xrEglGetProcAddressMNDX getProcAddress,
938 EGLDeviceEXT *out_egl_device);
948#if defined(XRT_HAVE_D3D11) || defined(XRT_HAVE_D3D12) || defined(XRT_DOXYGEN)
954 D3D_FEATURE_LEVEL *min_feature_level);
967#ifdef XR_USE_GRAPHICS_API_D3D11
970oxr_d3d11_get_requirements(
struct oxr_logger *log,
972 XrGraphicsRequirementsD3D11KHR *graphicsRequirements);
984oxr_session_populate_d3d11(
struct oxr_logger *log,
986 XrGraphicsBindingD3D11KHR
const *next,
990oxr_swapchain_d3d11_create(
struct oxr_logger *,
992 const XrSwapchainCreateInfo *,
1003#ifdef XR_USE_GRAPHICS_API_D3D12
1006oxr_d3d12_get_requirements(
struct oxr_logger *log,
1008 XrGraphicsRequirementsD3D12KHR *graphicsRequirements);
1020oxr_session_populate_d3d12(
struct oxr_logger *log,
1022 XrGraphicsBindingD3D12KHR
const *next,
1026oxr_swapchain_d3d12_create(
struct oxr_logger *,
1028 const XrSwapchainCreateInfo *,
1047 XrViewConfigurationType view_config_type;
1049 uint32_t view_count;
1050 XrViewConfigurationView views[XRT_MAX_COMPOSITOR_VIEW_CONFIGS_VIEW_COUNT];
1052 uint32_t blend_mode_count;
1053 XrEnvironmentBlendMode blend_modes[3];
1086 XrSystemId systemId;
1091 bool view_config_mutex_created;
1093 uint32_t view_config_count;
1095 bool pending_view_config_update[XRT_MAX_COMPOSITOR_VIEW_CONFIGS_COUNT];
1096 timepoint_ns view_update_config_time[XRT_MAX_COMPOSITOR_VIEW_CONFIGS_COUNT];
1098 XrReferenceSpaceType reference_spaces[5];
1099 uint32_t reference_space_count;
1103#ifdef OXR_HAVE_MNDX_xdev_space
1104 bool supports_xdev_space;
1107#ifdef XR_USE_GRAPHICS_API_VULKAN
1123 bool external_fence_fd_enabled;
1124 bool external_semaphore_fd_enabled;
1125 bool timeline_semaphore_enabled;
1126 bool debug_utils_enabled;
1127 bool image_format_list_enabled;
1132#if defined(XR_USE_GRAPHICS_API_D3D11) || defined(XR_USE_GRAPHICS_API_D3D12)
1133 LUID suggested_d3d_luid;
1134 bool suggested_d3d_luid_valid;
1142#define MAKE_EXT_STATUS(mixed_case, all_caps) bool mixed_case;
1150 OXR_EXTENSION_SUPPORT_GENERATE(MAKE_EXT_STATUS)
1152#undef MAKE_EXT_STATUS
1154#define XRT_MAX_DEBUG_MESSENGERS 256
1169 struct u_debug_gui *debug_ui;
1303 bool lifecycle_verbose;
1306 bool debug_bindings;
1308#ifdef XRT_FEATURE_RENDERDOC
1309 RENDERDOC_API_1_4_1 *rdoc_api;
1312#ifdef XRT_OS_ANDROID
1353 XrSessionState state;
1371 bool compositor_visible;
1372 bool compositor_focused;
1376 int active_wait_frames;
1377 struct os_mutex active_wait_frames_lock;
1423 const XrSwapchainCreateInfo *,
1438static inline XrResult
1441 switch (session->state) {
1442 case XR_SESSION_STATE_LOSS_PENDING:
return XR_SESSION_LOSS_PENDING;
1443 default:
return XR_SUCCESS;
1453static inline XrResult
1456 switch (session->state) {
1457 case XR_SESSION_STATE_LOSS_PENDING:
return XR_SESSION_LOSS_PENDING;
1458 case XR_SESSION_STATE_FOCUSED:
return XR_SUCCESS;
1459 default:
return XR_SESSION_NOT_FOCUSED;
1463#ifdef OXR_HAVE_FB_display_refresh_rate
1589 size_t transform_count;
1630 int64_t stop_output_time;
1631 size_t output_count;
1668#define OXR_CACHE_MEMBER(X) struct oxr_action_cache X;
1670#undef OXR_CACHE_MEMBER
1681 switch (space_type) {
1682 case OXR_SPACE_TYPE_REFERENCE_VIEW:
1683 case OXR_SPACE_TYPE_REFERENCE_LOCAL:
1684 case OXR_SPACE_TYPE_REFERENCE_LOCAL_FLOOR:
1685 case OXR_SPACE_TYPE_REFERENCE_STAGE:
1686 case OXR_SPACE_TYPE_REFERENCE_UNBOUNDED_MSFT:
1687 case OXR_SPACE_TYPE_REFERENCE_COMBINED_EYE_VARJO:
1688 case OXR_SPACE_TYPE_REFERENCE_LOCALIZATION_MAP_ML:
1689 case OXR_SPACE_TYPE_REFERENCE_UNBOUNDED_ANDROID:
1690 case OXR_SPACE_TYPE_REFERENCE_STATIONARY_EXT:
1694 case OXR_SPACE_TYPE_ACTION:
1695 case OXR_SPACE_TYPE_XDEV_POSE:
1740 bool feature_eye_tracking;
1806 XrResult (*enumerate_images)(
struct oxr_logger *,
1809 XrSwapchainImageBaseHeader *);
1811 XrResult (*acquire_image)(
struct oxr_logger *,
1813 const XrSwapchainImageAcquireInfo *,
1837 char name[XR_MAX_ACTION_SET_NAME_SIZE];
1918 char name[XR_MAX_ACTION_NAME_SIZE];
1997#ifdef OXR_HAVE_FB_passthrough
1999struct oxr_passthrough
2005 XrPassthroughFlagsFB
flags;
2010struct oxr_passthrough_layer
2016 XrPassthroughFB passthrough;
2018 XrPassthroughFlagsFB
flags;
2020 XrPassthroughLayerPurposeFB purpose;
2024 XrPassthroughStyleFB style;
2025 XrPassthroughColorMapMonoToRgbaFB monoToRgba;
2026 XrPassthroughColorMapMonoToMonoFB monoToMono;
2027 XrPassthroughBrightnessContrastSaturationFB brightnessContrastSaturation;
2031oxr_passthrough_create(
struct oxr_logger *log,
2033 const XrPassthroughCreateInfoFB *createInfo,
2034 struct oxr_passthrough **out_passthrough);
2037oxr_passthrough_layer_create(
struct oxr_logger *log,
2039 const XrPassthroughLayerCreateInfoFB *createInfo,
2040 struct oxr_passthrough_layer **out_layer);
2042static inline XrPassthroughFB
2043oxr_passthrough_to_openxr(
struct oxr_passthrough *passthrough)
2048static inline XrPassthroughLayerFB
2049oxr_passthrough_layer_to_openxr(
struct oxr_passthrough_layer *passthroughLayer)
2055oxr_event_push_XrEventDataPassthroughStateChangedFB(
struct oxr_logger *log,
2057 XrPassthroughStateChangedFlagsFB
flags);
2061#ifdef OXR_HAVE_HTC_facial_tracking
2071struct oxr_facial_tracker_htc
2083 enum xrt_facial_tracking_type_htc facial_tracking_type;
2086 bool feature_incremented;
2090oxr_facial_tracker_htc_create(
struct oxr_logger *log,
2092 const XrFacialTrackerCreateInfoHTC *createInfo,
2093 struct oxr_facial_tracker_htc **out_face_tracker_htc);
2096oxr_get_facial_expressions_htc(
struct oxr_logger *log,
2097 struct oxr_facial_tracker_htc *facial_tracker_htc,
2098 XrFacialExpressionsHTC *facialExpressions);
2101#ifdef OXR_HAVE_FB_body_tracking
2110struct oxr_body_tracker_fb
2122 enum xrt_body_joint_set_type_fb joint_set_type;
2126oxr_create_body_tracker_fb(
struct oxr_logger *log,
2128 const XrBodyTrackerCreateInfoFB *createInfo,
2129 struct oxr_body_tracker_fb **out_body_tracker_fb);
2132oxr_get_body_skeleton_fb(
struct oxr_logger *log,
2133 struct oxr_body_tracker_fb *body_tracker_fb,
2134 XrBodySkeletonFB *skeleton);
2137oxr_locate_body_joints_fb(
struct oxr_logger *log,
2138 struct oxr_body_tracker_fb *body_tracker_fb,
2140 const XrBodyJointsLocateInfoFB *locateInfo,
2141 XrBodyJointLocationsFB *locations);
2144#ifdef OXR_HAVE_BD_body_tracking
2153struct oxr_body_tracker_bd
2165 enum xrt_body_joint_set_type_bd joint_set_type;
2169oxr_create_body_tracker_bd(
struct oxr_logger *log,
2171 const XrBodyTrackerCreateInfoBD *createInfo,
2172 struct oxr_body_tracker_bd **out_body_tracker_bd);
2175oxr_locate_body_joints_bd(
struct oxr_logger *log,
2176 struct oxr_body_tracker_bd *body_tracker_bd,
2178 const XrBodyJointsLocateInfoBD *locateInfo,
2179 XrBodyJointLocationsBD *locations);
2185#ifdef OXR_HAVE_FB_face_tracking2
2194struct oxr_face_tracker2_fb
2206 bool visual_enabled;
2209 bool feature_incremented;
2213oxr_face_tracker2_fb_create(
struct oxr_logger *log,
2215 const XrFaceTrackerCreateInfo2FB *createInfo,
2216 struct oxr_face_tracker2_fb **out_face_tracker2_fb);
2219oxr_get_face_expression_weights2_fb(
struct oxr_logger *log,
2220 struct oxr_face_tracker2_fb *face_tracker2_fb,
2221 const XrFaceExpressionInfo2FB *expression_info,
2222 XrFaceExpressionWeights2FB *expression_weights);
2225#ifdef OXR_HAVE_MNDX_xdev_space
2243 uint64_t generation_number;
2250 uint32_t device_count;
2254#ifdef OXR_HAVE_EXT_plane_detection
2264struct oxr_plane_detector_ext
2276 XrPlaneDetectionStateEXT state;
2289 XrPlaneDetectorLocationEXT *xr_locations;
2292 uint64_t detection_id;
2296#ifdef OXR_HAVE_EXT_future
2305struct oxr_future_ext
2325static inline XrFutureEXT
2326oxr_future_ext_to_openxr(
struct oxr_future_ext *future_ext)
2336 struct oxr_future_ext **out_oxr_future_ext);
2339oxr_future_invalidate(
struct oxr_logger *log,
struct oxr_future_ext *oxr_future);
2342oxr_future_ext_poll(
struct oxr_logger *log,
const struct oxr_future_ext *oxr_future, XrFuturePollResultEXT *pollResult);
2345oxr_future_ext_cancel(
struct oxr_logger *log,
struct oxr_future_ext *oxr_future);
2348oxr_future_ext_complete(
struct oxr_logger *log,
2349 struct oxr_future_ext *oxr_future,
2354#ifdef OXR_HAVE_EXT_user_presence
2356oxr_event_push_XrEventDataUserPresenceChangedEXT(
struct oxr_logger *log,
struct oxr_session *sess,
bool isUserPresent);
2359#ifdef OXR_HAVE_ANDROID_face_tracking
2369struct oxr_face_tracker_android
2381 bool feature_incremented;
2385oxr_face_tracker_android_create(
struct oxr_logger *log,
2387 const XrFaceTrackerCreateInfoANDROID *createInfo,
2388 XrFaceTrackerANDROID *faceTracker);
2392 struct oxr_face_tracker_android *facial_tracker_android,
2393 const XrFaceStateGetInfoANDROID *getInfo,
2394 XrFaceStateANDROID *faceStateOutput);
2397oxr_get_face_calibration_state_android(
struct oxr_logger *log,
2398 struct oxr_face_tracker_android *facial_tracker_android,
2399 XrBool32 *faceIsCalibratedOutput);
int64_t timepoint_ns
Integer timestamp type.
Definition u_time.h:77
XrResult oxr_poll_event(struct oxr_logger *log, struct oxr_instance *inst, XrEventDataBuffer *eventData)
Will return one event if available, also drain the sessions event queues.
Definition oxr_event.c:451
XrResult oxr_spaces_locate(struct oxr_logger *log, struct oxr_space **spcs, uint32_t spc_count, struct oxr_space *baseSpc, XrTime time, XrSpaceLocations *locations)
Definition oxr_space.c:314
static XrSwapchain oxr_swapchain_to_openxr(struct oxr_swapchain *sc)
To go back to a OpenXR object.
Definition oxr_objects.h:557
oxr_image_state
Tracks the state of a image that belongs to a oxr_swapchain.
Definition oxr_defines.h:68
XrResult oxr_d3d_check_luid(struct oxr_logger *log, struct oxr_system *sys, LUID *adapter_luid)
Verify the provided LUID matches the expected one in sys.
Definition oxr_d3d.cpp:80
XrResult oxr_event_remove_session_events(struct oxr_logger *log, struct oxr_session *sess)
This clears all pending events refers to the given session.
Definition oxr_event.c:409
static XrResult oxr_session_success_result(struct oxr_session *session)
Returns XR_SUCCESS or XR_SESSION_LOSS_PENDING as appropriate.
Definition oxr_objects.h:1439
static XrResult oxr_session_success_focused_result(struct oxr_session *session)
Returns XR_SUCCESS, XR_SESSION_LOSS_PENDING, or XR_SESSION_NOT_FOCUSED, as appropriate.
Definition oxr_objects.h:1454
XrResult oxr_space_xdev_pose_create(struct oxr_logger *log, struct oxr_session *sess, struct xrt_device *xdev, enum xrt_input_name name, const struct xrt_pose *pose, struct oxr_space **out_space)
Monado special space that always points to a specific xrt_device and pose, useful when you want to by...
Definition oxr_space.c:253
XRT_CHECK_RESULT XrResult oxr_space_locate_device(struct oxr_logger *log, struct xrt_device *xdev, struct oxr_space *baseSpc, XrTime time, struct xrt_space_relation *out_relation)
Locate the xrt_device in the given base space, useful for implementing hand tracking location look up...
Definition oxr_space.c:604
static XrDebugUtilsMessengerEXT oxr_messenger_to_openxr(struct oxr_debug_messenger *mssngr)
To go back to a OpenXR object.
Definition oxr_objects.h:573
XrResult oxr_space_locate(struct oxr_logger *log, struct oxr_space *spc, struct oxr_space *baseSpc, XrTime time, XrSpaceLocation *location)
Definition oxr_space.c:471
XrResult oxr_session_frame_end(struct oxr_logger *log, struct oxr_session *sess, const XrFrameEndInfo *frameEndInfo)
Definition oxr_session_frame_end.c:1767
static XrInstance oxr_instance_to_openxr(struct oxr_instance *inst)
To go back to a OpenXR object.
Definition oxr_objects.h:141
static XrHandTrackerEXT oxr_hand_tracker_to_openxr(struct oxr_hand_tracker *hand_tracker)
To go back to a OpenXR object.
Definition oxr_objects.h:243
static XrActionSet oxr_action_set_to_openxr(struct oxr_action_set *act_set)
To go back to a OpenXR object.
Definition oxr_objects.h:232
static XrSession oxr_session_to_openxr(struct oxr_session *sess)
To go back to a OpenXR object.
Definition oxr_objects.h:350
oxr_session_graphics_ext
What graphics API was this session created with.
Definition oxr_defines.h:101
static XrAction oxr_action_to_openxr(struct oxr_action *act)
To go back to a OpenXR object.
Definition oxr_objects.h:267
XrResult oxr_d3d_get_requirements(struct oxr_logger *log, struct oxr_system *sys, LUID *adapter_luid, D3D_FEATURE_LEVEL *min_feature_level)
Common GetRequirements call for D3D11 and D3D12.
Definition oxr_d3d.cpp:42
bool oxr_xdev_find_input(struct xrt_device *xdev, enum xrt_input_name name, struct xrt_input **out_input)
Return true if it finds an input of that name on this device.
Definition oxr_xdev.c:110
oxr_space_type
Internal enum for the type of space, lets us reason about action spaces.
Definition oxr_defines.h:80
XrResult oxr_vk_create_vulkan_instance(struct oxr_logger *log, struct oxr_system *sys, const XrVulkanInstanceCreateInfoKHR *createInfo, VkInstance *vulkanInstance, VkResult *vulkanResult)
Definition oxr_vulkan.c:232
XrResult oxr_session_request_exit(struct oxr_logger *log, struct oxr_session *sess)
Definition oxr_session.c:618
void oxr_session_change_state(struct oxr_logger *log, struct oxr_session *sess, XrSessionState state, XrTime time)
Change the state of the session, queues a event.
Definition oxr_session.c:365
XrResult oxr_system_fill_in(struct oxr_logger *log, struct oxr_instance *inst, XrSystemId systemId, uint32_t view_count, struct oxr_system *sys)
Definition oxr_system.c:589
XrResult oxr_create_messenger(struct oxr_logger *, struct oxr_instance *inst, const XrDebugUtilsMessengerCreateInfoEXT *, struct oxr_debug_messenger **out_mssngr)
Definition oxr_messenger.c:44
XRT_CHECK_RESULT XrResult oxr_system_poll(struct oxr_logger *log, struct oxr_system *sys)
Definition oxr_system.c:1148
XrResult oxr_space_action_create(struct oxr_logger *log, struct oxr_session *sess, uint32_t key, const XrActionSpaceCreateInfo *createInfo, struct oxr_space **out_space)
Definition oxr_space.c:166
XRT_CHECK_RESULT XrResult oxr_space_get_xrt_space(struct oxr_logger *log, struct oxr_space *spc, struct xrt_space **out_xspace)
Get the xrt_space associated with this oxr_space, the xrt_space will be reference counted by this fun...
Definition oxr_space.c:636
XrResult oxr_session_frame_wait(struct oxr_logger *log, struct oxr_session *sess, XrFrameState *frameState)
Definition oxr_session.c:1100
static XrSpace oxr_space_to_openxr(struct oxr_space *spc)
To go back to a OpenXR object.
Definition oxr_objects.h:466
XrResult oxr_vk_create_vulkan_device(struct oxr_logger *log, struct oxr_system *sys, const XrVulkanDeviceCreateInfoKHR *createInfo, VkDevice *vulkanDevice, VkResult *vulkanResult)
Definition oxr_vulkan.c:418
bool oxr_xdev_find_output(struct xrt_device *xdev, enum xrt_output_name name, struct xrt_output **out_output)
Return true if it finds an output of that name on this device.
Definition oxr_xdev.c:129
#define XRT_CAST_PTR_TO_OXR_HANDLE(HANDLE_TYPE, PTR)
Cast a pointer to an OpenXR handle in such a way as to avoid warnings.
Definition oxr_handle_cast.h:25
#define XRT_SYSTEM_MAX_DEVICES
Maximum number of devices simultaneously usable by an implementation of xrt_system_devices.
Definition xrt_limits.h:26
#define XRT_MAX_SWAPCHAIN_IMAGES
Max swapchain images, artificial limit.
Definition xrt_limits.h:53
xrt_input_name
Every internal input source known to monado with a baked in type.
Definition xrt_defines.h:961
xrt_output_name
Name of a output with a baked in type.
Definition xrt_defines.h:1645
xrt_plane_detector_flags_ext
Flags used when running plane detection.
Definition xrt_plane_detector.h:46
Wrapper around OS threading native functions.
Shared internal defines and enums in the state tracker.
Holds dpad state related functions.
XrResult oxr_get_face_state_android(struct oxr_logger *log, struct oxr_face_tracker_android *facial_tracker_android, const XrFaceStateGetInfoANDROID *getInfo, XrFaceStateANDROID *faceStateOutput)
Definition oxr_face_tracking_android.c:77
Forward declarations for OpenXR state tracker structs.
The objects that handle session running status and blocking of xrWaitFrame.
Contains handle-related functions and defines only required in a few locations.
Macros for casting between OpenXR handles and internal pointers.
XrResult oxr_instance_create(struct oxr_logger *log, const XrInstanceCreateInfo *createInfo, XrVersion major_minor, const struct oxr_extension_status *extensions, struct oxr_instance **out_instance)
Definition oxr_instance.c:279
Holds per instance action context.
Holds per instance action cache.
Path store structure and functions.
Wrapper functions that take oxr_instance and call into path/cache functions.
Reference-counted base for OpenXR state tracker objects.
Holds per session action context.
Holds per session attached actions.
Provides a utility macro for dealing with subaction paths.
#define OXR_FOR_EACH_SUBACTION_PATH(_)
Expansion macro (x-macro) that calls the macro you pass with the shorthand name of each subaction pat...
Definition oxr_subaction.h:44
Definition m_space.cpp:87
A wrapper around a native mutex.
Definition os_threading.h:69
Data associated with an Action that has been attached to a Session.
Definition oxr_objects.h:1646
struct oxr_session_attached_actions * attached_actions
The session attached actions this action attachment belongs to.
Definition oxr_objects.h:1654
struct oxr_subaction_paths any_pose_subaction_path
For pose actions any subaction paths are special treated, at bind time we pick one subaction path and...
Definition oxr_objects.h:1664
struct oxr_action_ref * act_ref
This action's refcounted data.
Definition oxr_objects.h:1651
struct oxr_action_set_attachment * act_set_attached
The owning action set attachment.
Definition oxr_objects.h:1648
uint32_t act_key
Unique key for the session hashmap.
Definition oxr_objects.h:1657
The set of inputs/outputs for a single sub-action path for an action.
Definition oxr_objects.h:1624
A output action pair of a xrt_output_name and a xrt_device.
Definition oxr_objects.h:1601
struct xrt_device_id device_id
Device this output routes to.
Definition oxr_objects.h:1605
const struct oxr_io_cache * io_cache
Cache this output is resolved against (owned by the action context).
Definition oxr_objects.h:1603
The reference-counted data of an action.
Definition oxr_objects.h:1914
struct oxr_subaction_paths subaction_paths
Which sub action paths that this action was created with.
Definition oxr_objects.h:1927
XrActionType action_type
Type this action was created with.
Definition oxr_objects.h:1924
uint32_t act_key
Unique key for the session hashmap.
Definition oxr_objects.h:1921
The data associated with the attachment of an Action Set (oxr_action_set) to as Session (oxr_session)...
Definition oxr_objects.h:1511
struct oxr_session_action_context * sess_context
Owning session action context.
Definition oxr_objects.h:1513
struct oxr_action_attachment * act_attachments
An array of action attachments we own.
Definition oxr_objects.h:1536
struct oxr_action_set_ref * act_set_ref
Action set refcounted data.
Definition oxr_objects.h:1516
uint32_t last_sync_priority
Effective action-set priority from the latest xrSyncActions.
Definition oxr_objects.h:1533
uint32_t act_set_key
Unique key for the session hashmap.
Definition oxr_objects.h:1519
size_t action_attachment_count
Length of oxr_action_set_attachment::act_attachments.
Definition oxr_objects.h:1541
struct oxr_subaction_paths requested_subaction_paths
Which sub-action paths are requested on the latest sync.
Definition oxr_objects.h:1522
The reference-counted data of an action set.
Definition oxr_objects.h:1833
uint32_t act_set_key
Unique key for the session hashmap.
Definition oxr_objects.h:1846
bool ever_attached
Has this action set even been attached to any session, marking it as immutable.
Definition oxr_objects.h:1843
uint32_t priority
Application supplied action set priority.
Definition oxr_objects.h:1849
A group of actions.
Definition oxr_objects.h:1871
struct oxr_instance_action_context * inst_context
Reference to the instance action context (reference-counted).
Definition oxr_objects.h:1879
struct u_hashset_item * name_item
The item in the name hashset.
Definition oxr_objects.h:1896
struct u_hashset_item * loc_item
The item in the localized hashset.
Definition oxr_objects.h:1899
struct oxr_action_set_ref * data
The data for this action set that must live as long as any session we are attached to.
Definition oxr_objects.h:1885
uint32_t act_set_key
Unique key for the session hashmap.
Definition oxr_objects.h:1893
struct oxr_instance * inst
Owner of this action set.
Definition oxr_objects.h:1876
struct oxr_handle_parent_base handle
Common structure for things referred to by OpenXR handles.
Definition oxr_objects.h:1873
The state of a action input.
Definition oxr_objects.h:1554
bool active
Is this active (bound and providing input)?
Definition oxr_objects.h:1561
XrTime timestamp
When was this last changed.
Definition oxr_objects.h:1567
A single action.
Definition oxr_objects.h:1944
struct oxr_action_set * act_set
Owner of this action.
Definition oxr_objects.h:1949
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition oxr_objects.h:1946
struct u_hashset_item * loc_item
The item in the localized hashset.
Definition oxr_objects.h:1966
uint32_t act_key
Unique key for the session hashmap.
Definition oxr_objects.h:1960
struct u_hashset_item * name_item
The item in the name hashset.
Definition oxr_objects.h:1963
struct oxr_action_ref * data
The data for this action that must live as long as any session we are attached to.
Definition oxr_objects.h:1953
Runtime description of one bindable path on an interaction profile.
Definition oxr_binding_point.h:103
Complete runtime binding registry for all action contexts of an XrInstance.
Definition oxr_binding_registry.h:35
Debug object created by the client program.
Definition oxr_objects.h:1977
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition oxr_objects.h:1979
XrDebugUtilsMessageTypeFlagsEXT message_types
Types to submit to this messenger.
Definition oxr_objects.h:1988
PFN_xrDebugUtilsMessengerCallbackEXT user_callback
Callback function.
Definition oxr_objects.h:1991
struct oxr_instance * inst
Owner of this messenger.
Definition oxr_objects.h:1982
void *XR_MAY_ALIAS user_data
Opaque user data.
Definition oxr_objects.h:1994
XrDebugUtilsMessageSeverityFlagsEXT message_severities
Severities to submit to this messenger.
Definition oxr_objects.h:1985
Definition oxr_event.c:30
Structure tracking which extensions are enabled for a given instance.
Definition oxr_objects.h:1149
Helper that handles synchronizing the xr{Wait,Begin,End}Frame calls.
Definition oxr_frame_sync.h:37
A hand tracker.
Definition oxr_hand_tracking.h:38
A single OpenXR handle, which is a child of a parent handle holder, if any.
Definition oxr_handle_base.h:62
Used to hold diverse child handles and ensure orderly destruction.
Definition oxr_handle_base.h:88
Holds all action-related state that lives at the instance level (shared across sessions).
Definition oxr_instance_action_context.h:46
This holds cached paths for subaction paths.
Definition oxr_instance_path_cache.h:27
Main object that ties everything together.
Definition oxr_objects.h:1165
bool disable_vulkan_format_depth
Some applications can't handle depth formats, or they trigger a bug in a specific version of the appl...
Definition oxr_objects.h:1242
bool parallel_views
For applications that rely on views being parallel, notably some OpenVR games with OpenComposite.
Definition oxr_objects.h:1273
struct oxr_path_store path_store
Path store for managing paths.
Definition oxr_objects.h:1196
struct oxr_instance::@293 openxr_version
The OpenXR version requested in the app info. It determines the instance's OpenXR version.
bool disable_vulkan_format_depth_stencil
Some applications can't handle depth stencil formats, or they trigger a bug in a specific version of ...
Definition oxr_objects.h:1255
XrVersion major_minor
Stores only major.minor version. Simplifies comparisons for e.g. "at least OpenXR 1....
Definition oxr_objects.h:1184
bool skip_end_session
Unreal 4 has a bug calling xrEndSession; the function should just exit.
Definition oxr_objects.h:1264
struct oxr_instance_action_context * action_context
The default action context (reference-counted). Owned by instance; action sets also hold references.
Definition oxr_objects.h:1218
struct xrt_app_instance * xainst
The XRT interfaces level app instance.
Definition oxr_objects.h:1175
bool no_validation_error_in_create_ref_space
Return XR_ERROR_REFERENCE_SPACE_UNSUPPORTED instead of XR_ERROR_VALIDATION_FAILURE in xrCreateReferen...
Definition oxr_objects.h:1270
struct oxr_extension_status extensions
Enabled extensions.
Definition oxr_objects.h:1178
struct xrt_instance * xinst
The XRT interfaces level instance.
Definition oxr_objects.h:1172
struct oxr_instance_path_cache path_cache
Path cache for actions, needs path_store to work.
Definition oxr_objects.h:1212
bool disable_quad_views
Disable the listing of quad views as a supported view config, the extensions are still exposed.
Definition oxr_objects.h:1261
struct oxr_debug_messenger * messengers[256]
Debug messengers.
Definition oxr_objects.h:1301
struct os_mutex sessions_mutex
Protects the sessions list sessions_locked, taken before the event mutex.
Definition oxr_objects.h:1207
struct oxr_handle_parent_base handle
Common structure for things referred to by OpenXR handles.
Definition oxr_objects.h:1167
struct oxr_binding_registry * binding_registry
Binding registry (reference-counted), shared by all action contexts of this instance.
Definition oxr_objects.h:1215
bool no_usage_bit_validation_in_create_swapchain
Don't return XR_ERROR_VALIDATION_FAILURE if an application sets unsupported usage flags when calling ...
Definition oxr_objects.h:1290
bool map_stage_to_local_floor
For applications that use stage and don't offer recentering.
Definition oxr_objects.h:1276
bool no_layer_flags_bit_validation
Don't return XR_ERROR_VALIDATION_FAILURE if an application sets unsupported flags in XrCompositionLay...
Definition oxr_objects.h:1297
bool no_texture_source_alpha
Beat Saber submits its projection layer with XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT set.
Definition oxr_objects.h:1283
struct oxr_session * sessions_locked
The session list, protected by sessions_mutex.
Definition oxr_objects.h:1209
Per session-action-context snapshot of all device inputs and outputs, wrapping an xrt_io_cache.
Definition oxr_io_cache.h:45
Logger struct that lives on the stack, one for each call client call.
Definition oxr_logger.h:44
A pair of hashets (name_store and loc_store) with an optional mutex so that both members can be remov...
Definition oxr_pair_hashset.h:36
Path store structure for managing path storage and lookup.
Definition oxr_path_store.h:31
Per-session accumulated priority state for one binding priority group, more detailed comments about t...
Definition oxr_priority_group_cache.h:28
Definition oxr_refcounted.h:21
This holds all of the action state that belongs on the session level.
Definition oxr_session_action_context.h:69
Per-session map of action key to action attachment.
Definition oxr_session_attached_actions.h:37
Object that client program interact with.
Definition oxr_objects.h:1335
XrResult(* create_swapchain)(struct oxr_logger *, struct oxr_session *sess, const XrSwapchainCreateInfo *, struct oxr_swapchain **)
To pipe swapchain creation to right code.
Definition oxr_objects.h:1421
struct xrt_compositor_native * xcn
Native compositor that is wrapped by client compositors.
Definition oxr_objects.h:1347
struct oxr_session_action_context action_context
Holds all the action state that belongs on the session level.
Definition oxr_objects.h:1398
struct xrt_session * xs
The xrt_session backing this session.
Definition oxr_objects.h:1344
XrViewConfigurationType current_view_config_type
This is set in xrBeginSession and is the primaryViewConfiguration argument, this is then used in xrEn...
Definition oxr_objects.h:1360
uint32_t frame_timing_wait_sleep_ms
Extra sleep in wait frame.
Definition oxr_objects.h:1416
struct os_precise_sleeper sleeper
Used to implement precise extra sleeping in wait frame.
Definition oxr_objects.h:1393
bool presence
State of the head's XRT_INPUT_GENERIC_HEAD_DETECT input, for oxr_poll_event.
Definition oxr_objects.h:1363
struct oxr_session_attached_actions attached_actions
Per-session map of action key to action attachment (thread-safe).
Definition oxr_objects.h:1403
enum oxr_session_graphics_ext gfx_ext
What graphics type was this session created with.
Definition oxr_objects.h:1341
bool has_ended_once
There is a extra state between xrBeginSession has been called and the first xrEndFrame has been calle...
Definition oxr_objects.h:1369
bool has_lost
initial relation of head in "global" space.
Definition oxr_objects.h:1430
float ipd_meters
IPD, to be expanded to a proper 3D relation.
Definition oxr_objects.h:1408
struct oxr_handle_parent_base handle
Common structure for things referred to by OpenXR handles.
Definition oxr_objects.h:1337
bool frame_timing_spew
Frame timing debug output.
Definition oxr_objects.h:1413
Can be one of several reference space types, or a space that is bound to an action.
Definition oxr_objects.h:1715
struct oxr_subaction_paths subaction_paths
Which sub action path is this?
Definition oxr_objects.h:1732
enum oxr_space_type space_type
What kind of space is this?
Definition oxr_objects.h:1729
uint32_t act_key
Action key from which action this space was created from.
Definition oxr_objects.h:1726
struct xrt_pose pose
Pose that was given during creation.
Definition oxr_objects.h:1723
struct oxr_session * sess
Owner of this space.
Definition oxr_objects.h:1720
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition oxr_objects.h:1717
A parsed equivalent of a list of sub-action paths.
Definition oxr_subaction.h:99
A set of images used for rendering.
Definition oxr_objects.h:1758
struct oxr_session * sess
Owner of this swapchain.
Definition oxr_objects.h:1763
uint32_t face_count
The number of cubemap faces. 6 for cubemaps, 1 otherwise.
Definition oxr_objects.h:1775
struct xrt_swapchain * swapchain
Compositor swapchain.
Definition oxr_objects.h:1766
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition oxr_objects.h:1760
uint32_t width
Swapchain size.
Definition oxr_objects.h:1769
uint32_t array_layer_count
For 1 is 2D texture, greater then 1 2D array texture.
Definition oxr_objects.h:1772
Single or multiple devices grouped together to form a system that sessions can be created from.
Definition oxr_objects.h:1068
struct xrt_system * xsys
The XRT interfaces level system.
Definition oxr_objects.h:1072
struct xrt_app_system * xasys
The XRT interfaces level app system.
Definition oxr_objects.h:1075
VkPhysicalDevice suggested_vulkan_physical_device
The device returned with the last xrGetVulkanGraphicsDeviceKHR or xrGetVulkanGraphicsDevice2KHR call.
Definition oxr_objects.h:1112
PFN_vkGetInstanceProcAddr vk_get_instance_proc_addr
Stores the vkGetInstanceProcAddr passed to xrCreateVulkanInstanceKHR to be used when looking up Vulka...
Definition oxr_objects.h:1118
struct xrt_system_devices * xsysd
System devices used in all session types.
Definition oxr_objects.h:1078
struct xrt_space_overseer * xso
Space overseer used in all session types.
Definition oxr_objects.h:1081
VkInstance vulkan_enable2_instance
The instance/device we create when vulkan_enable2 is used.
Definition oxr_objects.h:1109
bool gotten_requirements
Have the client application called the gfx api requirements func?
Definition oxr_objects.h:1089
struct xrt_system_compositor * xsysc
System compositor, used to create session compositors.
Definition oxr_objects.h:1084
Holds the properties that a system supports for a view configuration type.
Definition oxr_objects.h:1046
Time-keeping state structure.
Definition u_time.cpp:30
A embeddable hashset item, note that the string directly follows the u_hashset_item.
Definition u_hashset.h:37
Definition u_index_fifo.h:21
This interface acts as a way to store per-application policy for xrt_instance.
Definition xrt_app_policy.h:36
This interface acts as a way to store per-application policy for xrt_system.
Definition xrt_app_policy.h:194
Definition xrt_defines.h:2337
A body tracker, owns the policy for selecting which device and body-tracking source back a single Ope...
Definition xrt_body_tracker.h:102
Main compositor server interface.
Definition xrt_compositor.h:2226
Common compositor client interface/base.
Definition xrt_compositor.h:1054
A unique identifier for an xrt_device instance.
Definition xrt_device.h:47
A single HMD or input device.
Definition xrt_device.h:328
The (future) result of an asynchronous operation.
Definition xrt_future.h:39
A future is a concurrency primitive that provides a mechanism to access results of asynchronous opera...
Definition xrt_future.h:75
This interface acts as a root object for Monado.
Definition xrt_instance.h:124
A single named output, that sits on a xrt_device.
Definition xrt_device.h:254
Each plane has n polygons; ultimately plane metadata from xrt_plane_detections_ext::locations and xrt...
Definition xrt_plane_detector.h:172
A pose composed of a position and orientation.
Definition xrt_defines.h:522
The XRT representation of XrSession, this object does not have all of the functionality of a session,...
Definition xrt_session.h:264
Object that oversees and manages spaces, one created for each XR system.
Definition xrt_space.h:97
A relation with two spaces, includes velocity and acceleration.
Definition xrt_defines.h:713
A space very similar to a OpenXR XrSpace but not a full one-to-one mapping, but used to power XrSpace...
Definition xrt_space.h:32
Common swapchain interface/base.
Definition xrt_compositor.h:601
The system compositor handles composition for a system.
Definition xrt_compositor.h:2487
A collection of xrt_device, and an interface for identifying the roles they have been assigned.
Definition xrt_system.h:218
A system is a collection of devices, policies and optionally a compositor that is organised into a ch...
Definition xrt_system.h:67
Visibility mask helper, the indices and vertices are tightly packed after this struct.
Definition xrt_visibility_mask.h:26
Misc helpers for device drivers.
Hashmap for integer values header.
Header holding Android-specific details.
xrt_android_lifecycle_event
Distinguishes the possible Android lifecycle events from each other.
Definition xrt_android.h:43
Header for application policy object.
Header declaring XRT graphics interfaces.
Auto detect OS and certain features.
xrt_perf_notify_level
Performance level.
Definition xrt_defines.h:2494
xrt_perf_domain
Domain type.
Definition xrt_defines.h:2467
xrt_view_type
View type to be rendered to by the compositor.
Definition xrt_defines.h:2453
Header defining an xrt display or controller device.
Interface for creating futures.
Header for limits of the XRT interfaces.
Include all of the openxr headers in one place.
Header defining xrt space and space overseer.
Header for system objects.
Header defining the tracking system integration in Monado.
Include all of the Vulkan headers in one place, and cope with any "messy" includes implied by it.