23#include "xrt/xrt_config_have.h"
37#if defined(XRT_HAVE_D3D11) || defined(XRT_HAVE_D3D12)
42#ifdef XRT_FEATURE_RENDERDOC
43#include "renderdoc_app.h"
75#define XRT_CAST_PTR_TO_OXR_HANDLE(HANDLE_TYPE, PTR) ((HANDLE_TYPE)(uint64_t)(uintptr_t)(PTR))
86#define XRT_CAST_OXR_HANDLE_TO_PTR(PTR_TYPE, HANDLE) ((PTR_TYPE)(uintptr_t)(uint64_t)(HANDLE))
129struct oxr_facial_tracker_htc;
130struct oxr_face_tracker2_fb;
131struct oxr_body_tracker_fb;
133struct oxr_plane_detector_ext;
135#define XRT_MAX_HANDLE_CHILDREN 256
136#define OXR_MAX_BINDINGS_PER_ACTION 32
158#define OXR_XRT_POSE_TO_XRPOSEF(FROM, TO) \
161 struct xrt_pose xrt; \
163 } safe_copy = {FROM}; \
164 TO = safe_copy.oxr; \
170#define OXR_XRT_FOV_TO_XRFOVF(FROM, TO) \
173 struct xrt_fov xrt; \
175 } safe_copy = {FROM}; \
176 TO = safe_copy.oxr; \
216static inline XrInstance
234 const XrInstanceCreateInfo *createInfo,
235 XrVersion major_minor,
243oxr_instance_get_properties(
struct oxr_logger *log,
245 XrInstanceProperties *instanceProperties);
253oxr_instance_convert_time_to_timespec(
struct oxr_logger *log,
256 struct timespec *timespecTime);
262oxr_instance_convert_timespec_to_time(
struct oxr_logger *log,
264 const struct timespec *timespecTime,
268#ifdef XR_USE_PLATFORM_WIN32
274oxr_instance_convert_time_to_win32perfcounter(
struct oxr_logger *log,
277 LARGE_INTEGER *win32perfcounterTime);
283oxr_instance_convert_win32perfcounter_to_time(
struct oxr_logger *log,
285 const LARGE_INTEGER *win32perfcounterTime,
349 struct oxr_logger *log,
const struct oxr_instance *inst, XrPath path,
const char **out_str,
size_t *out_length);
368static inline XrActionSet
379static inline XrHandTrackerEXT
385#ifdef OXR_HAVE_EXT_plane_detection
391static inline XrPlaneDetectorEXT
392oxr_plane_detector_to_openxr(
struct oxr_plane_detector_ext *plane_detector)
403static inline XrAction
409#ifdef OXR_HAVE_HTC_facial_tracking
415static inline XrFacialTrackerHTC
416oxr_facial_tracker_htc_to_openxr(
struct oxr_facial_tracker_htc *face_tracker_htc)
422#ifdef OXR_HAVE_FB_body_tracking
428static inline XrBodyTrackerFB
429oxr_body_tracker_fb_to_openxr(
struct oxr_body_tracker_fb *body_tracker_fb)
435#ifdef OXR_HAVE_FB_face_tracking2
441static inline XrFaceTracker2FB
442oxr_face_tracker2_fb_to_openxr(
struct oxr_face_tracker2_fb *face_tracker2_fb)
470 uint32_t subaction_path_count,
471 const XrPath *subaction_paths,
491 const XrActionSetCreateInfo *createInfo,
500 const XrActionCreateInfo *createInfo,
510 const XrSessionActionSetsAttachInfo *bindInfo);
523oxr_session_get_action_attachment(
struct oxr_session *sess,
533 uint32_t countActionSets,
534 const XrActiveActionSet *actionSets,
535 const XrActiveActionSetPrioritiesEXT *activePriorities);
541oxr_action_enumerate_bound_sources(
struct oxr_logger *log,
544 uint32_t sourceCapacityInput,
545 uint32_t *sourceCountOutput,
556 XrActionStateBoolean *data);
562oxr_action_get_vector1f(
struct oxr_logger *log,
566 XrActionStateFloat *data);
572oxr_action_get_vector2f(
struct oxr_logger *log,
576 XrActionStateVector2f *data);
585 XrActionStatePose *data);
590oxr_action_apply_haptic_feedback(
struct oxr_logger *log,
594 const XrHapticBaseHeader *hapticEvent);
599oxr_action_stop_haptic_feedback(
struct oxr_logger *log,
608oxr_hand_tracker_create(
struct oxr_logger *log,
610 const XrHandTrackerCreateInfoEXT *createInfo,
641oxr_get_profile_for_device_name(
struct oxr_logger *log,
673 size_t max_bounding_count,
675 size_t *out_binding_count);
681oxr_action_suggest_interaction_profile_bindings(
struct oxr_logger *log,
683 const XrInteractionProfileSuggestedBinding *suggestedBindings,
690oxr_action_get_current_interaction_profile(
struct oxr_logger *log,
692 XrPath topLevelUserPath,
693 XrInteractionProfileState *interactionProfile);
701 const XrInputSourceLocalizedNameGetInfo *getInfo,
702 uint32_t bufferCapacityInput,
703 uint32_t *bufferCountOutput,
742oxr_dpad_state_get_or_add(
struct oxr_dpad_state *state, uint64_t key);
779static inline XrSession
788 const XrSessionCreateInfo *createInfo,
792oxr_session_enumerate_formats(
struct oxr_logger *log,
794 uint32_t formatCapacityInput,
795 uint32_t *formatCountOutput,
813XRT_CHECK_RESULT XrResult
817oxr_session_locate_views(
struct oxr_logger *log,
819 const XrViewLocateInfo *viewLocateInfo,
820 XrViewState *viewState,
821 uint32_t viewCapacityInput,
822 uint32_t *viewCountOutput,
835oxr_session_hand_joints(
struct oxr_logger *log,
837 const XrHandJointsLocateInfoEXT *locateInfo,
838 XrHandJointLocationsEXT *locations);
852oxr_session_apply_force_feedback(
struct oxr_logger *log,
854 const XrForceFeedbackCurlApplyLocationsMNDX *locations);
856#ifdef OXR_HAVE_KHR_android_thread_settings
858oxr_session_android_thread_settings(
struct oxr_logger *log,
860 XrAndroidThreadTypeKHR threadType,
864#ifdef OXR_HAVE_KHR_visibility_mask
866oxr_session_get_visibility_mask(
struct oxr_logger *log,
868 XrVisibilityMaskTypeKHR visibilityMaskType,
870 XrVisibilityMaskKHR *visibilityMask);
873oxr_event_push_XrEventDataVisibilityMaskChangedKHR(
struct oxr_logger *log,
875 XrViewConfigurationType viewConfigurationType,
879#ifdef OXR_HAVE_EXT_performance_settings
881oxr_session_set_perf_level(
struct oxr_logger *log,
883 XrPerfSettingsDomainEXT domain,
884 XrPerfSettingsLevelEXT level);
903oxr_space_action_create(
struct oxr_logger *log,
906 const XrActionSpaceCreateInfo *createInfo,
910oxr_space_get_reference_bounds_rect(
struct oxr_logger *log,
912 XrReferenceSpaceType referenceSpaceType,
913 XrExtent2Df *bounds);
916oxr_space_reference_create(
struct oxr_logger *log,
918 const XrReferenceSpaceCreateInfo *createInfo,
943 XrSpaceLocations *locations);
957XRT_CHECK_RESULT XrResult
974static inline XrSwapchain
990static inline XrDebugUtilsMessengerEXT
999 const XrDebugUtilsMessengerCreateInfoEXT *,
1014 uint32_t system_count,
1015 XrFormFactor form_factor,
1021 XrSystemId systemId,
1022 uint32_t view_count,
1031 XrSystemId systemId,
1035oxr_system_get_properties(
struct oxr_logger *log,
struct oxr_system *sys, XrSystemProperties *properties);
1038oxr_system_enumerate_view_confs(
struct oxr_logger *log,
1040 uint32_t viewConfigurationTypeCapacityInput,
1041 uint32_t *viewConfigurationTypeCountOutput,
1042 XrViewConfigurationType *viewConfigurationTypes);
1047 XrViewConfigurationType viewConfigurationType,
1048 uint32_t environmentBlendModeCapacityInput,
1049 uint32_t *environmentBlendModeCountOutput,
1050 XrEnvironmentBlendMode *environmentBlendModes);
1053oxr_system_get_view_conf_properties(
struct oxr_logger *log,
1055 XrViewConfigurationType viewConfigurationType,
1056 XrViewConfigurationProperties *configurationProperties);
1059oxr_system_enumerate_view_conf_views(
struct oxr_logger *log,
1061 XrViewConfigurationType viewConfigurationType,
1062 uint32_t viewCapacityInput,
1063 uint32_t *viewCountOutput,
1064 XrViewConfigurationView *views);
1076oxr_system_get_face_tracking_htc_support(
struct oxr_logger *log,
1079 bool *supports_lip);
1082oxr_system_get_face_tracking2_fb_support(
struct oxr_logger *log,
1084 bool *supports_audio,
1085 bool *supports_visual);
1097oxr_event_push_XrEventDataSessionStateChanged(
struct oxr_logger *log,
1099 XrSessionState state,
1103oxr_event_push_XrEventDataInteractionProfileChanged(
struct oxr_logger *log,
struct oxr_session *sess);
1106oxr_event_push_XrEventDataReferenceSpaceChangePending(
struct oxr_logger *log,
1108 XrReferenceSpaceType referenceSpaceType,
1111 const XrPosef *poseInPreviousSpace);
1113#ifdef OXR_HAVE_FB_display_refresh_rate
1115oxr_event_push_XrEventDataDisplayRefreshRateChangedFB(
struct oxr_logger *log,
1117 float fromDisplayRefreshRate,
1118 float toDisplayRefreshRate);
1121#ifdef OXR_HAVE_EXTX_overlay
1123oxr_event_push_XrEventDataMainSessionVisibilityChangedEXTX(
struct oxr_logger *log,
1128#ifdef OXR_HAVE_EXT_performance_settings
1130oxr_event_push_XrEventDataPerfSettingsEXTX(
struct oxr_logger *log,
1133 enum xrt_perf_sub_domain subDomain,
1157oxr_xdev_destroy(
struct xrt_device **xdev_ptr);
1183#ifdef OXR_HAVE_MNDX_xdev_space
1184static inline XrXDevListMNDX
1185oxr_xdev_list_to_openxr(
struct oxr_xdev_list *sc)
1193 const XrCreateXDevListInfoMNDX *createInfo,
1194 struct oxr_xdev_list **out_xdl);
1197oxr_xdev_list_get_properties(
struct oxr_logger *log,
1198 struct oxr_xdev_list *xdl,
1200 XrXDevPropertiesMNDX *properties);
1203oxr_xdev_list_space_create(
struct oxr_logger *log,
1204 struct oxr_xdev_list *xdl,
1205 const XrCreateXDevSpaceInfoMNDX *createInfo,
1218#ifdef XR_USE_GRAPHICS_API_OPENGL
1219#ifdef XR_USE_PLATFORM_XLIB
1222oxr_session_populate_gl_xlib(
struct oxr_logger *log,
1224 XrGraphicsBindingOpenGLXlibKHR
const *next,
1228#ifdef XR_USE_PLATFORM_WIN32
1230oxr_session_populate_gl_win32(
struct oxr_logger *log,
1232 XrGraphicsBindingOpenGLWin32KHR
const *next,
1237#if defined(XR_USE_GRAPHICS_API_OPENGL) || defined(XR_USE_GRAPHICS_API_OPENGL_ES)
1241 const XrSwapchainCreateInfo * ,
1246#if defined(XR_USE_GRAPHICS_API_OPENGL_ES)
1247#if defined(XR_USE_PLATFORM_ANDROID)
1249oxr_session_populate_gles_android(
struct oxr_logger *log,
1251 XrGraphicsBindingOpenGLESAndroidKHR
const *next,
1263#ifdef XR_USE_GRAPHICS_API_VULKAN
1266oxr_vk_get_instance_exts(
struct oxr_logger *log,
1268 uint32_t namesCapacityInput,
1269 uint32_t *namesCountOutput,
1273oxr_vk_get_device_exts(
struct oxr_logger *log,
1275 uint32_t namesCapacityInput,
1276 uint32_t *namesCountOutput,
1280oxr_vk_get_requirements(
struct oxr_logger *log,
1282 XrGraphicsRequirementsVulkanKHR *graphicsRequirements);
1287 const XrVulkanInstanceCreateInfoKHR *createInfo,
1288 VkInstance *vulkanInstance,
1289 VkResult *vulkanResult);
1294 const XrVulkanDeviceCreateInfoKHR *createInfo,
1295 VkDevice *vulkanDevice,
1296 VkResult *vulkanResult);
1299oxr_vk_get_physical_device(
struct oxr_logger *log,
1302 VkInstance vkInstance,
1303 PFN_vkGetInstanceProcAddr getProc,
1304 VkPhysicalDevice *vkPhysicalDevice);
1307oxr_session_populate_vk(
struct oxr_logger *log,
1309 XrGraphicsBindingVulkanKHR
const *next,
1315 const XrSwapchainCreateInfo * ,
1327#ifdef XR_USE_PLATFORM_EGL
1330oxr_session_populate_egl(
struct oxr_logger *log,
1332 XrGraphicsBindingEGLMNDX
const *next,
1343#if defined(XRT_HAVE_D3D11) || defined(XRT_HAVE_D3D12) || defined(XRT_DOXYGEN)
1349 D3D_FEATURE_LEVEL *min_feature_level);
1362#ifdef XR_USE_GRAPHICS_API_D3D11
1365oxr_d3d11_get_requirements(
struct oxr_logger *log,
1367 XrGraphicsRequirementsD3D11KHR *graphicsRequirements);
1379oxr_session_populate_d3d11(
struct oxr_logger *log,
1381 XrGraphicsBindingD3D11KHR
const *next,
1385oxr_swapchain_d3d11_create(
struct oxr_logger *,
1387 const XrSwapchainCreateInfo *,
1398#ifdef XR_USE_GRAPHICS_API_D3D12
1401oxr_d3d12_get_requirements(
struct oxr_logger *log,
1403 XrGraphicsRequirementsD3D12KHR *graphicsRequirements);
1415oxr_session_populate_d3d12(
struct oxr_logger *log,
1417 XrGraphicsBindingD3D12KHR
const *next,
1421oxr_swapchain_d3d12_create(
struct oxr_logger *,
1423 const XrSwapchainCreateInfo *,
1494 XrSystemId systemId;
1499 XrFormFactor form_factor;
1500 XrViewConfigurationType view_config_type;
1501 XrViewConfigurationView views[2];
1502 uint32_t blend_mode_count;
1503 XrEnvironmentBlendMode blend_modes[3];
1505 XrReferenceSpaceType reference_spaces[5];
1506 uint32_t reference_space_count;
1510 struct os_mutex sync_actions_mutex;
1514#ifdef OXR_HAVE_MNDX_xdev_space
1515 bool supports_xdev_space;
1518#ifdef XR_USE_GRAPHICS_API_VULKAN
1528 bool external_fence_fd_enabled;
1529 bool external_semaphore_fd_enabled;
1530 bool timeline_semaphore_enabled;
1531 bool debug_utils_enabled;
1532 bool image_format_list_enabled;
1537#if defined(XR_USE_GRAPHICS_API_D3D11) || defined(XR_USE_GRAPHICS_API_D3D12)
1538 LUID suggested_d3d_luid;
1539 bool suggested_d3d_luid_valid;
1559#define MAKE_GET_DYN_ROLES_FN(ROLE) \
1560 static inline struct xrt_device *get_role_##ROLE(struct oxr_system *sys) \
1562 const bool is_locked = 0 == os_mutex_trylock(&sys->sync_actions_mutex); \
1563 const int32_t xdev_idx = sys->dynamic_roles_cache.ROLE; \
1565 os_mutex_unlock(&sys->sync_actions_mutex); \
1567 if (xdev_idx < 0 || xdev_idx >= (int32_t)ARRAY_SIZE(sys->xsysd->xdevs)) \
1569 return sys->xsysd->xdevs[xdev_idx]; \
1571MAKE_GET_DYN_ROLES_FN(left)
1572MAKE_GET_DYN_ROLES_FN(right)
1573MAKE_GET_DYN_ROLES_FN(gamepad)
1574#undef MAKE_GET_DYN_ROLES_FN
1576#define GET_XDEV_BY_ROLE(SYS, ROLE) (get_role_##ROLE((SYS)))
1582 return XRT_DEVICE_INVALID;
1587 return XRT_DEVICE_INVALID;
1592 return XRT_DEVICE_INVALID;
1597 return XRT_DEVICE_INVALID;
1600get_role_profile_hand_tracking_left(
struct oxr_system *sys)
1602 return XRT_DEVICE_INVALID;
1605get_role_profile_hand_tracking_right(
struct oxr_system *sys)
1607 return XRT_DEVICE_INVALID;
1610#define MAKE_GET_DYN_ROLE_PROFILE_FN(ROLE) \
1611 static inline enum xrt_device_name get_role_profile_##ROLE(struct oxr_system *sys) \
1613 const bool is_locked = 0 == os_mutex_trylock(&sys->sync_actions_mutex); \
1614 const enum xrt_device_name profile_name = sys->dynamic_roles_cache.ROLE##_profile; \
1616 os_mutex_unlock(&sys->sync_actions_mutex); \
1618 return profile_name; \
1620MAKE_GET_DYN_ROLE_PROFILE_FN(left)
1621MAKE_GET_DYN_ROLE_PROFILE_FN(right)
1622MAKE_GET_DYN_ROLE_PROFILE_FN(gamepad)
1623#undef MAKE_GET_DYN_ROLES_FN
1625#define GET_PROFILE_NAME_BY_ROLE(SYS, ROLE) (get_role_profile_##ROLE((SYS)))
1631#define MAKE_EXT_STATUS(mixed_case, all_caps) bool mixed_case;
1641#undef MAKE_EXT_STATUS
1656 struct u_debug_gui *debug_ui;
1700 size_t profile_count;
1707#define SUBACTION_PATH_MEMBER(X) XrPath X;
1710#undef SUBACTION_PATH_MEMBER
1747 bool lifecycle_verbose;
1750 bool debug_bindings;
1752#ifdef XRT_FEATURE_RENDERDOC
1753 RENDERDOC_API_1_4_1 *rdoc_api;
1756#ifdef XRT_OS_ANDROID
1788 XrSessionState state;
1796 bool compositor_visible;
1797 bool compositor_focused;
1801 int active_wait_frames;
1802 struct os_mutex active_wait_frames_lock;
1866#define OXR_PATH_MEMBER(X) XrPath X;
1869#undef OXR_PATH_MEMBER
1892 const XrSwapchainCreateInfo *,
1907static inline XrResult
1910 switch (session->state) {
1911 case XR_SESSION_STATE_LOSS_PENDING:
return XR_SESSION_LOSS_PENDING;
1912 default:
return XR_SUCCESS;
1922static inline XrResult
1925 switch (session->state) {
1926 case XR_SESSION_STATE_LOSS_PENDING:
return XR_SESSION_LOSS_PENDING;
1927 case XR_SESSION_STATE_FOCUSED:
return XR_SUCCESS;
1928 default:
return XR_SESSION_NOT_FOCUSED;
1932#ifdef OXR_HAVE_FB_display_refresh_rate
1934oxr_session_get_display_refresh_rate(
struct oxr_logger *log,
struct oxr_session *sess,
float *displayRefreshRate);
1937oxr_session_request_display_refresh_rate(
struct oxr_logger *log,
struct oxr_session *sess,
float displayRefreshRate);
1947 float forceThreshold;
1948 float forceThresholdReleased;
1970#ifdef XR_EXT_dpad_binding
1972 uint32_t dpad_count;
1995 uint32_t path_count;
2014 size_t binding_count;
2028 uint32_t path_count;
2083#define OXR_SUBPATH_MEMBER(X) bool X;
2085#undef OXR_SUBPATH_MEMBER
2097#define OXR_CHECK_SUBACTION_PATHS(X) \
2098 if (a->X && !b->X) { \
2102#undef OXR_CHECK_SUBACTION_PATHS
2194 size_t transform_count;
2233 int64_t stop_output_time;
2234 size_t output_count;
2277#define OXR_CACHE_MEMBER(X) struct oxr_action_cache X;
2279#undef OXR_CACHE_MEMBER
2290 switch (space_type) {
2291 case OXR_SPACE_TYPE_REFERENCE_VIEW:
2292 case OXR_SPACE_TYPE_REFERENCE_LOCAL:
2293 case OXR_SPACE_TYPE_REFERENCE_LOCAL_FLOOR:
2294 case OXR_SPACE_TYPE_REFERENCE_STAGE:
2295 case OXR_SPACE_TYPE_REFERENCE_UNBOUNDED_MSFT:
2296 case OXR_SPACE_TYPE_REFERENCE_COMBINED_EYE_VARJO:
2297 case OXR_SPACE_TYPE_REFERENCE_LOCALIZATION_MAP_ML:
2301 case OXR_SPACE_TYPE_ACTION:
2302 case OXR_SPACE_TYPE_XDEV_POSE:
2374 uint32_t
width, height;
2411 XrResult (*enumerate_images)(
struct oxr_logger *,
2414 XrSwapchainImageBaseHeader *);
2416 XrResult (*acquire_image)(
struct oxr_logger *,
2418 const XrSwapchainImageAcquireInfo *,
2469 char name[XR_MAX_ACTION_SET_NAME_SIZE];
2551 char name[XR_MAX_ACTION_NAME_SIZE];
2654 XrHandJointSetEXT hand_joint_set;
2657#ifdef OXR_HAVE_FB_passthrough
2659struct oxr_passthrough
2665 XrPassthroughFlagsFB
flags;
2670struct oxr_passthrough_layer
2676 XrPassthroughFB passthrough;
2678 XrPassthroughFlagsFB
flags;
2680 XrPassthroughLayerPurposeFB purpose;
2684 XrPassthroughStyleFB style;
2685 XrPassthroughColorMapMonoToRgbaFB monoToRgba;
2686 XrPassthroughColorMapMonoToMonoFB monoToMono;
2687 XrPassthroughBrightnessContrastSaturationFB brightnessContrastSaturation;
2691oxr_passthrough_create(
struct oxr_logger *log,
2693 const XrPassthroughCreateInfoFB *createInfo,
2694 struct oxr_passthrough **out_passthrough);
2697oxr_passthrough_layer_create(
struct oxr_logger *log,
2699 const XrPassthroughLayerCreateInfoFB *createInfo,
2700 struct oxr_passthrough_layer **out_layer);
2702static inline XrPassthroughFB
2703oxr_passthrough_to_openxr(
struct oxr_passthrough *passthrough)
2708static inline XrPassthroughLayerFB
2709oxr_passthrough_layer_to_openxr(
struct oxr_passthrough_layer *passthroughLayer)
2715oxr_event_push_XrEventDataPassthroughStateChangedFB(
struct oxr_logger *log,
2717 XrPassthroughStateChangedFlagsFB
flags);
2721#ifdef OXR_HAVE_HTC_facial_tracking
2731struct oxr_facial_tracker_htc
2743 enum xrt_facial_tracking_type_htc facial_tracking_type;
2747oxr_facial_tracker_htc_create(
struct oxr_logger *log,
2749 const XrFacialTrackerCreateInfoHTC *createInfo,
2750 struct oxr_facial_tracker_htc **out_face_tracker_htc);
2753oxr_get_facial_expressions_htc(
struct oxr_logger *log,
2754 struct oxr_facial_tracker_htc *facial_tracker_htc,
2755 XrFacialExpressionsHTC *facialExpressions);
2758#ifdef OXR_HAVE_FB_body_tracking
2767struct oxr_body_tracker_fb
2779 enum xrt_body_joint_set_type_fb joint_set_type;
2783oxr_create_body_tracker_fb(
struct oxr_logger *log,
2785 const XrBodyTrackerCreateInfoFB *createInfo,
2786 struct oxr_body_tracker_fb **out_body_tracker_fb);
2789oxr_get_body_skeleton_fb(
struct oxr_logger *log,
2790 struct oxr_body_tracker_fb *body_tracker_fb,
2791 XrBodySkeletonFB *skeleton);
2794oxr_locate_body_joints_fb(
struct oxr_logger *log,
2795 struct oxr_body_tracker_fb *body_tracker_fb,
2797 const XrBodyJointsLocateInfoFB *locateInfo,
2798 XrBodyJointLocationsFB *locations);
2801#ifdef OXR_HAVE_FB_face_tracking2
2810struct oxr_face_tracker2_fb
2822 bool visual_enabled;
2826oxr_face_tracker2_fb_create(
struct oxr_logger *log,
2828 const XrFaceTrackerCreateInfo2FB *createInfo,
2829 struct oxr_face_tracker2_fb **out_face_tracker2_fb);
2832oxr_get_face_expression_weights2_fb(
struct oxr_logger *log,
2833 struct oxr_face_tracker2_fb *face_tracker2_fb,
2834 const XrFaceExpressionInfo2FB *expression_info,
2835 XrFaceExpressionWeights2FB *expression_weights);
2838#ifdef OXR_HAVE_MNDX_xdev_space
2856 uint64_t generation_number;
2863 uint32_t device_count;
2867#ifdef OXR_HAVE_EXT_plane_detection
2877struct oxr_plane_detector_ext
2889 XrPlaneDetectionStateEXT state;
2902 XrPlaneDetectorLocationEXT *xr_locations;
2905 uint64_t detection_id;
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:222
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:399
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:2439
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:379
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:291
XrResult oxr_session_begin(struct oxr_logger *log, struct oxr_session *sess, const XrSessionBeginInfo *beginInfo)
Definition: oxr_session.c:207
static XrSwapchain oxr_swapchain_to_openxr(struct oxr_swapchain *sc)
To go back to a OpenXR object.
Definition: oxr_objects.h:975
oxr_image_state
Tracks the state of a image that belongs to a oxr_swapchain.
Definition: oxr_defines.h:92
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:540
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:347
static XrResult oxr_session_success_result(struct oxr_session *session)
Returns XR_SUCCESS or XR_SESSION_LOSS_PENDING as appropriate.
Definition: oxr_objects.h:1904
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:473
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:1919
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
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:238
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:373
XrResult oxr_session_attach_action_sets(struct oxr_logger *log, struct oxr_session *sess, const XrSessionActionSetsAttachInfo *bindInfo)
Definition: oxr_input.c:1704
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:581
static XrDebugUtilsMessengerEXT oxr_messenger_to_openxr(struct oxr_debug_messenger *mssngr)
To go back to a OpenXR object.
Definition: oxr_objects.h:991
XrResult oxr_space_locate(struct oxr_logger *log, struct oxr_space *spc, struct oxr_space *baseSpc, XrTime time, XrSpaceLocation *location)
Definition: oxr_space.c:448
XrResult oxr_session_frame_end(struct oxr_logger *log, struct oxr_session *sess, const XrFrameEndInfo *frameEndInfo)
Definition: oxr_session_frame_end.c:1646
static XrInstance oxr_instance_to_openxr(struct oxr_instance *inst)
To go back to a OpenXR object.
Definition: oxr_objects.h:217
static XrHandTrackerEXT oxr_hand_tracker_to_openxr(struct oxr_hand_tracker *hand_tracker)
To go back to a OpenXR object.
Definition: oxr_objects.h:380
static XrActionSet oxr_action_set_to_openxr(struct oxr_action_set *act_set)
To go back to a OpenXR object.
Definition: oxr_objects.h:369
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:429
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:2090
static XrSession oxr_session_to_openxr(struct oxr_session *sess)
To go back to a OpenXR object.
Definition: oxr_objects.h:780
oxr_session_graphics_ext
What graphics API was this session created with.
Definition: oxr_defines.h:123
static XrAction oxr_action_to_openxr(struct oxr_action *act)
To go back to a OpenXR object.
Definition: oxr_objects.h:404
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:89
oxr_space_type
Internal enum for the type of space, lets us reason about action spaces.
Definition: oxr_defines.h:104
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:231
static void oxr_refcounted_ref(struct oxr_refcounted *orc)
Increase the reference count of orc.
Definition: oxr_objects.h:2430
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:126
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:561
XrResult oxr_session_request_exit(struct oxr_logger *log, struct oxr_session *sess)
Definition: oxr_session.c:343
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:145
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:164
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:569
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:778
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:46
XrResult oxr_instance_create(struct oxr_logger *log, const XrInstanceCreateInfo *createInfo, XrVersion major_minor, const struct oxr_extension_status *extensions, struct oxr_instance **out_inst)
Creates a instance, does minimal validation of createInfo.
Definition: oxr_instance.c:220
static XrSpace oxr_space_to_openxr(struct oxr_space *spc)
To go back to a OpenXR object.
Definition: oxr_objects.h:897
oxr_subaction_path
Sub action paths.
Definition: oxr_defines.h:63
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:390
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:108
#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:75
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:2048
#define XRT_SYSTEM_MAX_DEVICES
Maximum number of devices simultaneously usable by an implementation of xrt_system_devices.
Definition: xrt_system.h:142
#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:1303
static void xrt_reference_inc(struct xrt_reference *xref)
Increment the reference, probably want xrt_reference_inc_and_was_zero.
Definition: xrt_defines.h:2011
xrt_output_name
Name of a output with a baked in type.
Definition: xrt_defines.h:1806
xrt_plane_detector_flags_ext
Flags used when running plane detection.
Definition: xrt_plane_detector.h:46
Wrapper around OS threading native functions.
XrResult oxr_action_get_input_source_localized_name(struct oxr_logger *log, struct oxr_session *sess, const XrInputSourceLocalizedNameGetInfo *getInfo, uint32_t bufferCapacityInput, uint32_t *bufferCountOutput, char *buffer)
Definition: oxr_binding.c:649
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:795
The objects that handle session running status and blocking of xrWaitFrame.
#define OXR_PATH_MEMBER(X)
Currently bound interaction profile.
Definition: oxr_objects.h:1863
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
Data associated with an Action that has been attached to a Session.
Definition: oxr_objects.h:2243
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:2267
struct oxr_action_ref * act_ref
This action's refcounted data.
Definition: oxr_objects.h:2248
struct oxr_action_set_attachment * act_set_attached
The owning action set attachment.
Definition: oxr_objects.h:2245
uint32_t act_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2259
struct oxr_session * sess
The corresponding session.
Definition: oxr_objects.h:2256
The set of inputs/outputs for a single sub-action path for an action.
Definition: oxr_objects.h:2221
A output action pair of a xrt_output_name and a xrt_device.
Definition: oxr_objects.h:2201
The reference-counted data of an action.
Definition: oxr_objects.h:2540
char name[XR_MAX_ACTION_NAME_SIZE]
Application supplied name of this action.
Definition: oxr_objects.h:2544
struct oxr_subaction_paths subaction_paths
Which sub action paths that this action was created with.
Definition: oxr_objects.h:2553
XrActionType action_type
Type this action was created with.
Definition: oxr_objects.h:2550
uint32_t act_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2547
The data associated with the attachment of an Action Set (oxr_action_set) to as Session (oxr_session)...
Definition: oxr_objects.h:2114
struct oxr_action_attachment * act_attachments
An array of action attachments we own.
Definition: oxr_objects.h:2128
struct oxr_session * sess
Owning session.
Definition: oxr_objects.h:2116
struct oxr_action_set_ref * act_set_ref
Action set refcounted data.
Definition: oxr_objects.h:2119
uint32_t act_set_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2122
size_t action_attachment_count
Length of oxr_action_set_attachment::act_attachments.
Definition: oxr_objects.h:2133
struct oxr_subaction_paths requested_subaction_paths
Which sub-action paths are requested on the latest sync.
Definition: oxr_objects.h:2125
The reference-counted data of an action set.
Definition: oxr_objects.h:2458
uint32_t act_set_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2471
char name[XR_MAX_ACTION_SET_NAME_SIZE]
Application supplied name of this action.
Definition: oxr_objects.h:2462
bool ever_attached
Has this action set even been attached to any session, marking it as immutable.
Definition: oxr_objects.h:2468
uint32_t priority
Application supplied action set priority.
Definition: oxr_objects.h:2474
A group of actions.
Definition: oxr_objects.h:2500
struct u_hashset_item * name_item
The item in the name hashset.
Definition: oxr_objects.h:2522
struct u_hashset_item * loc_item
The item in the localized hashset.
Definition: oxr_objects.h:2525
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:2511
uint32_t act_set_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2519
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2502
struct oxr_instance * inst
Owner of this action set.
Definition: oxr_objects.h:2505
The state of a action input.
Definition: oxr_objects.h:2156
bool active
Is this active (bound and providing input)?
Definition: oxr_objects.h:2163
XrTime timestamp
When was this last changed.
Definition: oxr_objects.h:2169
A single action.
Definition: oxr_objects.h:2570
struct oxr_action_set * act_set
Owner of this action.
Definition: oxr_objects.h:2575
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2572
struct u_hashset_item * loc_item
The item in the localized hashset.
Definition: oxr_objects.h:2592
uint32_t act_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2586
struct u_hashset_item * name_item
The item in the name hashset.
Definition: oxr_objects.h:2589
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:2579
Interaction profile binding state.
Definition: oxr_objects.h:2022
uint32_t * preferred_binding_path_index
store which entry in paths was suggested, for each action key
Definition: oxr_objects.h:2034
const char * localized_name
Name presented to the user.
Definition: oxr_objects.h:2027
Debug object created by the client program.
Definition: oxr_objects.h:2603
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2605
XrDebugUtilsMessageTypeFlagsEXT message_types
Types to submit to this messenger.
Definition: oxr_objects.h:2614
PFN_xrDebugUtilsMessengerCallbackEXT user_callback
Callback function.
Definition: oxr_objects.h:2617
struct oxr_instance * inst
Owner of this messenger.
Definition: oxr_objects.h:2608
void *XR_MAY_ALIAS user_data
Opaque user data.
Definition: oxr_objects.h:2620
XrDebugUtilsMessageSeverityFlagsEXT message_severities
Severities to submit to this messenger.
Definition: oxr_objects.h:2611
dpad binding extracted from XrInteractionProfileDpadBindingEXT
Definition: oxr_objects.h:1954
dpad emulation settings from oxr_interaction_profile
Definition: oxr_objects.h:1988
A entry in the dpad state for one action set.
Definition: oxr_objects.h:1965
dpad settings we need extracted from XrInteractionProfileDpadBindingEXT
Definition: oxr_objects.h:1942
Holds dpad binding state for a single interaction profile.
Definition: oxr_objects.h:1980
Definition: oxr_event.c:30
Structure tracking which extensions are enabled for a given instance.
Definition: oxr_objects.h:1638
Helper that handles synchronizing the xr{Wait,Begin,End}Frame calls.
Definition: oxr_frame_sync.h:36
A hand tracker.
Definition: oxr_objects.h:2633
enum xrt_input_name input_name
the input name associated with this hand tracker
Definition: oxr_objects.h:2644
struct xrt_device * xdev
xrt_device backing this hand tracker
Definition: oxr_objects.h:2641
struct oxr_session * sess
Owner of this hand tracker.
Definition: oxr_objects.h:2638
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2635
Used to hold diverse child handles and ensure orderly destruction.
Definition: oxr_objects.h:1442
struct oxr_handle_base * parent
Pointer to this object's parent handle holder, if any.
Definition: oxr_objects.h:1449
uint64_t debug
Magic (per-handle-type) value for debugging.
Definition: oxr_objects.h:1444
struct oxr_handle_base * children[256]
Array of children, if any.
Definition: oxr_objects.h:1454
enum oxr_handle_state state
Current handle state.
Definition: oxr_objects.h:1459
oxr_handle_destroyer destroy
Destroy the object this handle refers to.
Definition: oxr_objects.h:1464
Main object that ties everything together.
Definition: oxr_objects.h:1651
struct oxr_instance::@263 openxr_version
The OpenXR version requested in the app info. It determines the instance's OpenXR version.
bool parallel_views
For applications that rely on views being parallel, notably some OpenVR games with OpenComposite.
Definition: oxr_objects.h:1738
size_t path_num
Number of paths in the array (0 is always null).
Definition: oxr_objects.h:1687
bool disable_vulkan_format_depth_stencil
Unreal has a bug in the VulkanRHI backend.
Definition: oxr_objects.h:1727
XrVersion major_minor
Stores only major.minor version. Simplifies comparisons for e.g. "at least OpenXR 1....
Definition: oxr_objects.h:1666
bool skip_end_session
Unreal 4 has a bug calling xrEndSession; the function should just exit.
Definition: oxr_objects.h:1729
struct oxr_path ** path_array
Mapping from ID to path.
Definition: oxr_objects.h:1683
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:1735
size_t path_array_length
Total length of path array.
Definition: oxr_objects.h:1685
struct oxr_extension_status extensions
Enabled extensions.
Definition: oxr_objects.h:1660
struct oxr_debug_messenger * messengers[256]
Debug messengers.
Definition: oxr_objects.h:1742
struct u_hashset * path_store
Path store, for looking up paths.
Definition: oxr_objects.h:1681
struct oxr_interaction_profile ** profiles
Interaction profile bindings that have been suggested by the client.
Definition: oxr_objects.h:1698
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:1653
A single interaction profile.
Definition: oxr_objects.h:2000
enum xrt_device_name xname
Used to lookup xrt_binding_profile for fallback.
Definition: oxr_objects.h:2004
const char * localized_name
Name presented to the user.
Definition: oxr_objects.h:2007
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:2420
void(* destroy)(struct oxr_refcounted *)
Destruction callback.
Definition: oxr_objects.h:2423
Object that client program interact with.
Definition: oxr_objects.h:1767
struct u_hashmap_int * act_attachments_by_key
A map of action key to action attachment.
Definition: oxr_objects.h:1849
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:1886
struct xrt_compositor_native * xcn
Native compositor that is wrapped by client compositors.
Definition: oxr_objects.h:1779
struct xrt_space_relation local_space_pure_relation
initial relation of head in "global" space.
Definition: oxr_objects.h:1893
struct xrt_session * xs
The xrt_session backing this session.
Definition: oxr_objects.h:1776
struct oxr_action_set_attachment * act_set_attachments
An array of action set attachments that this session owns.
Definition: oxr_objects.h:1823
uint32_t frame_timing_wait_sleep_ms
Extra sleep in wait frame.
Definition: oxr_objects.h:1881
struct os_precise_sleeper sleeper
Used to implement precise extra sleeping in wait frame.
Definition: oxr_objects.h:1815
enum oxr_session_graphics_ext gfx_ext
What graphics type was this session created with.
Definition: oxr_objects.h:1773
size_t profiles_on_attachment_size
Clone of all suggested binding profiles at the point of action set/session attachment.
Definition: oxr_objects.h:1855
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:1791
struct u_hashmap_int * act_sets_attachments_by_key
A map of action set key to action set attachments.
Definition: oxr_objects.h:1837
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:1769
float ipd_meters
IPD, to be expanded to a proper 3D relation.
Definition: oxr_objects.h:1873
size_t action_set_attachment_count
Length of oxr_session::act_set_attachments.
Definition: oxr_objects.h:1828
bool frame_timing_spew
Frame timing debug output.
Definition: oxr_objects.h:1878
Can be one of several reference space types, or a space that is bound to an action.
Definition: oxr_objects.h:2315
struct oxr_subaction_paths subaction_paths
Which sub action path is this?
Definition: oxr_objects.h:2332
enum oxr_space_type space_type
What kind of space is this?
Definition: oxr_objects.h:2329
uint32_t act_key
Action key from which action this space was created from.
Definition: oxr_objects.h:2326
struct xrt_pose pose
Pose that was given during creation.
Definition: oxr_objects.h:2323
struct oxr_session * sess
Owner of this space.
Definition: oxr_objects.h:2320
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2317
A parsed equivalent of a list of sub-action paths.
Definition: oxr_objects.h:2077
A set of images used for rendering.
Definition: oxr_objects.h:2356
struct oxr_session * sess
Owner of this swapchain.
Definition: oxr_objects.h:2361
uint32_t face_count
The number of cubemap faces. 6 for cubemaps, 1 otherwise.
Definition: oxr_objects.h:2373
struct xrt_swapchain * swapchain
Compositor swapchain.
Definition: oxr_objects.h:2364
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2358
uint32_t width
Swapchain size.
Definition: oxr_objects.h:2367
uint32_t array_layer_count
For 1 is 2D texture, greater then 1 2D array texture.
Definition: oxr_objects.h:2370
Single or multiple devices grouped together to form a system that sessions can be created from.
Definition: oxr_objects.h:1479
struct xrt_system * xsys
The XRT interfaces level system.
Definition: oxr_objects.h:1483
VkPhysicalDevice suggested_vulkan_physical_device
The device returned with the last xrGetVulkanGraphicsDeviceKHR or xrGetVulkanGraphicsDevice2KHR call.
Definition: oxr_objects.h:1523
struct xrt_system_devices * xsysd
System devices used in all session types.
Definition: oxr_objects.h:1486
struct xrt_space_overseer * xso
Space overseer used in all session types.
Definition: oxr_objects.h:1489
VkInstance vulkan_enable2_instance
The instance/device we create when vulkan_enable2 is used.
Definition: oxr_objects.h:1520
bool gotten_requirements
Have the client application called the gfx api requirements func?
Definition: oxr_objects.h:1497
struct xrt_system_compositor * xsysc
System compositor, used to create session compositors.
Definition: oxr_objects.h:1492
struct xrt_system_roles dynamic_roles_cache
Cache of the last known system roles, see xrt_system_roles::generation_id.
Definition: oxr_objects.h:1509
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
Definition: xrt_defines.h:1790
Main compositor server interface.
Definition: xrt_compositor.h:2233
Common compositor client interface/base.
Definition: xrt_compositor.h:997
A single HMD or input device.
Definition: xrt_device.h:254
enum xrt_device_name name
Enum identifier of the device.
Definition: xrt_device.h:256
Joint set type used for hand tracking.
Definition: xrt_defines.h:1402
This interface acts as a root object for Monado.
Definition: xrt_instance.h:114
A single named output, that sits on a xrt_device.
Definition: xrt_device.h:182
Each plane has n polygons; ultimately plane metadata from locations and vetices is reconstructed.
Definition: xrt_plane_detector.h:171
A pose composed of a position and orientation.
Definition: xrt_defines.h:467
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:246
Object that oversees and manages spaces, one created for each XR system.
Definition: xrt_space.h:96
A relation with two spaces, includes velocity and acceleration.
Definition: xrt_defines.h:659
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:31
Common swapchain interface/base.
Definition: xrt_compositor.h:541
The system compositor handles composition for a system.
Definition: xrt_compositor.h:2423
A collection of xrt_device, and an interface for identifying the roles they have been assigned.
Definition: xrt_system.h:222
struct xrt_device * head
An observing pointer to the device serving as the "head" (and HMD).
Definition: xrt_system.h:251
struct xrt_device * face
An observing pointer to the device providing face tracking (optional).
Definition: xrt_system.h:263
struct xrt_device * eyes
An observing pointer to the device providing eye tracking (optional).
Definition: xrt_system.h:257
struct xrt_system_devices::@242::@243 hand_tracking
Devices providing optical (or otherwise more directly measured than from controller estimation) hand ...
struct xrt_system_devices::@242 static_roles
Observing pointers for devices in some static (unchangeable) roles.
struct xrt_device * left
An observing pointer to the device providing hand tracking for the left hand (optional).
Definition: xrt_system.h:285
struct xrt_device * right
An observing pointer to the device providing hand tracking for the right hand (optional).
Definition: xrt_system.h:294
struct xrt_device * body
An observing pointer to the device providing body tracking (optional).
Definition: xrt_system.h:269
Data associating a device index (in xrt_system_devices::xdevs) with a given "role" for dynamic role s...
Definition: xrt_system.h:162
A system is a collection of devices, policies and optionally a compositor that is organised into a ch...
Definition: xrt_system.h:63
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 holding Android-specific details.
xrt_android_lifecycle_event
Distinguishes the possible Android lifecycle events from each other.
Definition: xrt_android.h:32
Header declaring XRT graphics interfaces.
Auto detect OS and certain features.
xrt_perf_notify_level
Performance level.
Definition: xrt_defines.h:1979
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:714
xrt_perf_domain
Domain type.
Definition: xrt_defines.h:1952
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.