23 #include "xrt/xrt_config_have.h"
36 #if defined(XRT_HAVE_D3D11) || defined(XRT_HAVE_D3D12)
38 #include <d3dcommon.h>
41 #ifdef XRT_FEATURE_RENDERDOC
42 #include "renderdoc_app.h"
43 #ifndef XRT_OS_WINDOWS
70 #define XRT_CAST_PTR_TO_OXR_HANDLE(HANDLE_TYPE, PTR) ((HANDLE_TYPE)(uint64_t)(uintptr_t)(PTR))
81 #define XRT_CAST_OXR_HANDLE_TO_PTR(PTR_TYPE, HANDLE) ((PTR_TYPE)(uintptr_t)(uint64_t)(HANDLE))
126 #define XRT_MAX_HANDLE_CHILDREN 256
127 #define OXR_MAX_BINDINGS_PER_ACTION 32
149 #define OXR_XRT_POSE_TO_XRPOSEF(FROM, TO) \
152 struct xrt_pose xrt; \
154 } safe_copy = {FROM}; \
155 TO = safe_copy.oxr; \
161 #define OXR_XRT_FOV_TO_XRFOVF(FROM, TO) \
164 struct xrt_fov xrt; \
166 } safe_copy = {FROM}; \
167 TO = safe_copy.oxr; \
207 static inline XrInstance
225 const XrInstanceCreateInfo *createInfo,
233 oxr_instance_get_properties(
struct oxr_logger *log,
235 XrInstanceProperties *instanceProperties);
243 oxr_instance_convert_time_to_timespec(
struct oxr_logger *log,
246 struct timespec *timespecTime);
252 oxr_instance_convert_timespec_to_time(
struct oxr_logger *log,
254 const struct timespec *timespecTime,
258 #ifdef XR_USE_PLATFORM_WIN32
264 oxr_instance_convert_time_to_win32perfcounter(
struct oxr_logger *log,
267 LARGE_INTEGER *win32perfcounterTime);
273 oxr_instance_convert_win32perfcounter_to_time(
struct oxr_logger *log,
275 const LARGE_INTEGER *win32perfcounterTime,
339 struct oxr_logger *log,
const struct oxr_instance *inst, XrPath path,
const char **out_str,
size_t *out_length);
358 static inline XrActionSet
369 static inline XrHandTrackerEXT
380 static inline XrAction
386 #ifdef OXR_HAVE_HTC_facial_tracking
392 static inline XrFacialTrackerHTC
422 uint32_t subaction_path_count,
423 const XrPath *subaction_paths,
443 const XrActionSetCreateInfo *createInfo,
452 const XrActionCreateInfo *createInfo,
462 const XrSessionActionSetsAttachInfo *bindInfo);
474 uint32_t countActionSets,
475 const XrActiveActionSet *actionSets);
481 oxr_action_enumerate_bound_sources(
struct oxr_logger *log,
484 uint32_t sourceCapacityInput,
485 uint32_t *sourceCountOutput,
492 oxr_action_get_boolean(
struct oxr_logger *log,
496 XrActionStateBoolean *data);
502 oxr_action_get_vector1f(
struct oxr_logger *log,
506 XrActionStateFloat *data);
512 oxr_action_get_vector2f(
struct oxr_logger *log,
516 XrActionStateVector2f *data);
525 XrActionStatePose *data);
530 oxr_action_apply_haptic_feedback(
struct oxr_logger *log,
534 const XrHapticBaseHeader *hapticEvent);
539 oxr_action_stop_haptic_feedback(
struct oxr_logger *log,
548 oxr_hand_tracker_create(
struct oxr_logger *log,
550 const XrHandTrackerCreateInfoEXT *createInfo,
581 oxr_get_profile_for_device_name(
struct oxr_logger *log,
613 size_t max_bounding_count,
615 size_t *out_binding_count);
621 oxr_action_suggest_interaction_profile_bindings(
struct oxr_logger *log,
623 const XrInteractionProfileSuggestedBinding *suggestedBindings,
632 XrPath topLevelUserPath,
633 XrInteractionProfileState *interactionProfile);
639 oxr_action_get_input_source_localized_name(
struct oxr_logger *log,
641 const XrInputSourceLocalizedNameGetInfo *getInfo,
642 uint32_t bufferCapacityInput,
643 uint32_t *bufferCountOutput,
682 oxr_dpad_state_get_or_add(
struct oxr_dpad_state *state, uint64_t key);
719 static inline XrSession
728 const XrSessionCreateInfo *createInfo,
732 oxr_session_enumerate_formats(
struct oxr_logger *log,
734 uint32_t formatCapacityInput,
735 uint32_t *formatCountOutput,
753 XRT_CHECK_RESULT XrResult
757 oxr_session_locate_views(
struct oxr_logger *log,
759 const XrViewLocateInfo *viewLocateInfo,
760 XrViewState *viewState,
761 uint32_t viewCapacityInput,
762 uint32_t *viewCountOutput,
775 oxr_session_hand_joints(
struct oxr_logger *log,
777 const XrHandJointsLocateInfoEXT *locateInfo,
778 XrHandJointLocationsEXT *locations);
781 oxr_session_apply_force_feedback(
struct oxr_logger *log,
783 const XrForceFeedbackCurlApplyLocationsMNDX *locations);
785 #ifdef OXR_HAVE_KHR_android_thread_settings
787 oxr_session_android_thread_settings(
struct oxr_logger *log,
789 XrAndroidThreadTypeKHR threadType,
793 #ifdef OXR_HAVE_KHR_visibility_mask
795 oxr_session_get_visibility_mask(
struct oxr_logger *log,
797 XrVisibilityMaskTypeKHR visibilityMaskType,
799 XrVisibilityMaskKHR *visibilityMask);
802 #ifdef OXR_HAVE_EXT_performance_settings
804 oxr_session_set_perf_level(
struct oxr_logger *log,
806 XrPerfSettingsDomainEXT domain,
807 XrPerfSettingsLevelEXT level);
819 static inline XrSpace
826 oxr_space_action_create(
struct oxr_logger *log,
829 const XrActionSpaceCreateInfo *createInfo,
833 oxr_space_reference_create(
struct oxr_logger *log,
835 const XrReferenceSpaceCreateInfo *createInfo,
854 XRT_CHECK_RESULT XrResult
871 static inline XrSwapchain
887 static inline XrDebugUtilsMessengerEXT
896 const XrDebugUtilsMessengerCreateInfoEXT *,
911 uint32_t system_count,
912 XrFormFactor form_factor,
932 oxr_system_get_properties(
struct oxr_logger *log,
struct oxr_system *sys, XrSystemProperties *properties);
935 oxr_system_enumerate_view_confs(
struct oxr_logger *log,
937 uint32_t viewConfigurationTypeCapacityInput,
938 uint32_t *viewConfigurationTypeCountOutput,
939 XrViewConfigurationType *viewConfigurationTypes);
944 XrViewConfigurationType viewConfigurationType,
945 uint32_t environmentBlendModeCapacityInput,
946 uint32_t *environmentBlendModeCountOutput,
947 XrEnvironmentBlendMode *environmentBlendModes);
950 oxr_system_get_view_conf_properties(
struct oxr_logger *log,
952 XrViewConfigurationType viewConfigurationType,
953 XrViewConfigurationProperties *configurationProperties);
956 oxr_system_enumerate_view_conf_views(
struct oxr_logger *log,
958 XrViewConfigurationType viewConfigurationType,
959 uint32_t viewCapacityInput,
960 uint32_t *viewCountOutput,
961 XrViewConfigurationView *views);
973 oxr_system_get_face_tracking_htc_support(
struct oxr_logger *log,
986 oxr_event_push_XrEventDataSessionStateChanged(
struct oxr_logger *log,
988 XrSessionState state,
992 oxr_event_push_XrEventDataInteractionProfileChanged(
struct oxr_logger *log,
struct oxr_session *sess);
995 oxr_event_push_XrEventDataReferenceSpaceChangePending(
struct oxr_logger *log,
997 XrReferenceSpaceType referenceSpaceType,
1000 const XrPosef *poseInPreviousSpace);
1002 #ifdef OXR_HAVE_FB_display_refresh_rate
1004 oxr_event_push_XrEventDataDisplayRefreshRateChangedFB(
struct oxr_logger *log,
1006 float fromDisplayRefreshRate,
1007 float toDisplayRefreshRate);
1010 #ifdef OXR_HAVE_EXTX_overlay
1012 oxr_event_push_XrEventDataMainSessionVisibilityChangedEXTX(
struct oxr_logger *log,
1017 #ifdef OXR_HAVE_EXT_performance_settings
1019 oxr_event_push_XrEventDataPerfSettingsEXTX(
struct oxr_logger *log,
1022 enum xrt_perf_sub_domain subDomain,
1046 oxr_xdev_destroy(
struct xrt_device **xdev_ptr);
1082 #ifdef XR_USE_GRAPHICS_API_OPENGL
1083 #ifdef XR_USE_PLATFORM_XLIB
1086 oxr_session_populate_gl_xlib(
struct oxr_logger *log,
1088 XrGraphicsBindingOpenGLXlibKHR
const *next,
1092 #ifdef XR_USE_PLATFORM_WIN32
1094 oxr_session_populate_gl_win32(
struct oxr_logger *log,
1096 XrGraphicsBindingOpenGLWin32KHR
const *next,
1101 #if defined(XR_USE_GRAPHICS_API_OPENGL) || defined(XR_USE_GRAPHICS_API_OPENGL_ES)
1103 oxr_swapchain_gl_create(
struct oxr_logger * ,
1105 const XrSwapchainCreateInfo * ,
1110 #if defined(XR_USE_GRAPHICS_API_OPENGL_ES)
1111 #if defined(XR_USE_PLATFORM_ANDROID)
1113 oxr_session_populate_gles_android(
struct oxr_logger *log,
1115 XrGraphicsBindingOpenGLESAndroidKHR
const *next,
1127 #ifdef XR_USE_GRAPHICS_API_VULKAN
1130 oxr_vk_get_instance_exts(
struct oxr_logger *log,
1132 uint32_t namesCapacityInput,
1133 uint32_t *namesCountOutput,
1137 oxr_vk_get_device_exts(
struct oxr_logger *log,
1139 uint32_t namesCapacityInput,
1140 uint32_t *namesCountOutput,
1144 oxr_vk_get_requirements(
struct oxr_logger *log,
1146 XrGraphicsRequirementsVulkanKHR *graphicsRequirements);
1151 const XrVulkanInstanceCreateInfoKHR *createInfo,
1152 VkInstance *vulkanInstance,
1153 VkResult *vulkanResult);
1158 const XrVulkanDeviceCreateInfoKHR *createInfo,
1159 VkDevice *vulkanDevice,
1160 VkResult *vulkanResult);
1163 oxr_vk_get_physical_device(
struct oxr_logger *log,
1166 VkInstance vkInstance,
1167 PFN_vkGetInstanceProcAddr getProc,
1168 VkPhysicalDevice *vkPhysicalDevice);
1171 oxr_session_populate_vk(
struct oxr_logger *log,
1173 XrGraphicsBindingVulkanKHR
const *next,
1177 oxr_swapchain_vk_create(
struct oxr_logger * ,
1179 const XrSwapchainCreateInfo * ,
1191 #ifdef XR_USE_PLATFORM_EGL
1194 oxr_session_populate_egl(
struct oxr_logger *log,
1196 XrGraphicsBindingEGLMNDX
const *next,
1207 #if defined(XRT_HAVE_D3D11) || defined(XRT_HAVE_D3D12) || defined(XRT_DOXYGEN)
1213 D3D_FEATURE_LEVEL *min_feature_level);
1226 #ifdef XR_USE_GRAPHICS_API_D3D11
1229 oxr_d3d11_get_requirements(
struct oxr_logger *log,
1231 XrGraphicsRequirementsD3D11KHR *graphicsRequirements);
1243 oxr_session_populate_d3d11(
struct oxr_logger *log,
1245 XrGraphicsBindingD3D11KHR
const *next,
1249 oxr_swapchain_d3d11_create(
struct oxr_logger *,
1251 const XrSwapchainCreateInfo *,
1262 #ifdef XR_USE_GRAPHICS_API_D3D12
1265 oxr_d3d12_get_requirements(
struct oxr_logger *log,
1267 XrGraphicsRequirementsD3D12KHR *graphicsRequirements);
1279 oxr_session_populate_d3d12(
struct oxr_logger *log,
1281 XrGraphicsBindingD3D12KHR
const *next,
1285 oxr_swapchain_d3d12_create(
struct oxr_logger *,
1287 const XrSwapchainCreateInfo *,
1358 XrSystemId systemId;
1363 XrFormFactor form_factor;
1364 XrViewConfigurationType view_config_type;
1365 XrViewConfigurationView views[2];
1366 uint32_t blend_mode_count;
1367 XrEnvironmentBlendMode blend_modes[3];
1369 XrReferenceSpaceType reference_spaces[5];
1370 uint32_t reference_space_count;
1374 struct os_mutex sync_actions_mutex;
1378 #ifdef XR_USE_GRAPHICS_API_VULKAN
1388 bool external_fence_fd_enabled;
1389 bool external_semaphore_fd_enabled;
1390 bool timeline_semaphore_enabled;
1391 bool debug_utils_enabled;
1396 #if defined(XR_USE_GRAPHICS_API_D3D11) || defined(XR_USE_GRAPHICS_API_D3D12)
1397 LUID suggested_d3d_luid;
1398 bool suggested_d3d_luid_valid;
1417 #define MAKE_GET_DYN_ROLES_FN(ROLE) \
1418 static inline struct xrt_device *get_role_##ROLE(struct oxr_system *sys) \
1420 const bool is_locked = 0 == os_mutex_trylock(&sys->sync_actions_mutex); \
1421 const int32_t xdev_idx = sys->dynamic_roles_cache.ROLE; \
1423 os_mutex_unlock(&sys->sync_actions_mutex); \
1425 if (xdev_idx < 0 || xdev_idx >= (int32_t)ARRAY_SIZE(sys->xsysd->xdevs)) \
1427 return sys->xsysd->xdevs[xdev_idx]; \
1429 MAKE_GET_DYN_ROLES_FN(left)
1430 MAKE_GET_DYN_ROLES_FN(right)
1431 MAKE_GET_DYN_ROLES_FN(gamepad)
1432 #undef MAKE_GET_DYN_ROLES_FN
1434 #define GET_XDEV_BY_ROLE(SYS, ROLE) (get_role_##ROLE((SYS)))
1438 get_role_profile_head(
struct oxr_system *sys)
1440 return XRT_DEVICE_INVALID;
1443 get_role_profile_eyes(
struct oxr_system *sys)
1445 return XRT_DEVICE_INVALID;
1448 get_role_profile_face(
struct oxr_system *sys)
1450 return XRT_DEVICE_INVALID;
1453 get_role_profile_hand_tracking_left(
struct oxr_system *sys)
1455 return XRT_DEVICE_INVALID;
1458 get_role_profile_hand_tracking_right(
struct oxr_system *sys)
1460 return XRT_DEVICE_INVALID;
1463 #define MAKE_GET_DYN_ROLE_PROFILE_FN(ROLE) \
1464 static inline enum xrt_device_name get_role_profile_##ROLE(struct oxr_system *sys) \
1466 const bool is_locked = 0 == os_mutex_trylock(&sys->sync_actions_mutex); \
1467 const enum xrt_device_name profile_name = sys->dynamic_roles_cache.ROLE##_profile; \
1469 os_mutex_unlock(&sys->sync_actions_mutex); \
1471 return profile_name; \
1473 MAKE_GET_DYN_ROLE_PROFILE_FN(left)
1474 MAKE_GET_DYN_ROLE_PROFILE_FN(right)
1475 MAKE_GET_DYN_ROLE_PROFILE_FN(gamepad)
1476 #undef MAKE_GET_DYN_ROLES_FN
1478 #define GET_PROFILE_NAME_BY_ROLE(SYS, ROLE) (get_role_profile_##ROLE((SYS)))
1484 #define MAKE_EXT_STATUS(mixed_case, all_caps) bool mixed_case;
1494 #undef MAKE_EXT_STATUS
1509 struct u_debug_gui *debug_ui;
1546 size_t profile_count;
1553 #define SUBACTION_PATH_MEMBER(X) XrPath X;
1556 #undef SUBACTION_PATH_MEMBER
1559 XrPath khr_simple_controller;
1560 XrPath google_daydream_controller;
1561 XrPath htc_vive_controller;
1562 XrPath htc_vive_pro;
1563 XrPath microsoft_motion_controller;
1564 XrPath microsoft_xbox_controller;
1565 XrPath oculus_go_controller;
1566 XrPath oculus_touch_controller;
1567 XrPath valve_index_controller;
1568 XrPath hp_mixed_reality_controller;
1569 XrPath samsung_odyssey_controller;
1570 XrPath ml_ml2_controller;
1571 XrPath mndx_ball_on_a_stick_controller;
1572 XrPath msft_hand_interaction;
1573 XrPath ext_eye_gaze_interaction;
1574 XrPath ext_hand_interaction;
1575 XrPath oppo_mr_controller;
1609 bool lifecycle_verbose;
1612 bool debug_bindings;
1614 #ifdef XRT_FEATURE_RENDERDOC
1615 RENDERDOC_API_1_4_1 *rdoc_api;
1646 XrSessionState state;
1654 bool compositor_visible;
1655 bool compositor_focused;
1659 int active_wait_frames;
1724 #define OXR_PATH_MEMBER(X) XrPath X;
1727 #undef OXR_PATH_MEMBER
1750 const XrSwapchainCreateInfo *,
1765 static inline XrResult
1768 switch (session->state) {
1769 case XR_SESSION_STATE_LOSS_PENDING:
return XR_SESSION_LOSS_PENDING;
1770 default:
return XR_SUCCESS;
1780 static inline XrResult
1783 switch (session->state) {
1784 case XR_SESSION_STATE_LOSS_PENDING:
return XR_SESSION_LOSS_PENDING;
1785 case XR_SESSION_STATE_FOCUSED:
return XR_SUCCESS;
1786 default:
return XR_SESSION_NOT_FOCUSED;
1790 #ifdef OXR_HAVE_FB_display_refresh_rate
1792 oxr_session_get_display_refresh_rate(
struct oxr_logger *log,
struct oxr_session *sess,
float *displayRefreshRate);
1795 oxr_session_request_display_refresh_rate(
struct oxr_logger *log,
struct oxr_session *sess,
float displayRefreshRate);
1805 float forceThreshold;
1806 float forceThresholdReleased;
1828 #ifdef XR_EXT_dpad_binding
1830 uint32_t dpad_count;
1853 uint32_t path_count;
1872 size_t binding_count;
1886 uint32_t path_count;
1941 #define OXR_SUBPATH_MEMBER(X) bool X;
1943 #undef OXR_SUBPATH_MEMBER
1955 #define OXR_CHECK_SUBACTION_PATHS(X) \
1956 if (a->X && !b->X) { \
1960 #undef OXR_CHECK_SUBACTION_PATHS
2052 size_t transform_count;
2091 int64_t stop_output_time;
2092 size_t output_count;
2135 #define OXR_CACHE_MEMBER(X) struct oxr_action_cache X;
2137 #undef OXR_CACHE_MEMBER
2148 switch (space_type) {
2149 case OXR_SPACE_TYPE_REFERENCE_VIEW:
2150 case OXR_SPACE_TYPE_REFERENCE_LOCAL:
2151 case OXR_SPACE_TYPE_REFERENCE_LOCAL_FLOOR:
2152 case OXR_SPACE_TYPE_REFERENCE_STAGE:
2153 case OXR_SPACE_TYPE_REFERENCE_UNBOUNDED_MSFT:
2154 case OXR_SPACE_TYPE_REFERENCE_COMBINED_EYE_VARJO:
2155 case OXR_SPACE_TYPE_REFERENCE_LOCALIZATION_MAP_ML:
2159 case OXR_SPACE_TYPE_ACTION:
2226 uint32_t
width, height;
2263 XrResult (*enumerate_images)(
struct oxr_logger *,
2266 XrSwapchainImageBaseHeader *);
2268 XrResult (*acquire_image)(
struct oxr_logger *,
2270 const XrSwapchainImageAcquireInfo *,
2321 char name[XR_MAX_ACTION_SET_NAME_SIZE];
2403 char name[XR_MAX_ACTION_NAME_SIZE];
2506 XrHandJointSetEXT hand_joint_set;
2509 #ifdef OXR_HAVE_FB_passthrough
2511 struct oxr_passthrough
2517 XrPassthroughFlagsFB
flags;
2522 struct oxr_passthrough_layer
2528 XrPassthroughFB passthrough;
2530 XrPassthroughFlagsFB
flags;
2532 XrPassthroughLayerPurposeFB purpose;
2536 XrPassthroughStyleFB style;
2537 XrPassthroughColorMapMonoToRgbaFB monoToRgba;
2538 XrPassthroughColorMapMonoToMonoFB monoToMono;
2539 XrPassthroughBrightnessContrastSaturationFB brightnessContrastSaturation;
2543 oxr_passthrough_create(
struct oxr_logger *log,
2545 const XrPassthroughCreateInfoFB *createInfo,
2546 struct oxr_passthrough **out_passthrough);
2549 oxr_passthrough_layer_create(
struct oxr_logger *log,
2551 const XrPassthroughLayerCreateInfoFB *createInfo,
2552 struct oxr_passthrough_layer **out_layer);
2554 static inline XrPassthroughFB
2555 oxr_passthrough_to_openxr(
struct oxr_passthrough *passthrough)
2560 static inline XrPassthroughLayerFB
2561 oxr_passthrough_layer_to_openxr(
struct oxr_passthrough_layer *passthroughLayer)
2567 oxr_event_push_XrEventDataPassthroughStateChangedFB(
struct oxr_logger *log,
2569 XrPassthroughStateChangedFlagsFB
flags);
void oxr_action_set_attachment_teardown(struct oxr_action_set_attachment *act_set_attached)
De-initialize an action set attachment and its action attachments.
Definition: oxr_input.c:224
void oxr_binding_find_bindings_from_key(struct oxr_logger *log, struct oxr_interaction_profile *p, uint32_t key, size_t max_bounding_count, struct oxr_binding **bindings, size_t *out_binding_count)
Find all bindings that is the given action key is bound to.
Definition: oxr_binding.c:425
static void oxr_refcounted_unref(struct oxr_refcounted *orc)
Decrease the reference count of orc, destroying it if it reaches 0.
Definition: oxr_objects.h:2291
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:354
XrResult oxr_session_begin(struct oxr_logger *log, struct oxr_session *sess, const XrSessionBeginInfo *beginInfo)
Definition: oxr_session.c:206
static XrSwapchain oxr_swapchain_to_openxr(struct oxr_swapchain *sc)
To go back to a OpenXR object.
Definition: oxr_objects.h:872
oxr_image_state
Tracks the state of a image that belongs to a oxr_swapchain.
Definition: oxr_defines.h:87
XrResult oxr_path_get_or_create(struct oxr_logger *log, struct oxr_instance *inst, const char *str, size_t length, XrPath *out_path)
Get the path for the given string if it exists, or create it if it does not.
Definition: oxr_path.c:172
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_system_enumerate_blend_modes(struct oxr_logger *log, struct oxr_system *sys, XrViewConfigurationType viewConfigurationType, uint32_t environmentBlendModeCapacityInput, uint32_t *environmentBlendModeCountOutput, XrEnvironmentBlendMode *environmentBlendModes)
Definition: oxr_system.c:403
XrResult oxr_handle_destroy(struct oxr_logger *log, struct oxr_handle_base *hb)
Destroy the handle's object, as well as all child handles recursively.
Definition: oxr_handle_base.c:197
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:322
static XrResult oxr_session_success_result(struct oxr_session *session)
Returns XR_SUCCESS or XR_SESSION_LOSS_PENDING as appropriate.
Definition: oxr_objects.h:1762
XrResult oxr_action_get_pose_input(struct oxr_session *sess, uint32_t act_key, const struct oxr_subaction_paths *subaction_paths_ptr, struct oxr_action_input **out_input)
Find the pose input for the set of subaction_paths.
Definition: oxr_input.c:475
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:1777
XrResult oxr_path_only_get(struct oxr_logger *log, struct oxr_instance *inst, const char *str, size_t length, XrPath *out_path)
Only get the path for the given string if it exists.
Definition: oxr_path.c:199
void oxr_find_profile_for_device(struct oxr_logger *log, struct oxr_session *sess, struct xrt_device *xdev, struct oxr_interaction_profile **out_p)
Find the best matching profile for the given xrt_device.
Definition: oxr_binding.c:399
XrResult oxr_session_attach_action_sets(struct oxr_logger *log, struct oxr_session *sess, const XrSessionActionSetsAttachInfo *bindInfo)
Definition: oxr_input.c:1686
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:335
static XrDebugUtilsMessengerEXT oxr_messenger_to_openxr(struct oxr_debug_messenger *mssngr)
To go back to a OpenXR object.
Definition: oxr_objects.h:888
XrResult oxr_space_locate(struct oxr_logger *log, struct oxr_space *spc, struct oxr_space *baseSpc, XrTime time, XrSpaceLocation *location)
Definition: oxr_space.c:202
XrResult oxr_session_frame_end(struct oxr_logger *log, struct oxr_session *sess, const XrFrameEndInfo *frameEndInfo)
Definition: oxr_session_frame_end.c:1638
static XrInstance oxr_instance_to_openxr(struct oxr_instance *inst)
To go back to a OpenXR object.
Definition: oxr_objects.h:208
static XrHandTrackerEXT oxr_hand_tracker_to_openxr(struct oxr_hand_tracker *hand_tracker)
To go back to a OpenXR object.
Definition: oxr_objects.h:370
static XrActionSet oxr_action_set_to_openxr(struct oxr_action_set *act_set)
To go back to a OpenXR object.
Definition: oxr_objects.h:359
bool oxr_classify_subaction_paths(struct oxr_logger *log, const struct oxr_instance *inst, uint32_t subaction_path_count, const XrPath *subaction_paths, struct oxr_subaction_paths *subaction_paths_out)
Helper function to classify subaction_paths.
Definition: oxr_input.c:431
static bool oxr_subaction_paths_is_subset_of(const struct oxr_subaction_paths *a, const struct oxr_subaction_paths *b)
Helper function to determine if the set of paths in a is a subset of the paths in b.
Definition: oxr_objects.h:1948
static XrSession oxr_session_to_openxr(struct oxr_session *sess)
To go back to a OpenXR object.
Definition: oxr_objects.h:720
oxr_session_graphics_ext
What graphics API was this session created with.
Definition: oxr_defines.h:117
static XrAction oxr_action_to_openxr(struct oxr_action *act)
To go back to a OpenXR object.
Definition: oxr_objects.h:381
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:45
oxr_space_type
Internal enum for the type of space, lets us reason about action spaces.
Definition: oxr_defines.h:99
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:227
static void oxr_refcounted_ref(struct oxr_refcounted *orc)
Increase the reference count of orc.
Definition: oxr_objects.h:2282
void oxr_xdev_get_hand_tracking_at(struct oxr_logger *log, struct oxr_instance *inst, struct xrt_device *xdev, enum xrt_input_name name, XrTime at_time, struct xrt_hand_joint_set *out_value)
Returns the hand tracking value of the named input from the device.
Definition: oxr_xdev.c:82
void oxr_binding_destroy_all(struct oxr_logger *log, struct oxr_instance *inst)
Free all memory allocated by the binding system.
Definition: oxr_binding.c:580
XrResult oxr_session_request_exit(struct oxr_logger *log, struct oxr_session *sess)
Definition: oxr_session.c:300
XrResult(* oxr_handle_destroyer)(struct oxr_logger *log, struct oxr_handle_base *hb)
Function pointer type for a handle destruction function.
Definition: oxr_objects.h:136
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:163
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:110
XrResult oxr_create_messenger(struct oxr_logger *, struct oxr_instance *inst, const XrDebugUtilsMessengerCreateInfoEXT *, struct oxr_debug_messenger **out_mssngr)
Definition: oxr_messenger.c:41
void oxr_session_binding_destroy_all(struct oxr_logger *log, struct oxr_session *sess)
Free all memory allocated by the binding system.
Definition: oxr_binding.c:588
XrResult oxr_instance_create(struct oxr_logger *log, const XrInstanceCreateInfo *createInfo, const struct oxr_extension_status *extensions, struct oxr_instance **out_inst)
Creates a instance, does minimal validation of createInfo.
Definition: oxr_instance.c:194
XrResult oxr_path_get_string(struct oxr_logger *log, const struct oxr_instance *inst, XrPath path, const char **out_str, size_t *out_length)
Get a pointer and length of the internal string.
Definition: oxr_path.c:216
XrResult oxr_session_frame_wait(struct oxr_logger *log, struct oxr_session *sess, XrFrameState *frameState)
Definition: oxr_session.c:668
oxr_handle_state
State of a handle base, to reduce likelihood of going "boom" on out-of-order destruction or other uns...
Definition: oxr_defines.h:41
static XrSpace oxr_space_to_openxr(struct oxr_space *spc)
To go back to a OpenXR object.
Definition: oxr_objects.h:820
oxr_subaction_path
Sub action paths.
Definition: oxr_defines.h:58
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:386
const char * oxr_handle_state_to_string(enum oxr_handle_state state)
Returns a human-readable label for a handle state.
Definition: oxr_handle_base.c:42
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:64
#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_objects.h:70
static XRT_CHECK_RESULT bool xrt_reference_dec_and_is_zero(struct xrt_reference *xref)
Decrement the reference and return true if the value is now zero.
Definition: xrt_defines.h:1598
#define XRT_MAX_SWAPCHAIN_IMAGES
Max swapchain images, artificial limit.
Definition: xrt_limits.h:34
xrt_input_name
Every internal input source known to monado with a baked in type.
Definition: xrt_defines.h:1134
static void xrt_reference_inc(struct xrt_reference *xref)
Increment the reference, probably want xrt_reference_inc_and_was_zero.
Definition: xrt_defines.h:1561
xrt_output_name
Name of a output with a baked in type.
Definition: xrt_defines.h:1388
Wrapper around OS threading native functions.
XrResult oxr_action_get_current_interaction_profile(struct oxr_logger *log, struct oxr_session *sess, XrPath topLevelUserPath, XrInteractionProfileState *interactionProfile)
Definition: oxr_binding.c:642
Shared internal defines and enums in the state tracker.
Macros for generating extension-related tables and code and inspecting Monado's extension support.
#define OXR_EXTENSION_SUPPORT_GENERATE(_)
Call this, passing a macro taking two parameters, to generate tables, code, etc.
Definition: oxr_extension_support.h:633
#define OXR_PATH_MEMBER(X)
Currently bound interaction profile.
Definition: oxr_objects.h:1721
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:39
#define OXR_FOR_EACH_VALID_SUBACTION_PATH(_)
Expansion macro (x-macro) that calls the macro you pass with the shorthand name of each valid subacti...
Definition: oxr_subaction.h:23
Definition: m_space.cpp:87
A wrapper around a native mutex.
Definition: os_threading.h:55
Definition: os_time.h:208
A wrapper around a native semaphore.
Definition: os_threading.h:354
Data associated with an Action that has been attached to a Session.
Definition: oxr_objects.h:2101
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:2125
struct oxr_action_ref * act_ref
This action's refcounted data.
Definition: oxr_objects.h:2106
struct oxr_action_set_attachment * act_set_attached
The owning action set attachment.
Definition: oxr_objects.h:2103
uint32_t act_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2117
struct oxr_session * sess
The corresponding session.
Definition: oxr_objects.h:2114
The set of inputs/outputs for a single sub-action path for an action.
Definition: oxr_objects.h:2079
A output action pair of a xrt_output_name and a xrt_device.
Definition: oxr_objects.h:2059
The reference-counted data of an action.
Definition: oxr_objects.h:2392
char name[XR_MAX_ACTION_NAME_SIZE]
Application supplied name of this action.
Definition: oxr_objects.h:2396
struct oxr_subaction_paths subaction_paths
Which sub action paths that this action was created with.
Definition: oxr_objects.h:2405
XrActionType action_type
Type this action was created with.
Definition: oxr_objects.h:2402
uint32_t act_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2399
The data associated with the attachment of an Action Set (oxr_action_set) to as Session (oxr_session)...
Definition: oxr_objects.h:1972
struct oxr_action_attachment * act_attachments
An array of action attachments we own.
Definition: oxr_objects.h:1986
struct oxr_session * sess
Owning session.
Definition: oxr_objects.h:1974
struct oxr_action_set_ref * act_set_ref
Action set refcounted data.
Definition: oxr_objects.h:1977
uint32_t act_set_key
Unique key for the session hashmap.
Definition: oxr_objects.h:1980
size_t action_attachment_count
Length of oxr_action_set_attachment::act_attachments.
Definition: oxr_objects.h:1991
struct oxr_subaction_paths requested_subaction_paths
Which sub-action paths are requested on the latest sync.
Definition: oxr_objects.h:1983
The reference-counted data of an action set.
Definition: oxr_objects.h:2310
uint32_t act_set_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2323
char name[XR_MAX_ACTION_SET_NAME_SIZE]
Application supplied name of this action.
Definition: oxr_objects.h:2314
bool ever_attached
Has this action set even been attached to any session, marking it as immutable.
Definition: oxr_objects.h:2320
uint32_t priority
Application supplied action set priority.
Definition: oxr_objects.h:2326
A group of actions.
Definition: oxr_objects.h:2352
struct u_hashset_item * name_item
The item in the name hashset.
Definition: oxr_objects.h:2374
struct u_hashset_item * loc_item
The item in the localized hashset.
Definition: oxr_objects.h:2377
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:2363
uint32_t act_set_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2371
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2354
struct oxr_instance * inst
Owner of this action set.
Definition: oxr_objects.h:2357
The state of a action input.
Definition: oxr_objects.h:2014
bool active
Is this active (bound and providing input)?
Definition: oxr_objects.h:2021
XrTime timestamp
When was this last changed.
Definition: oxr_objects.h:2027
A single action.
Definition: oxr_objects.h:2422
struct oxr_action_set * act_set
Owner of this action.
Definition: oxr_objects.h:2427
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2424
struct u_hashset_item * loc_item
The item in the localized hashset.
Definition: oxr_objects.h:2444
uint32_t act_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2438
struct u_hashset_item * name_item
The item in the name hashset.
Definition: oxr_objects.h:2441
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:2431
Interaction profile binding state.
Definition: oxr_objects.h:1880
uint32_t * preferred_binding_path_index
store which entry in paths was suggested, for each action key
Definition: oxr_objects.h:1892
const char * localized_name
Name presented to the user.
Definition: oxr_objects.h:1885
Debug object created by the client program.
Definition: oxr_objects.h:2455
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2457
XrDebugUtilsMessageTypeFlagsEXT message_types
Types to submit to this messenger.
Definition: oxr_objects.h:2466
PFN_xrDebugUtilsMessengerCallbackEXT user_callback
Callback function.
Definition: oxr_objects.h:2469
struct oxr_instance * inst
Owner of this messenger.
Definition: oxr_objects.h:2460
void *XR_MAY_ALIAS user_data
Opaque user data.
Definition: oxr_objects.h:2472
XrDebugUtilsMessageSeverityFlagsEXT message_severities
Severities to submit to this messenger.
Definition: oxr_objects.h:2463
dpad binding extracted from XrInteractionProfileDpadBindingEXT
Definition: oxr_objects.h:1812
dpad emulation settings from oxr_interaction_profile
Definition: oxr_objects.h:1846
A entry in the dpad state for one action set.
Definition: oxr_objects.h:1823
dpad settings we need extracted from XrInteractionProfileDpadBindingEXT
Definition: oxr_objects.h:1800
Holds dpad binding state for a single interaction profile.
Definition: oxr_objects.h:1838
Definition: oxr_event.c:30
Structure tracking which extensions are enabled for a given instance.
Definition: oxr_objects.h:1491
HTC specific Facial tracker.
Definition: oxr_objects.h:2576
struct oxr_session * sess
Owner of this face tracker.
Definition: oxr_objects.h:2581
struct xrt_device * xdev
xrt_device backing this face tracker
Definition: oxr_objects.h:2584
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2578
enum xrt_facial_tracking_type_htc facial_tracking_type
Type of facial tracking, eyes or lips.
Definition: oxr_objects.h:2587
A hand tracker.
Definition: oxr_objects.h:2485
enum xrt_input_name input_name
the input name associated with this hand tracker
Definition: oxr_objects.h:2496
struct xrt_device * xdev
xrt_device backing this hand tracker
Definition: oxr_objects.h:2493
struct oxr_session * sess
Owner of this hand tracker.
Definition: oxr_objects.h:2490
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2487
Used to hold diverse child handles and ensure orderly destruction.
Definition: oxr_objects.h:1306
struct oxr_handle_base * parent
Pointer to this object's parent handle holder, if any.
Definition: oxr_objects.h:1313
uint64_t debug
Magic (per-handle-type) value for debugging.
Definition: oxr_objects.h:1308
struct oxr_handle_base * children[256]
Array of children, if any.
Definition: oxr_objects.h:1318
enum oxr_handle_state state
Current handle state.
Definition: oxr_objects.h:1323
oxr_handle_destroyer destroy
Destroy the object this handle refers to.
Definition: oxr_objects.h:1328
Main object that ties everything together.
Definition: oxr_objects.h:1504
size_t path_num
Number of paths in the array (0 is always null).
Definition: oxr_objects.h:1533
bool disable_vulkan_format_depth_stencil
Unreal has a bug in the VulkanRHI backend.
Definition: oxr_objects.h:1592
bool skip_end_session
Unreal 4 has a bug calling xrEndSession; the function should just exit.
Definition: oxr_objects.h:1594
struct oxr_path ** path_array
Mapping from ID to path.
Definition: oxr_objects.h:1529
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:1600
size_t path_array_length
Total length of path array.
Definition: oxr_objects.h:1531
struct oxr_extension_status extensions
Enabled extensions.
Definition: oxr_objects.h:1513
struct oxr_debug_messenger * messengers[256]
Debug messengers.
Definition: oxr_objects.h:1604
struct u_hashset * path_store
Path store, for looking up paths.
Definition: oxr_objects.h:1527
struct oxr_interaction_profile ** profiles
Interaction profile bindings that have been suggested by the client.
Definition: oxr_objects.h:1544
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:1506
A single interaction profile.
Definition: oxr_objects.h:1858
enum xrt_device_name xname
Used to lookup xrt_binding_profile for fallback.
Definition: oxr_objects.h:1862
const char * localized_name
Name presented to the user.
Definition: oxr_objects.h:1865
Logger struct that lives on the stack, one for each call client call.
Definition: oxr_logger.h:40
Internal representation of a path, item follows this struct in memory and that in turn is followed by...
Definition: oxr_path.c:28
Definition: oxr_objects.h:2272
void(* destroy)(struct oxr_refcounted *)
Destruction callback.
Definition: oxr_objects.h:2275
Object that client program interact with.
Definition: oxr_objects.h:1625
struct u_hashmap_int * act_attachments_by_key
A map of action key to action attachment.
Definition: oxr_objects.h:1707
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:1744
struct xrt_compositor_native * xcn
Native compositor that is wrapped by client compositors.
Definition: oxr_objects.h:1637
struct xrt_space_relation local_space_pure_relation
initial relation of head in "global" space.
Definition: oxr_objects.h:1751
struct xrt_session * xs
The xrt_session backing this session.
Definition: oxr_objects.h:1634
struct oxr_action_set_attachment * act_set_attachments
An array of action set attachments that this session owns.
Definition: oxr_objects.h:1681
uint32_t frame_timing_wait_sleep_ms
Extra sleep in wait frame.
Definition: oxr_objects.h:1739
struct os_precise_sleeper sleeper
Used to implement precise extra sleeping in wait frame.
Definition: oxr_objects.h:1673
enum oxr_session_graphics_ext gfx_ext
What graphics type was this session created with.
Definition: oxr_objects.h:1631
size_t profiles_on_attachment_size
Clone of all suggested binding profiles at the point of action set/session attachment.
Definition: oxr_objects.h:1713
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:1649
struct u_hashmap_int * act_sets_attachments_by_key
A map of action set key to action set attachments.
Definition: oxr_objects.h:1695
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:1627
float ipd_meters
IPD, to be expanded to a proper 3D relation.
Definition: oxr_objects.h:1731
size_t action_set_attachment_count
Length of oxr_session::act_set_attachments.
Definition: oxr_objects.h:1686
bool frame_timing_spew
Frame timing debug output.
Definition: oxr_objects.h:1736
Can be one of several reference space types, or a space that is bound to an action.
Definition: oxr_objects.h:2172
struct oxr_subaction_paths subaction_paths
Which sub action path is this?
Definition: oxr_objects.h:2189
enum oxr_space_type space_type
What kind of space is this?
Definition: oxr_objects.h:2186
uint32_t act_key
Action key from which action this space was created from.
Definition: oxr_objects.h:2183
struct xrt_pose pose
Pose that was given during creation.
Definition: oxr_objects.h:2180
struct oxr_session * sess
Owner of this space.
Definition: oxr_objects.h:2177
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2174
A parsed equivalent of a list of sub-action paths.
Definition: oxr_objects.h:1935
A set of images used for rendering.
Definition: oxr_objects.h:2208
struct oxr_session * sess
Owner of this swapchain.
Definition: oxr_objects.h:2213
uint32_t face_count
The number of cubemap faces. 6 for cubemaps, 1 otherwise.
Definition: oxr_objects.h:2225
struct xrt_swapchain * swapchain
Compositor swapchain.
Definition: oxr_objects.h:2216
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2210
uint32_t width
Swapchain size.
Definition: oxr_objects.h:2219
uint32_t array_layer_count
For 1 is 2D texture, greater then 1 2D array texture.
Definition: oxr_objects.h:2222
Single or multiple devices grouped together to form a system that sessions can be created from.
Definition: oxr_objects.h:1343
struct xrt_system * xsys
The XRT interfaces level system.
Definition: oxr_objects.h:1347
VkPhysicalDevice suggested_vulkan_physical_device
The device returned with the last xrGetVulkanGraphicsDeviceKHR or xrGetVulkanGraphicsDevice2KHR call.
Definition: oxr_objects.h:1383
struct xrt_system_devices * xsysd
System devices used in all session types.
Definition: oxr_objects.h:1350
struct xrt_space_overseer * xso
Space overseer used in all session types.
Definition: oxr_objects.h:1353
VkInstance vulkan_enable2_instance
The instance/device we create when vulkan_enable2 is used.
Definition: oxr_objects.h:1380
bool gotten_requirements
Have the client application called the gfx api requirements func?
Definition: oxr_objects.h:1361
struct xrt_system_compositor * xsysc
System compositor, used to create session compositors.
Definition: oxr_objects.h:1356
struct xrt_system_roles dynamic_roles_cache
Cache of the last known system roles, see xrt_system_roles::generation_id.
Definition: oxr_objects.h:1373
Time-keeping state structure.
Definition: u_time.cpp:30
A simple uint64_t key to a void pointer hashmap.
Definition: u_hashmap.cpp:24
A embeddable hashset item, note that the string directly follows the u_hashset_item.
Definition: u_hashset.h:37
Kind of bespoke hashset implementation, where the user is responsible for allocating and freeing the ...
Definition: u_hashset.cpp:26
Definition: u_index_fifo.h:21
Main compositor server interface.
Definition: xrt_compositor.h:2196
Common compositor client interface/base.
Definition: xrt_compositor.h:986
A single HMD or input device.
Definition: xrt_device.h:230
enum xrt_device_name name
Enum identifier of the device.
Definition: xrt_device.h:232
Joint set type used for hand tracking.
Definition: xrt_defines.h:1233
This interface acts as a root object for Monado.
Definition: xrt_instance.h:67
A single named output, that sits on a xrt_device.
Definition: xrt_device.h:178
A pose composed of a position and orientation.
Definition: xrt_defines.h:465
A base class for reference counted objects.
Definition: xrt_defines.h:96
The XRT representation of XrSession, this object does not have all of the functionality of a session,...
Definition: xrt_session.h:233
Object that oversees and manages spaces, one created for each XR system.
Definition: xrt_space.h:95
A relation with two spaces, includes velocity and acceleration.
Definition: xrt_defines.h:657
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:30
Common swapchain interface/base.
Definition: xrt_compositor.h:536
The system compositor handles composition for a system.
Definition: xrt_compositor.h:2386
A collection of xrt_device, and an interface for identifying the roles they have been assigned.
Definition: xrt_system.h:218
struct xrt_system_devices::@235::@236 hand_tracking
Devices providing optical (or otherwise more directly measured than from controller estimation) hand ...
struct xrt_device * head
An observing pointer to the device serving as the "head" (and HMD).
Definition: xrt_system.h:247
struct xrt_device * face
An observing pointer to the device providing face tracking (optional).
Definition: xrt_system.h:259
struct xrt_device * eyes
An observing pointer to the device providing eye tracking (optional).
Definition: xrt_system.h:253
struct xrt_system_devices::@235 static_roles
Observing pointers for devices in some static (unchangeable) roles.
Data associating a device index (in xrt_system_devices::xdevs) with a given "role" for dynamic role s...
Definition: xrt_system.h:160
A system is a collection of devices, policies and optionally a compositor that is organised into a ch...
Definition: xrt_system.h:61
Visibility mask helper, the indices and vertices are tightly packed after this struct.
Definition: xrt_visibility_mask.h:25
Misc helpers for device drivers.
Hashmap for integer values header.
Header declaring XRT graphics interfaces.
Auto detect OS and certain features.
xrt_perf_notify_level
Performance level.
Definition: xrt_defines.h:1529
xrt_device_name
A enum that is used to name devices so that the state trackers can reason about the devices easier.
Definition: xrt_defines.h:712
xrt_perf_domain
Domain type.
Definition: xrt_defines.h:1502
Header defining an xrt display or controller device.
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.