24#include "xrt/xrt_config_have.h"
33#include "oxr_extension_support.h"
38#if defined(XRT_HAVE_D3D11) || defined(XRT_HAVE_D3D12)
43#ifdef XRT_FEATURE_RENDERDOC
44#include "renderdoc_app.h"
76#define XRT_CAST_PTR_TO_OXR_HANDLE(HANDLE_TYPE, PTR) ((HANDLE_TYPE)(uint64_t)(uintptr_t)(PTR))
87#define XRT_CAST_OXR_HANDLE_TO_PTR(PTR_TYPE, HANDLE) ((PTR_TYPE)(uintptr_t)(uint64_t)(HANDLE))
131struct oxr_face_tracker_android;
132struct oxr_facial_tracker_htc;
133struct oxr_face_tracker2_fb;
134struct oxr_body_tracker_fb;
135struct oxr_body_tracker_bd;
137struct oxr_plane_detector_ext;
139#define XRT_MAX_HANDLE_CHILDREN 256
140#define OXR_MAX_BINDINGS_PER_ACTION 32
162#define OXR_XRT_POSE_TO_XRPOSEF(FROM, TO) \
165 struct xrt_pose xrt; \
167 } safe_copy = {FROM}; \
168 TO = safe_copy.oxr; \
174#define OXR_XRT_FOV_TO_XRFOVF(FROM, TO) \
177 struct xrt_fov xrt; \
179 } safe_copy = {FROM}; \
180 TO = safe_copy.oxr; \
184static inline const char *
185xr_action_type_to_str(XrActionType type)
189 #define PRINT(name, value) \
190 case name: return #name;
191 XR_LIST_ENUM_XrActionType(PRINT)
193 default:
return "XR_ACTION_TYPE_UNKNOWN";
234static inline XrInstance
252 const XrInstanceCreateInfo *createInfo,
253 XrVersion major_minor,
269oxr_instance_get_properties(
struct oxr_logger *log,
271 XrInstanceProperties *instanceProperties);
279oxr_instance_convert_time_to_timespec(
struct oxr_logger *log,
282 struct timespec *timespecTime);
288oxr_instance_convert_timespec_to_time(
struct oxr_logger *log,
290 const struct timespec *timespecTime,
294#ifdef XR_USE_PLATFORM_WIN32
300oxr_instance_convert_time_to_win32perfcounter(
struct oxr_logger *log,
303 LARGE_INTEGER *win32perfcounterTime);
309oxr_instance_convert_win32perfcounter_to_time(
struct oxr_logger *log,
311 const LARGE_INTEGER *win32perfcounterTime,
375 struct oxr_logger *log,
const struct oxr_instance *inst, XrPath path,
const char **out_str,
size_t *out_length);
394static inline XrActionSet
405static inline XrHandTrackerEXT
411#ifdef OXR_HAVE_EXT_plane_detection
417static inline XrPlaneDetectorEXT
418oxr_plane_detector_to_openxr(
struct oxr_plane_detector_ext *plane_detector)
429static inline XrAction
435#ifdef OXR_HAVE_HTC_facial_tracking
441static inline XrFacialTrackerHTC
442oxr_facial_tracker_htc_to_openxr(
struct oxr_facial_tracker_htc *face_tracker_htc)
448#ifdef OXR_HAVE_FB_body_tracking
454static inline XrBodyTrackerFB
455oxr_body_tracker_fb_to_openxr(
struct oxr_body_tracker_fb *body_tracker_fb)
461#ifdef OXR_HAVE_BD_body_tracking
467static inline XrBodyTrackerBD
468oxr_body_tracker_bd_to_openxr(
struct oxr_body_tracker_bd *body_tracker_bd)
474#ifdef OXR_HAVE_FB_face_tracking2
480static inline XrFaceTracker2FB
481oxr_face_tracker2_fb_to_openxr(
struct oxr_face_tracker2_fb *face_tracker2_fb)
487#ifdef OXR_HAVE_ANDROID_face_tracking
493static inline XrFaceTrackerANDROID
494oxr_face_tracker_android_to_openxr(
struct oxr_face_tracker_android *face_tracker_android)
523 uint32_t subaction_path_count,
524 const XrPath *subaction_paths,
544 const XrActionSetCreateInfo *createInfo,
553 const XrActionCreateInfo *createInfo,
563 const XrSessionActionSetsAttachInfo *bindInfo);
576oxr_session_get_action_attachment(
struct oxr_session *sess,
586 uint32_t countActionSets,
587 const XrActiveActionSet *actionSets,
588 const XrActiveActionSetPrioritiesEXT *activePriorities);
594oxr_action_enumerate_bound_sources(
struct oxr_logger *log,
597 uint32_t sourceCapacityInput,
598 uint32_t *sourceCountOutput,
609 XrActionStateBoolean *data);
615oxr_action_get_vector1f(
struct oxr_logger *log,
619 XrActionStateFloat *data);
625oxr_action_get_vector2f(
struct oxr_logger *log,
629 XrActionStateVector2f *data);
638 XrActionStatePose *data);
643oxr_action_apply_haptic_feedback(
struct oxr_logger *log,
647 const XrHapticBaseHeader *hapticEvent);
652oxr_action_stop_haptic_feedback(
struct oxr_logger *log,
685oxr_get_profile_for_device_name(
struct oxr_logger *log,
717 size_t max_binding_count,
719 size_t *out_binding_count);
725oxr_action_suggest_interaction_profile_bindings(
struct oxr_logger *log,
727 const XrInteractionProfileSuggestedBinding *suggestedBindings,
734oxr_action_get_current_interaction_profile(
struct oxr_logger *log,
736 XrPath topLevelUserPath,
737 XrInteractionProfileState *interactionProfile);
745 const XrInputSourceLocalizedNameGetInfo *getInfo,
746 uint32_t bufferCapacityInput,
747 uint32_t *bufferCountOutput,
786oxr_dpad_state_get_or_add(
struct oxr_dpad_state *state, uint64_t key);
823static inline XrSession
832 const XrSessionCreateInfo *createInfo,
836oxr_session_enumerate_formats(
struct oxr_logger *log,
838 uint32_t formatCapacityInput,
839 uint32_t *formatCountOutput,
849oxr_session_begin(
struct oxr_logger *log,
struct oxr_session *sess,
const XrSessionBeginInfo *beginInfo);
857XRT_CHECK_RESULT XrResult
861oxr_session_locate_views(
struct oxr_logger *log,
863 const XrViewLocateInfo *viewLocateInfo,
864 XrViewState *viewState,
865 uint32_t viewCapacityInput,
866 uint32_t *viewCountOutput,
889#ifdef OXR_HAVE_KHR_android_thread_settings
891oxr_session_android_thread_settings(
struct oxr_logger *log,
893 XrAndroidThreadTypeKHR threadType,
897#ifdef OXR_HAVE_KHR_visibility_mask
899oxr_session_get_visibility_mask(
struct oxr_logger *log,
901 XrVisibilityMaskTypeKHR visibilityMaskType,
903 XrVisibilityMaskKHR *visibilityMask);
906oxr_event_push_XrEventDataVisibilityMaskChangedKHR(
struct oxr_logger *log,
908 XrViewConfigurationType viewConfigurationType,
912#ifdef OXR_HAVE_EXT_performance_settings
914oxr_session_set_perf_level(
struct oxr_logger *log,
916 XrPerfSettingsDomainEXT domain,
917 XrPerfSettingsLevelEXT level);
936oxr_space_action_create(
struct oxr_logger *log,
939 const XrActionSpaceCreateInfo *createInfo,
943oxr_space_get_reference_bounds_rect(
struct oxr_logger *log,
945 XrReferenceSpaceType referenceSpaceType,
946 XrExtent2Df *bounds);
949oxr_space_reference_create(
struct oxr_logger *log,
951 const XrReferenceSpaceCreateInfo *createInfo,
976 XrSpaceLocations *locations);
990XRT_CHECK_RESULT XrResult
1007XRT_CHECK_RESULT XrResult
1020static inline XrSwapchain
1036static inline XrDebugUtilsMessengerEXT
1045 const XrDebugUtilsMessengerCreateInfoEXT *,
1060 uint32_t system_count,
1061 XrFormFactor form_factor,
1067 XrSystemId systemId,
1068 uint32_t view_count,
1077 XrSystemId systemId,
1081oxr_system_get_properties(
struct oxr_logger *log,
struct oxr_system *sys, XrSystemProperties *properties);
1084oxr_system_enumerate_view_confs(
struct oxr_logger *log,
1086 uint32_t viewConfigurationTypeCapacityInput,
1087 uint32_t *viewConfigurationTypeCountOutput,
1088 XrViewConfigurationType *viewConfigurationTypes);
1091oxr_system_enumerate_blend_modes(
struct oxr_logger *log,
1093 XrViewConfigurationType viewConfigurationType,
1094 uint32_t environmentBlendModeCapacityInput,
1095 uint32_t *environmentBlendModeCountOutput,
1096 XrEnvironmentBlendMode *environmentBlendModes);
1099oxr_system_get_view_conf_properties(
struct oxr_logger *log,
1101 XrViewConfigurationType viewConfigurationType,
1102 XrViewConfigurationProperties *configurationProperties);
1105oxr_system_enumerate_view_conf_views(
struct oxr_logger *log,
1107 XrViewConfigurationType viewConfigurationType,
1108 uint32_t viewCapacityInput,
1109 uint32_t *viewCountOutput,
1110 XrViewConfigurationView *views);
1122oxr_system_get_face_tracking_android_support(
struct oxr_logger *log,
struct oxr_instance *inst,
bool *supported);
1125oxr_system_get_face_tracking_htc_support(
struct oxr_logger *log,
1128 bool *supports_lip);
1131oxr_system_get_face_tracking2_fb_support(
struct oxr_logger *log,
1133 bool *supports_audio,
1134 bool *supports_visual);
1152oxr_event_push_XrEventDataSessionStateChanged(
struct oxr_logger *log,
1154 XrSessionState state,
1158oxr_event_push_XrEventDataInteractionProfileChanged(
struct oxr_logger *log,
struct oxr_session *sess);
1161oxr_event_push_XrEventDataReferenceSpaceChangePending(
struct oxr_logger *log,
1163 XrReferenceSpaceType referenceSpaceType,
1166 const XrPosef *poseInPreviousSpace);
1168#ifdef OXR_HAVE_FB_display_refresh_rate
1170oxr_event_push_XrEventDataDisplayRefreshRateChangedFB(
struct oxr_logger *log,
1172 float fromDisplayRefreshRate,
1173 float toDisplayRefreshRate);
1176#ifdef OXR_HAVE_EXTX_overlay
1178oxr_event_push_XrEventDataMainSessionVisibilityChangedEXTX(
struct oxr_logger *log,
1183#ifdef OXR_HAVE_EXT_performance_settings
1185oxr_event_push_XrEventDataPerfSettingsEXTX(
struct oxr_logger *log,
1188 enum xrt_perf_sub_domain subDomain,
1212oxr_xdev_destroy(
struct xrt_device **xdev_ptr);
1226#ifdef OXR_HAVE_MNDX_xdev_space
1227static inline XrXDevListMNDX
1228oxr_xdev_list_to_openxr(
struct oxr_xdev_list *sc)
1236 const XrCreateXDevListInfoMNDX *createInfo,
1237 struct oxr_xdev_list **out_xdl);
1240oxr_xdev_list_get_properties(
struct oxr_logger *log,
1241 struct oxr_xdev_list *xdl,
1243 XrXDevPropertiesMNDX *properties);
1246oxr_xdev_list_space_create(
struct oxr_logger *log,
1247 struct oxr_xdev_list *xdl,
1248 const XrCreateXDevSpaceInfoMNDX *createInfo,
1261#ifdef XR_USE_GRAPHICS_API_OPENGL
1262#ifdef XR_USE_PLATFORM_XLIB
1265oxr_session_populate_gl_xlib(
struct oxr_logger *log,
1267 XrGraphicsBindingOpenGLXlibKHR
const *next,
1271#ifdef XR_USE_PLATFORM_WIN32
1273oxr_session_populate_gl_win32(
struct oxr_logger *log,
1275 XrGraphicsBindingOpenGLWin32KHR
const *next,
1280#if defined(XR_USE_GRAPHICS_API_OPENGL) || defined(XR_USE_GRAPHICS_API_OPENGL_ES)
1284 const XrSwapchainCreateInfo * ,
1289#if defined(XR_USE_GRAPHICS_API_OPENGL_ES)
1290#if defined(XR_USE_PLATFORM_ANDROID)
1292oxr_session_populate_gles_android(
struct oxr_logger *log,
1294 XrGraphicsBindingOpenGLESAndroidKHR
const *next,
1306#ifdef XR_USE_GRAPHICS_API_VULKAN
1309oxr_vk_get_instance_exts(
struct oxr_logger *log,
1311 uint32_t namesCapacityInput,
1312 uint32_t *namesCountOutput,
1316oxr_vk_get_device_exts(
struct oxr_logger *log,
1318 uint32_t namesCapacityInput,
1319 uint32_t *namesCountOutput,
1323oxr_vk_get_requirements(
struct oxr_logger *log,
1325 XrGraphicsRequirementsVulkanKHR *graphicsRequirements);
1330 const XrVulkanInstanceCreateInfoKHR *createInfo,
1331 VkInstance *vulkanInstance,
1332 VkResult *vulkanResult);
1337 const XrVulkanDeviceCreateInfoKHR *createInfo,
1338 VkDevice *vulkanDevice,
1339 VkResult *vulkanResult);
1342oxr_vk_get_physical_device(
struct oxr_logger *log,
1345 VkInstance vkInstance,
1346 PFN_vkGetInstanceProcAddr getProc,
1347 VkPhysicalDevice *vkPhysicalDevice);
1350oxr_session_populate_vk(
struct oxr_logger *log,
1352 XrGraphicsBindingVulkanKHR
const *next,
1358 const XrSwapchainCreateInfo * ,
1370#ifdef XR_USE_PLATFORM_EGL
1373oxr_session_populate_egl(
struct oxr_logger *log,
1375 XrGraphicsBindingEGLMNDX
const *next,
1386#if defined(XRT_HAVE_D3D11) || defined(XRT_HAVE_D3D12) || defined(XRT_DOXYGEN)
1392 D3D_FEATURE_LEVEL *min_feature_level);
1405#ifdef XR_USE_GRAPHICS_API_D3D11
1408oxr_d3d11_get_requirements(
struct oxr_logger *log,
1410 XrGraphicsRequirementsD3D11KHR *graphicsRequirements);
1422oxr_session_populate_d3d11(
struct oxr_logger *log,
1424 XrGraphicsBindingD3D11KHR
const *next,
1428oxr_swapchain_d3d11_create(
struct oxr_logger *,
1430 const XrSwapchainCreateInfo *,
1441#ifdef XR_USE_GRAPHICS_API_D3D12
1444oxr_d3d12_get_requirements(
struct oxr_logger *log,
1446 XrGraphicsRequirementsD3D12KHR *graphicsRequirements);
1458oxr_session_populate_d3d12(
struct oxr_logger *log,
1460 XrGraphicsBindingD3D12KHR
const *next,
1464oxr_swapchain_d3d12_create(
struct oxr_logger *,
1466 const XrSwapchainCreateInfo *,
1517 XrViewConfigurationType view_config_type;
1519 uint32_t view_count;
1520 XrViewConfigurationView views[XRT_MAX_COMPOSITOR_VIEW_CONFIGS_VIEW_COUNT];
1522 uint32_t blend_mode_count;
1523 XrEnvironmentBlendMode blend_modes[3];
1553 XrSystemId systemId;
1558 uint32_t view_config_count;
1561 XrReferenceSpaceType reference_spaces[5];
1562 uint32_t reference_space_count;
1566#ifdef OXR_HAVE_MNDX_xdev_space
1567 bool supports_xdev_space;
1570#ifdef XR_USE_GRAPHICS_API_VULKAN
1586 bool external_fence_fd_enabled;
1587 bool external_semaphore_fd_enabled;
1588 bool timeline_semaphore_enabled;
1589 bool debug_utils_enabled;
1590 bool image_format_list_enabled;
1595#if defined(XR_USE_GRAPHICS_API_D3D11) || defined(XR_USE_GRAPHICS_API_D3D12)
1596 LUID suggested_d3d_luid;
1597 bool suggested_d3d_luid_valid;
1605#define MAKE_EXT_STATUS(mixed_case, all_caps) bool mixed_case;
1613 OXR_EXTENSION_SUPPORT_GENERATE(MAKE_EXT_STATUS)
1615#undef MAKE_EXT_STATUS
1630 struct u_debug_gui *debug_ui;
1677 size_t profile_count;
1684#define SUBACTION_PATH_MEMBER(X) XrPath X;
1687#undef SUBACTION_PATH_MEMBER
1753 bool lifecycle_verbose;
1756 bool debug_bindings;
1758#ifdef XRT_FEATURE_RENDERDOC
1759 RENDERDOC_API_1_4_1 *rdoc_api;
1762#ifdef XRT_OS_ANDROID
1794 XrSessionState state;
1809 bool compositor_visible;
1810 bool compositor_focused;
1814 int active_wait_frames;
1815 struct os_mutex active_wait_frames_lock;
1885#define OXR_PATH_MEMBER(X) XrPath X;
1888#undef OXR_PATH_MEMBER
1911 const XrSwapchainCreateInfo *,
1926static inline XrResult
1929 switch (session->state) {
1930 case XR_SESSION_STATE_LOSS_PENDING:
return XR_SESSION_LOSS_PENDING;
1931 default:
return XR_SUCCESS;
1941static inline XrResult
1944 switch (session->state) {
1945 case XR_SESSION_STATE_LOSS_PENDING:
return XR_SESSION_LOSS_PENDING;
1946 case XR_SESSION_STATE_FOCUSED:
return XR_SUCCESS;
1947 default:
return XR_SESSION_NOT_FOCUSED;
1951#ifdef OXR_HAVE_FB_display_refresh_rate
1953oxr_session_get_display_refresh_rate(
struct oxr_logger *log,
struct oxr_session *sess,
float *displayRefreshRate);
1956oxr_session_request_display_refresh_rate(
struct oxr_logger *log,
struct oxr_session *sess,
float displayRefreshRate);
1966 float forceThreshold;
1967 float forceThresholdReleased;
1989#ifdef XR_EXT_dpad_binding
1991 uint32_t dpad_count;
2014 uint32_t path_count;
2033 size_t binding_count;
2047 uint32_t path_count;
2054 uint32_t act_key_count;
2102#define OXR_SUBPATH_MEMBER(X) bool X;
2104#undef OXR_SUBPATH_MEMBER
2116#define OXR_CHECK_SUBACTION_PATHS(X) \
2117 if (a->X && !b->X) { \
2121#undef OXR_CHECK_SUBACTION_PATHS
2213 size_t transform_count;
2252 int64_t stop_output_time;
2253 size_t output_count;
2296#define OXR_CACHE_MEMBER(X) struct oxr_action_cache X;
2298#undef OXR_CACHE_MEMBER
2309 switch (space_type) {
2310 case OXR_SPACE_TYPE_REFERENCE_VIEW:
2311 case OXR_SPACE_TYPE_REFERENCE_LOCAL:
2312 case OXR_SPACE_TYPE_REFERENCE_LOCAL_FLOOR:
2313 case OXR_SPACE_TYPE_REFERENCE_STAGE:
2314 case OXR_SPACE_TYPE_REFERENCE_UNBOUNDED_MSFT:
2315 case OXR_SPACE_TYPE_REFERENCE_COMBINED_EYE_VARJO:
2316 case OXR_SPACE_TYPE_REFERENCE_LOCALIZATION_MAP_ML:
2320 case OXR_SPACE_TYPE_ACTION:
2321 case OXR_SPACE_TYPE_XDEV_POSE:
2366 bool feature_eye_tracking;
2432 XrResult (*enumerate_images)(
struct oxr_logger *,
2435 XrSwapchainImageBaseHeader *);
2437 XrResult (*acquire_image)(
struct oxr_logger *,
2439 const XrSwapchainImageAcquireInfo *,
2490 char name[XR_MAX_ACTION_SET_NAME_SIZE];
2572 char name[XR_MAX_ACTION_NAME_SIZE];
2651#ifdef OXR_HAVE_FB_passthrough
2653struct oxr_passthrough
2659 XrPassthroughFlagsFB
flags;
2664struct oxr_passthrough_layer
2670 XrPassthroughFB passthrough;
2672 XrPassthroughFlagsFB
flags;
2674 XrPassthroughLayerPurposeFB purpose;
2678 XrPassthroughStyleFB style;
2679 XrPassthroughColorMapMonoToRgbaFB monoToRgba;
2680 XrPassthroughColorMapMonoToMonoFB monoToMono;
2681 XrPassthroughBrightnessContrastSaturationFB brightnessContrastSaturation;
2685oxr_passthrough_create(
struct oxr_logger *log,
2687 const XrPassthroughCreateInfoFB *createInfo,
2688 struct oxr_passthrough **out_passthrough);
2691oxr_passthrough_layer_create(
struct oxr_logger *log,
2693 const XrPassthroughLayerCreateInfoFB *createInfo,
2694 struct oxr_passthrough_layer **out_layer);
2696static inline XrPassthroughFB
2697oxr_passthrough_to_openxr(
struct oxr_passthrough *passthrough)
2702static inline XrPassthroughLayerFB
2703oxr_passthrough_layer_to_openxr(
struct oxr_passthrough_layer *passthroughLayer)
2709oxr_event_push_XrEventDataPassthroughStateChangedFB(
struct oxr_logger *log,
2711 XrPassthroughStateChangedFlagsFB
flags);
2715#ifdef OXR_HAVE_HTC_facial_tracking
2725struct oxr_facial_tracker_htc
2737 enum xrt_facial_tracking_type_htc facial_tracking_type;
2740 bool feature_incremented;
2744oxr_facial_tracker_htc_create(
struct oxr_logger *log,
2746 const XrFacialTrackerCreateInfoHTC *createInfo,
2747 struct oxr_facial_tracker_htc **out_face_tracker_htc);
2750oxr_get_facial_expressions_htc(
struct oxr_logger *log,
2751 struct oxr_facial_tracker_htc *facial_tracker_htc,
2752 XrFacialExpressionsHTC *facialExpressions);
2755#ifdef OXR_HAVE_FB_body_tracking
2764struct oxr_body_tracker_fb
2776 enum xrt_body_joint_set_type_fb joint_set_type;
2780oxr_create_body_tracker_fb(
struct oxr_logger *log,
2782 const XrBodyTrackerCreateInfoFB *createInfo,
2783 struct oxr_body_tracker_fb **out_body_tracker_fb);
2786oxr_get_body_skeleton_fb(
struct oxr_logger *log,
2787 struct oxr_body_tracker_fb *body_tracker_fb,
2788 XrBodySkeletonFB *skeleton);
2791oxr_locate_body_joints_fb(
struct oxr_logger *log,
2792 struct oxr_body_tracker_fb *body_tracker_fb,
2794 const XrBodyJointsLocateInfoFB *locateInfo,
2795 XrBodyJointLocationsFB *locations);
2798#ifdef OXR_HAVE_BD_body_tracking
2807struct oxr_body_tracker_bd
2819 enum xrt_body_joint_set_type_bd joint_set_type;
2823oxr_create_body_tracker_bd(
struct oxr_logger *log,
2825 const XrBodyTrackerCreateInfoBD *createInfo,
2826 struct oxr_body_tracker_bd **out_body_tracker_bd);
2829oxr_locate_body_joints_bd(
struct oxr_logger *log,
2830 struct oxr_body_tracker_bd *body_tracker_bd,
2832 const XrBodyJointsLocateInfoBD *locateInfo,
2833 XrBodyJointLocationsBD *locations);
2839#ifdef OXR_HAVE_FB_face_tracking2
2848struct oxr_face_tracker2_fb
2860 bool visual_enabled;
2863 bool feature_incremented;
2867oxr_face_tracker2_fb_create(
struct oxr_logger *log,
2869 const XrFaceTrackerCreateInfo2FB *createInfo,
2870 struct oxr_face_tracker2_fb **out_face_tracker2_fb);
2873oxr_get_face_expression_weights2_fb(
struct oxr_logger *log,
2874 struct oxr_face_tracker2_fb *face_tracker2_fb,
2875 const XrFaceExpressionInfo2FB *expression_info,
2876 XrFaceExpressionWeights2FB *expression_weights);
2879#ifdef OXR_HAVE_MNDX_xdev_space
2897 uint64_t generation_number;
2904 uint32_t device_count;
2908#ifdef OXR_HAVE_EXT_plane_detection
2918struct oxr_plane_detector_ext
2930 XrPlaneDetectionStateEXT state;
2943 XrPlaneDetectorLocationEXT *xr_locations;
2946 uint64_t detection_id;
2950#ifdef OXR_HAVE_EXT_future
2959struct oxr_future_ext
2979static inline XrFutureEXT
2980oxr_future_ext_to_openxr(
struct oxr_future_ext *future_ext)
2990 struct oxr_future_ext **out_oxr_future_ext);
2993oxr_future_invalidate(
struct oxr_logger *log,
struct oxr_future_ext *oxr_future);
2996oxr_future_ext_poll(
struct oxr_logger *log,
const struct oxr_future_ext *oxr_future, XrFuturePollResultEXT *pollResult);
2999oxr_future_ext_cancel(
struct oxr_logger *log,
struct oxr_future_ext *oxr_future);
3002oxr_future_ext_complete(
struct oxr_logger *log,
3003 struct oxr_future_ext *oxr_future,
3008#ifdef OXR_HAVE_EXT_user_presence
3010oxr_event_push_XrEventDataUserPresenceChangedEXT(
struct oxr_logger *log,
struct oxr_session *sess,
bool isUserPresent);
3013#ifdef OXR_HAVE_ANDROID_face_tracking
3023struct oxr_face_tracker_android
3035 bool feature_incremented;
3039oxr_face_tracker_android_create(
struct oxr_logger *log,
3041 const XrFaceTrackerCreateInfoANDROID *createInfo,
3042 XrFaceTrackerANDROID *faceTracker);
3046 struct oxr_face_tracker_android *facial_tracker_android,
3047 const XrFaceStateGetInfoANDROID *getInfo,
3048 XrFaceStateANDROID *faceStateOutput);
3051oxr_get_face_calibration_state_android(
struct oxr_logger *log,
3052 struct oxr_face_tracker_android *facial_tracker_android,
3053 XrBool32 *faceIsCalibratedOutput);
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:225
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:2461
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:400
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:304
static XrSwapchain oxr_swapchain_to_openxr(struct oxr_swapchain *sc)
To go back to a OpenXR object.
Definition: oxr_objects.h:1021
oxr_image_state
Tracks the state of a image that belongs to a oxr_swapchain.
Definition: oxr_defines.h:97
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
void oxr_binding_find_bindings_from_act_key(struct oxr_logger *log, struct oxr_interaction_profile *profile, uint32_t key, size_t max_binding_count, struct oxr_binding **out_bindings, size_t *out_binding_count)
Find all bindings that is the given action key is bound to.
Definition: oxr_binding.c:533
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:368
static XrResult oxr_session_success_result(struct oxr_session *session)
Returns XR_SUCCESS or XR_SESSION_LOSS_PENDING as appropriate.
Definition: oxr_objects.h:1924
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:476
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:1939
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:251
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:507
XrResult oxr_session_attach_action_sets(struct oxr_logger *log, struct oxr_session *sess, const XrSessionActionSetsAttachInfo *bindInfo)
Definition: oxr_input.c:1801
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:594
static XrDebugUtilsMessengerEXT oxr_messenger_to_openxr(struct oxr_debug_messenger *mssngr)
To go back to a OpenXR object.
Definition: oxr_objects.h:1037
XrResult oxr_space_locate(struct oxr_logger *log, struct oxr_space *spc, struct oxr_space *baseSpc, XrTime time, XrSpaceLocation *location)
Definition: oxr_space.c:461
XrResult oxr_session_frame_end(struct oxr_logger *log, struct oxr_session *sess, const XrFrameEndInfo *frameEndInfo)
Definition: oxr_session_frame_end.c:1643
static XrInstance oxr_instance_to_openxr(struct oxr_instance *inst)
To go back to a OpenXR object.
Definition: oxr_objects.h:235
static XrHandTrackerEXT oxr_hand_tracker_to_openxr(struct oxr_hand_tracker *hand_tracker)
To go back to a OpenXR object.
Definition: oxr_objects.h:406
static XrActionSet oxr_action_set_to_openxr(struct oxr_action_set *act_set)
To go back to a OpenXR object.
Definition: oxr_objects.h:395
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:432
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:2110
static XrSession oxr_session_to_openxr(struct oxr_session *sess)
To go back to a OpenXR object.
Definition: oxr_objects.h:824
oxr_session_graphics_ext
What graphics API was this session created with.
Definition: oxr_defines.h:128
static XrAction oxr_action_to_openxr(struct oxr_action *act)
To go back to a OpenXR object.
Definition: oxr_objects.h:430
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:91
oxr_space_type
Internal enum for the type of space, lets us reason about action spaces.
Definition: oxr_defines.h:109
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:229
static void oxr_refcounted_ref(struct oxr_refcounted *orc)
Increase the reference count of orc.
Definition: oxr_objects.h:2452
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:696
XrResult oxr_session_request_exit(struct oxr_logger *log, struct oxr_session *sess)
Definition: oxr_session.c:462
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:149
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:243
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:248
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:704
XrResult oxr_instance_init_system_locked(struct oxr_logger *log, struct oxr_instance *inst)
Must be called with oxr_instance::system_init_lock held.
Definition: oxr_instance.c:486
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
XRT_CHECK_RESULT XrResult oxr_space_get_xrt_space(struct oxr_logger *log, struct oxr_space *spc, struct xrt_space **out_xspace)
Get the xrt_space associated with this oxr_space, the xrt_space will be reference counted by this fun...
Definition: oxr_space.c:626
XrResult oxr_session_frame_wait(struct oxr_logger *log, struct oxr_session *sess, XrFrameState *frameState)
Definition: oxr_session.c:937
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:51
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:247
static XrSpace oxr_space_to_openxr(struct oxr_space *spc)
To go back to a OpenXR object.
Definition: oxr_objects.h:930
oxr_subaction_path
Sub action paths.
Definition: oxr_defines.h:68
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:110
#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:76
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:2502
#define XRT_SYSTEM_MAX_DEVICES
Maximum number of devices simultaneously usable by an implementation of xrt_system_devices.
Definition: xrt_limits.h:26
#define XRT_MAX_SWAPCHAIN_IMAGES
Max swapchain images, artificial limit.
Definition: xrt_limits.h:53
xrt_input_name
Every internal input source known to monado with a baked in type.
Definition: xrt_defines.h:915
static void xrt_reference_inc(struct xrt_reference *xref)
Increment the reference, probably want xrt_reference_inc_and_was_zero.
Definition: xrt_defines.h:2458
xrt_output_name
Name of a output with a baked in type.
Definition: xrt_defines.h:1582
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:784
Shared internal defines and enums in the state tracker.
XrResult oxr_get_face_state_android(struct oxr_logger *log, struct oxr_face_tracker_android *facial_tracker_android, const XrFaceStateGetInfoANDROID *getInfo, XrFaceStateANDROID *faceStateOutput)
Definition: oxr_face_tracking_android.c:76
The objects that handle session running status and blocking of xrWaitFrame.
#define OXR_PATH_MEMBER(X)
Currently bound interaction profile.
Definition: oxr_objects.h:1883
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:69
Definition: os_time.h:219
Data associated with an Action that has been attached to a Session.
Definition: oxr_objects.h:2263
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:2287
struct oxr_action_ref * act_ref
This action's refcounted data.
Definition: oxr_objects.h:2268
struct oxr_action_set_attachment * act_set_attached
The owning action set attachment.
Definition: oxr_objects.h:2265
uint32_t act_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2279
struct oxr_session * sess
The corresponding session.
Definition: oxr_objects.h:2276
The set of inputs/outputs for a single sub-action path for an action.
Definition: oxr_objects.h:2241
A output action pair of a xrt_output_name and a xrt_device.
Definition: oxr_objects.h:2221
The reference-counted data of an action.
Definition: oxr_objects.h:2562
char name[XR_MAX_ACTION_NAME_SIZE]
Application supplied name of this action.
Definition: oxr_objects.h:2566
struct oxr_subaction_paths subaction_paths
Which sub action paths that this action was created with.
Definition: oxr_objects.h:2575
XrActionType action_type
Type this action was created with.
Definition: oxr_objects.h:2572
uint32_t act_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2569
The data associated with the attachment of an Action Set (oxr_action_set) to as Session (oxr_session)...
Definition: oxr_objects.h:2134
struct oxr_action_attachment * act_attachments
An array of action attachments we own.
Definition: oxr_objects.h:2148
struct oxr_session * sess
Owning session.
Definition: oxr_objects.h:2136
struct oxr_action_set_ref * act_set_ref
Action set refcounted data.
Definition: oxr_objects.h:2139
uint32_t act_set_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2142
size_t action_attachment_count
Length of oxr_action_set_attachment::act_attachments.
Definition: oxr_objects.h:2153
struct oxr_subaction_paths requested_subaction_paths
Which sub-action paths are requested on the latest sync.
Definition: oxr_objects.h:2145
The reference-counted data of an action set.
Definition: oxr_objects.h:2480
uint32_t act_set_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2493
char name[XR_MAX_ACTION_SET_NAME_SIZE]
Application supplied name of this action.
Definition: oxr_objects.h:2484
bool ever_attached
Has this action set even been attached to any session, marking it as immutable.
Definition: oxr_objects.h:2490
uint32_t priority
Application supplied action set priority.
Definition: oxr_objects.h:2496
A group of actions.
Definition: oxr_objects.h:2522
struct u_hashset_item * name_item
The item in the name hashset.
Definition: oxr_objects.h:2544
struct u_hashset_item * loc_item
The item in the localized hashset.
Definition: oxr_objects.h:2547
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:2533
uint32_t act_set_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2541
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2524
struct oxr_instance * inst
Owner of this action set.
Definition: oxr_objects.h:2527
The state of a action input.
Definition: oxr_objects.h:2176
bool active
Is this active (bound and providing input)?
Definition: oxr_objects.h:2183
XrTime timestamp
When was this last changed.
Definition: oxr_objects.h:2189
A single action.
Definition: oxr_objects.h:2592
struct oxr_action_set * act_set
Owner of this action.
Definition: oxr_objects.h:2597
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2594
struct u_hashset_item * loc_item
The item in the localized hashset.
Definition: oxr_objects.h:2614
uint32_t act_key
Unique key for the session hashmap.
Definition: oxr_objects.h:2608
struct u_hashset_item * name_item
The item in the name hashset.
Definition: oxr_objects.h:2611
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:2601
Interaction profile binding state.
Definition: oxr_objects.h:2042
uint32_t * preferred_binding_path_index
store which entry in paths was suggested, for each action key
Definition: oxr_objects.h:2054
const char * localized_name
Name presented to the user.
Definition: oxr_objects.h:2047
Debug object created by the client program.
Definition: oxr_objects.h:2625
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2627
XrDebugUtilsMessageTypeFlagsEXT message_types
Types to submit to this messenger.
Definition: oxr_objects.h:2636
PFN_xrDebugUtilsMessengerCallbackEXT user_callback
Callback function.
Definition: oxr_objects.h:2639
struct oxr_instance * inst
Owner of this messenger.
Definition: oxr_objects.h:2630
void *XR_MAY_ALIAS user_data
Opaque user data.
Definition: oxr_objects.h:2642
XrDebugUtilsMessageSeverityFlagsEXT message_severities
Severities to submit to this messenger.
Definition: oxr_objects.h:2633
dpad binding extracted from XrInteractionProfileDpadBindingEXT
Definition: oxr_objects.h:1974
dpad emulation settings from oxr_interaction_profile
Definition: oxr_objects.h:2008
A entry in the dpad state for one action set.
Definition: oxr_objects.h:1985
dpad settings we need extracted from XrInteractionProfileDpadBindingEXT
Definition: oxr_objects.h:1962
Holds dpad binding state for a single interaction profile.
Definition: oxr_objects.h:2000
Definition: oxr_event.c:30
Structure tracking which extensions are enabled for a given instance.
Definition: oxr_objects.h:1612
Helper that handles synchronizing the xr{Wait,Begin,End}Frame calls.
Definition: oxr_frame_sync.h:37
A hand tracker.
Definition: oxr_hand_tracking.h:58
Used to hold diverse child handles and ensure orderly destruction.
Definition: oxr_objects.h:1485
struct oxr_handle_base * parent
Pointer to this object's parent handle holder, if any.
Definition: oxr_objects.h:1492
uint64_t debug
Magic (per-handle-type) value for debugging.
Definition: oxr_objects.h:1487
struct oxr_handle_base * children[256]
Array of children, if any.
Definition: oxr_objects.h:1497
enum oxr_handle_state state
Current handle state.
Definition: oxr_objects.h:1502
oxr_handle_destroyer destroy
Destroy the object this handle refers to.
Definition: oxr_objects.h:1507
Main object that ties everything together.
Definition: oxr_objects.h:1626
bool disable_vulkan_format_depth
Some applications can't handle depth formats, or they trigger a bug in a specific version of the appl...
Definition: oxr_objects.h:1710
bool parallel_views
For applications that rely on views being parallel, notably some OpenVR games with OpenComposite.
Definition: oxr_objects.h:1735
size_t path_num
Number of paths in the array (0 is always null).
Definition: oxr_objects.h:1665
struct oxr_instance::@286 openxr_version
The OpenXR version requested in the app info. It determines the instance's OpenXR version.
bool disable_vulkan_format_depth_stencil
Some applications can't handle depth stencil formats, or they trigger a bug in a specific version of ...
Definition: oxr_objects.h:1723
XrVersion major_minor
Stores only major.minor version. Simplifies comparisons for e.g. "at least OpenXR 1....
Definition: oxr_objects.h:1641
bool skip_end_session
Unreal 4 has a bug calling xrEndSession; the function should just exit.
Definition: oxr_objects.h:1726
struct oxr_path ** path_array
Mapping from ID to path.
Definition: oxr_objects.h:1661
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:1732
size_t path_array_length
Total length of path array.
Definition: oxr_objects.h:1663
struct oxr_extension_status extensions
Enabled extensions.
Definition: oxr_objects.h:1635
struct oxr_debug_messenger * messengers[256]
Debug messengers.
Definition: oxr_objects.h:1749
struct u_hashset * path_store
Path store, for looking up paths.
Definition: oxr_objects.h:1659
bool map_stage_to_local_floor
For applications that use stage and don't offer recentering.
Definition: oxr_objects.h:1738
struct oxr_interaction_profile ** profiles
Interaction profile bindings that have been suggested by the client.
Definition: oxr_objects.h:1676
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:1628
bool no_texture_source_alpha
Beat Saber submits its projection layer with XR_COMPOSITION_LAYER_BLEND_TEXTURE_SOURCE_ALPHA_BIT set.
Definition: oxr_objects.h:1745
A single interaction profile.
Definition: oxr_objects.h:2020
enum xrt_device_name xname
Used to lookup xrt_binding_profile for fallback.
Definition: oxr_objects.h:2024
const char * localized_name
Name presented to the user.
Definition: oxr_objects.h:2027
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:2442
void(* destroy)(struct oxr_refcounted *)
Destruction callback.
Definition: oxr_objects.h:2445
Helper struct that wraps xrt_system_roles for OpenXR state tracker usage.
Definition: oxr_roles.h:30
Object that client program interact with.
Definition: oxr_objects.h:1774
struct u_hashmap_int * act_attachments_by_key
A map of action key to action attachment.
Definition: oxr_objects.h:1863
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:1906
struct xrt_compositor_native * xcn
Native compositor that is wrapped by client compositors.
Definition: oxr_objects.h:1786
struct xrt_space_relation local_space_pure_relation
initial relation of head in "global" space.
Definition: oxr_objects.h:1913
struct xrt_session * xs
The xrt_session backing this session.
Definition: oxr_objects.h:1783
XrViewConfigurationType current_view_config_type
This is set in xrBeginSession and is the primaryViewConfiguration argument, this is then used in xrEn...
Definition: oxr_objects.h:1799
struct oxr_action_set_attachment * act_set_attachments
An array of action set attachments that this session owns.
Definition: oxr_objects.h:1837
uint32_t frame_timing_wait_sleep_ms
Extra sleep in wait frame.
Definition: oxr_objects.h:1901
struct os_precise_sleeper sleeper
Used to implement precise extra sleeping in wait frame.
Definition: oxr_objects.h:1829
uint64_t dynamic_roles_generation_id
Cache of the last known system roles generation_id.
Definition: oxr_objects.h:1873
enum oxr_session_graphics_ext gfx_ext
What graphics type was this session created with.
Definition: oxr_objects.h:1780
size_t profiles_on_attachment_size
Clone of all suggested binding profiles at the point of action set/session attachment.
Definition: oxr_objects.h:1869
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:1805
struct u_hashmap_int * act_sets_attachments_by_key
A map of action set key to action set attachments.
Definition: oxr_objects.h:1851
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:1776
float ipd_meters
IPD, to be expanded to a proper 3D relation.
Definition: oxr_objects.h:1893
struct os_mutex sync_actions_mutex
Protects access to dynamic_roles_generation_id during sync actions.
Definition: oxr_objects.h:1876
size_t action_set_attachment_count
Length of oxr_session::act_set_attachments.
Definition: oxr_objects.h:1842
bool frame_timing_spew
Frame timing debug output.
Definition: oxr_objects.h:1898
Can be one of several reference space types, or a space that is bound to an action.
Definition: oxr_objects.h:2335
struct oxr_subaction_paths subaction_paths
Which sub action path is this?
Definition: oxr_objects.h:2352
enum oxr_space_type space_type
What kind of space is this?
Definition: oxr_objects.h:2349
uint32_t act_key
Action key from which action this space was created from.
Definition: oxr_objects.h:2346
struct xrt_pose pose
Pose that was given during creation.
Definition: oxr_objects.h:2343
struct oxr_session * sess
Owner of this space.
Definition: oxr_objects.h:2340
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2337
A parsed equivalent of a list of sub-action paths.
Definition: oxr_objects.h:2097
A set of images used for rendering.
Definition: oxr_objects.h:2378
struct oxr_session * sess
Owner of this swapchain.
Definition: oxr_objects.h:2383
uint32_t face_count
The number of cubemap faces. 6 for cubemaps, 1 otherwise.
Definition: oxr_objects.h:2395
struct xrt_swapchain * swapchain
Compositor swapchain.
Definition: oxr_objects.h:2386
struct oxr_handle_base handle
Common structure for things referred to by OpenXR handles.
Definition: oxr_objects.h:2380
uint32_t width
Swapchain size.
Definition: oxr_objects.h:2389
uint32_t array_layer_count
For 1 is 2D texture, greater then 1 2D array texture.
Definition: oxr_objects.h:2392
Single or multiple devices grouped together to form a system that sessions can be created from.
Definition: oxr_objects.h:1538
struct xrt_system * xsys
The XRT interfaces level system.
Definition: oxr_objects.h:1542
VkPhysicalDevice suggested_vulkan_physical_device
The device returned with the last xrGetVulkanGraphicsDeviceKHR or xrGetVulkanGraphicsDevice2KHR call.
Definition: oxr_objects.h:1575
PFN_vkGetInstanceProcAddr vk_get_instance_proc_addr
Stores the vkGetInstanceProcAddr passed to xrCreateVulkanInstanceKHR to be used when looking up Vulka...
Definition: oxr_objects.h:1581
struct xrt_system_devices * xsysd
System devices used in all session types.
Definition: oxr_objects.h:1545
struct xrt_space_overseer * xso
Space overseer used in all session types.
Definition: oxr_objects.h:1548
VkInstance vulkan_enable2_instance
The instance/device we create when vulkan_enable2 is used.
Definition: oxr_objects.h:1572
bool gotten_requirements
Have the client application called the gfx api requirements func?
Definition: oxr_objects.h:1556
struct xrt_system_compositor * xsysc
System compositor, used to create session compositors.
Definition: oxr_objects.h:1551
Holds the properties that a system supports for a view configuration type.
Definition: oxr_objects.h:1516
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:2258
Main compositor server interface.
Definition: xrt_compositor.h:2236
Common compositor client interface/base.
Definition: xrt_compositor.h:992
A single HMD or input device.
Definition: xrt_device.h:310
enum xrt_device_name name
Enum identifier of the device.
Definition: xrt_device.h:312
The (future) result of an asynchronous operation.
Definition: xrt_future.h:39
A future is a concurrency primitive that provides a mechanism to access results of asynchronous opera...
Definition: xrt_future.h:75
This interface acts as a root object for Monado.
Definition: xrt_instance.h:120
A single named output, that sits on a xrt_device.
Definition: xrt_device.h:206
Each plane has n polygons; ultimately plane metadata from xrt_plane_detections_ext::locations and xrt...
Definition: xrt_plane_detector.h:172
A pose composed of a position and orientation.
Definition: xrt_defines.h:479
A base class for reference counted objects.
Definition: xrt_defines.h:99
The XRT representation of XrSession, this object does not have all of the functionality of a session,...
Definition: xrt_session.h:277
Object that oversees and manages spaces, one created for each XR system.
Definition: xrt_space.h:97
A relation with two spaces, includes velocity and acceleration.
Definition: xrt_defines.h:670
A space very similar to a OpenXR XrSpace but not a full one-to-one mapping, but used to power XrSpace...
Definition: xrt_space.h:32
Common swapchain interface/base.
Definition: xrt_compositor.h:540
The system compositor handles composition for a system.
Definition: xrt_compositor.h:2448
A collection of xrt_device, and an interface for identifying the roles they have been assigned.
Definition: xrt_system.h:214
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:26
Misc helpers for device drivers.
Hashmap for integer values header.
Header holding Android-specific details.
xrt_android_lifecycle_event
Distinguishes the possible Android lifecycle events from each other.
Definition: xrt_android.h:43
Header declaring XRT graphics interfaces.
Auto detect OS and certain features.
xrt_perf_notify_level
Performance level.
Definition: xrt_defines.h:2412
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:724
xrt_perf_domain
Domain type.
Definition: xrt_defines.h:2385
Header defining an xrt display or controller device.
Interface for creating futures.
Header for limits of the XRT interfaces.
Include all of the openxr headers in one place.
Header defining xrt space and space overseer.
Header for system objects.
Header defining the tracking system integration in Monado.
Include all of the Vulkan headers in one place, and cope with any "messy" includes implied by it.