diff --git a/thirdparty/README.md b/thirdparty/README.md index 69a9d707568..4c276b3c001 100644 --- a/thirdparty/README.md +++ b/thirdparty/README.md @@ -724,7 +724,7 @@ with the provided patch. ## openxr - Upstream: https://github.com/KhronosGroup/OpenXR-SDK -- Version: 1.0.33 (dc1e23937fe45eabcce80f6588cf47449edb29d1, 2024) +- Version: 1.0.34 (288d3a7ebc1ad959f62d51da75baa3d27438c499, 2024) - License: Apache 2.0 Files extracted from upstream source: diff --git a/thirdparty/openxr/include/openxr/openxr.h b/thirdparty/openxr/include/openxr/openxr.h index 3e9d6599bb6..c0c826b9815 100644 --- a/thirdparty/openxr/include/openxr/openxr.h +++ b/thirdparty/openxr/include/openxr/openxr.h @@ -25,7 +25,7 @@ extern "C" { ((((major) & 0xffffULL) << 48) | (((minor) & 0xffffULL) << 32) | ((patch) & 0xffffffffULL)) // OpenXR current version number. -#define XR_CURRENT_API_VERSION XR_MAKE_VERSION(1, 0, 33) +#define XR_CURRENT_API_VERSION XR_MAKE_VERSION(1, 0, 34) #define XR_VERSION_MAJOR(version) (uint16_t)(((uint64_t)(version) >> 48)& 0xffffULL) #define XR_VERSION_MINOR(version) (uint16_t)(((uint64_t)(version) >> 32) & 0xffffULL) @@ -549,11 +549,19 @@ typedef enum XrStructureType { XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB = 1000238001, XR_TYPE_SPACE_USER_CREATE_INFO_FB = 1000241001, XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META = 1000245000, + XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META = 1000254000, + XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META = 1000254001, XR_TYPE_SYSTEM_PASSTHROUGH_COLOR_LUT_PROPERTIES_META = 1000266000, XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META = 1000266001, XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META = 1000266002, XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META = 1000266100, XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META = 1000266101, + XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META = 1000269001, + XR_TYPE_SPACE_TRIANGLE_MESH_META = 1000269002, + XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB = 1000287013, + XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB = 1000287014, + XR_TYPE_FACE_EXPRESSION_INFO2_FB = 1000287015, + XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB = 1000287016, XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC = 1000317001, XR_TYPE_PASSTHROUGH_COLOR_HTC = 1000317002, XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC = 1000317003, @@ -575,6 +583,8 @@ typedef enum XrStructureType { XR_TYPE_PLANE_DETECTOR_LOCATION_EXT = 1000429005, XR_TYPE_PLANE_DETECTOR_POLYGON_BUFFER_EXT = 1000429006, XR_TYPE_SYSTEM_PLANE_DETECTION_PROPERTIES_EXT = 1000429007, + XR_TYPE_EVENT_DATA_USER_PRESENCE_CHANGED_EXT = 1000470000, + XR_TYPE_SYSTEM_USER_PRESENCE_PROPERTIES_EXT = 1000470001, XR_TYPE_GRAPHICS_BINDING_VULKAN2_KHR = XR_TYPE_GRAPHICS_BINDING_VULKAN_KHR, XR_TYPE_SWAPCHAIN_IMAGE_VULKAN2_KHR = XR_TYPE_SWAPCHAIN_IMAGE_VULKAN_KHR, XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN2_KHR = XR_TYPE_GRAPHICS_REQUIREMENTS_VULKAN_KHR, @@ -672,6 +682,7 @@ typedef enum XrObjectType { XR_OBJECT_TYPE_VIRTUAL_KEYBOARD_META = 1000219000, XR_OBJECT_TYPE_SPACE_USER_FB = 1000241000, XR_OBJECT_TYPE_PASSTHROUGH_COLOR_LUT_META = 1000266000, + XR_OBJECT_TYPE_FACE_TRACKER2_FB = 1000287012, XR_OBJECT_TYPE_PASSTHROUGH_HTC = 1000317000, XR_OBJECT_TYPE_PLANE_DETECTOR_EXT = 1000429000, XR_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF @@ -3616,7 +3627,7 @@ typedef struct XrHandTrackingCapsulesStateFB { #define XR_FB_spatial_entity 1 XR_DEFINE_ATOM(XrAsyncRequestIdFB) #define XR_UUID_SIZE_EXT 16 -#define XR_FB_spatial_entity_SPEC_VERSION 2 +#define XR_FB_spatial_entity_SPEC_VERSION 3 #define XR_FB_SPATIAL_ENTITY_EXTENSION_NAME "XR_FB_spatial_entity" typedef enum XrSpaceComponentTypeFB { @@ -3628,6 +3639,7 @@ typedef enum XrSpaceComponentTypeFB { XR_SPACE_COMPONENT_TYPE_SEMANTIC_LABELS_FB = 5, XR_SPACE_COMPONENT_TYPE_ROOM_LAYOUT_FB = 6, XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB = 7, + XR_SPACE_COMPONENT_TYPE_TRIANGLE_MESH_META = 1000269000, XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB = 0x7FFFFFFF } XrSpaceComponentTypeFB; // XrSystemSpatialEntityPropertiesFB extends XrSystemProperties @@ -4332,6 +4344,11 @@ XRAPI_ATTR XrResult XRAPI_CALL xrSetViewOffsetVARJO( #endif /* !XR_NO_PROTOTYPES */ +#define XR_VARJO_xr4_controller_interaction 1 +#define XR_VARJO_xr4_controller_interaction_SPEC_VERSION 1 +#define XR_VARJO_XR4_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_VARJO_xr4_controller_interaction" + + #define XR_ML_ml2_controller_interaction 1 #define XR_ML_ml2_controller_interaction_SPEC_VERSION 1 #define XR_ML_ML2_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_ML_ml2_controller_interaction" @@ -5151,13 +5168,14 @@ typedef struct XrHapticAmplitudeEnvelopeVibrationFB { #define XR_FB_scene 1 -#define XR_FB_scene_SPEC_VERSION 3 +#define XR_FB_scene_SPEC_VERSION 4 #define XR_FB_SCENE_EXTENSION_NAME "XR_FB_scene" typedef XrFlags64 XrSemanticLabelsSupportFlagsFB; // Flag bits for XrSemanticLabelsSupportFlagsFB static const XrSemanticLabelsSupportFlagsFB XR_SEMANTIC_LABELS_SUPPORT_MULTIPLE_SEMANTIC_LABELS_BIT_FB = 0x00000001; static const XrSemanticLabelsSupportFlagsFB XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_DESK_TO_TABLE_MIGRATION_BIT_FB = 0x00000002; +static const XrSemanticLabelsSupportFlagsFB XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_INVISIBLE_WALL_FACE_BIT_FB = 0x00000004; typedef struct XrExtent3DfFB { float width; @@ -5612,6 +5630,7 @@ static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_NOR static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SUPER_SAMPLING_BIT_FB = 0x00000002; static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SHARPENING_BIT_FB = 0x00000004; static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SHARPENING_BIT_FB = 0x00000008; +static const XrCompositionLayerSettingsFlagsFB XR_COMPOSITION_LAYER_SETTINGS_AUTO_LAYER_FILTER_BIT_META = 0x00000020; // XrCompositionLayerSettingsFB extends XrCompositionLayerBaseHeader typedef struct XrCompositionLayerSettingsFB { @@ -6115,7 +6134,7 @@ XRAPI_ATTR XrResult XRAPI_CALL xrDestroySpaceUserFB( #define XR_META_headset_id 1 -#define XR_META_headset_id_SPEC_VERSION 1 +#define XR_META_headset_id_SPEC_VERSION 2 #define XR_META_HEADSET_ID_EXTENSION_NAME "XR_META_headset_id" // XrSystemHeadsetIdPropertiesMETA extends XrSystemProperties typedef struct XrSystemHeadsetIdPropertiesMETA { @@ -6126,6 +6145,35 @@ typedef struct XrSystemHeadsetIdPropertiesMETA { +#define XR_META_recommended_layer_resolution 1 +#define XR_META_recommended_layer_resolution_SPEC_VERSION 1 +#define XR_META_RECOMMENDED_LAYER_RESOLUTION_EXTENSION_NAME "XR_META_recommended_layer_resolution" +typedef struct XrRecommendedLayerResolutionMETA { + XrStructureType type; + void* XR_MAY_ALIAS next; + XrExtent2Di recommendedImageDimensions; + XrBool32 isValid; +} XrRecommendedLayerResolutionMETA; + +typedef struct XrRecommendedLayerResolutionGetInfoMETA { + XrStructureType type; + const void* XR_MAY_ALIAS next; + const XrCompositionLayerBaseHeader* layer; + XrTime predictedDisplayTime; +} XrRecommendedLayerResolutionGetInfoMETA; + +typedef XrResult (XRAPI_PTR *PFN_xrGetRecommendedLayerResolutionMETA)(XrSession session, const XrRecommendedLayerResolutionGetInfoMETA* info, XrRecommendedLayerResolutionMETA* resolution); + +#ifndef XR_NO_PROTOTYPES +#ifdef XR_EXTENSION_PROTOTYPES +XRAPI_ATTR XrResult XRAPI_CALL xrGetRecommendedLayerResolutionMETA( + XrSession session, + const XrRecommendedLayerResolutionGetInfoMETA* info, + XrRecommendedLayerResolutionMETA* resolution); +#endif /* XR_EXTENSION_PROTOTYPES */ +#endif /* !XR_NO_PROTOTYPES */ + + #define XR_META_passthrough_color_lut 1 XR_DEFINE_HANDLE(XrPassthroughColorLutMETA) #define XR_META_passthrough_color_lut_SPEC_VERSION 1 @@ -6200,11 +6248,201 @@ XRAPI_ATTR XrResult XRAPI_CALL xrUpdatePassthroughColorLutMETA( #endif /* !XR_NO_PROTOTYPES */ +#define XR_META_spatial_entity_mesh 1 +#define XR_META_spatial_entity_mesh_SPEC_VERSION 1 +#define XR_META_SPATIAL_ENTITY_MESH_EXTENSION_NAME "XR_META_spatial_entity_mesh" +typedef struct XrSpaceTriangleMeshGetInfoMETA { + XrStructureType type; + const void* XR_MAY_ALIAS next; +} XrSpaceTriangleMeshGetInfoMETA; + +typedef struct XrSpaceTriangleMeshMETA { + XrStructureType type; + void* XR_MAY_ALIAS next; + uint32_t vertexCapacityInput; + uint32_t vertexCountOutput; + XrVector3f* vertices; + uint32_t indexCapacityInput; + uint32_t indexCountOutput; + uint32_t* indices; +} XrSpaceTriangleMeshMETA; + +typedef XrResult (XRAPI_PTR *PFN_xrGetSpaceTriangleMeshMETA)(XrSpace space, const XrSpaceTriangleMeshGetInfoMETA* getInfo, XrSpaceTriangleMeshMETA* triangleMeshOutput); + +#ifndef XR_NO_PROTOTYPES +#ifdef XR_EXTENSION_PROTOTYPES +XRAPI_ATTR XrResult XRAPI_CALL xrGetSpaceTriangleMeshMETA( + XrSpace space, + const XrSpaceTriangleMeshGetInfoMETA* getInfo, + XrSpaceTriangleMeshMETA* triangleMeshOutput); +#endif /* XR_EXTENSION_PROTOTYPES */ +#endif /* !XR_NO_PROTOTYPES */ + + +#define XR_META_automatic_layer_filter 1 +#define XR_META_automatic_layer_filter_SPEC_VERSION 1 +#define XR_META_AUTOMATIC_LAYER_FILTER_EXTENSION_NAME "XR_META_automatic_layer_filter" + + #define XR_META_touch_controller_plus 1 #define XR_META_touch_controller_plus_SPEC_VERSION 1 #define XR_META_TOUCH_CONTROLLER_PLUS_EXTENSION_NAME "XR_META_touch_controller_plus" +#define XR_FB_face_tracking2 1 +XR_DEFINE_HANDLE(XrFaceTracker2FB) +#define XR_FB_face_tracking2_SPEC_VERSION 1 +#define XR_FB_FACE_TRACKING2_EXTENSION_NAME "XR_FB_face_tracking2" + +typedef enum XrFaceExpression2FB { + XR_FACE_EXPRESSION2_BROW_LOWERER_L_FB = 0, + XR_FACE_EXPRESSION2_BROW_LOWERER_R_FB = 1, + XR_FACE_EXPRESSION2_CHEEK_PUFF_L_FB = 2, + XR_FACE_EXPRESSION2_CHEEK_PUFF_R_FB = 3, + XR_FACE_EXPRESSION2_CHEEK_RAISER_L_FB = 4, + XR_FACE_EXPRESSION2_CHEEK_RAISER_R_FB = 5, + XR_FACE_EXPRESSION2_CHEEK_SUCK_L_FB = 6, + XR_FACE_EXPRESSION2_CHEEK_SUCK_R_FB = 7, + XR_FACE_EXPRESSION2_CHIN_RAISER_B_FB = 8, + XR_FACE_EXPRESSION2_CHIN_RAISER_T_FB = 9, + XR_FACE_EXPRESSION2_DIMPLER_L_FB = 10, + XR_FACE_EXPRESSION2_DIMPLER_R_FB = 11, + XR_FACE_EXPRESSION2_EYES_CLOSED_L_FB = 12, + XR_FACE_EXPRESSION2_EYES_CLOSED_R_FB = 13, + XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_L_FB = 14, + XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_R_FB = 15, + XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_L_FB = 16, + XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_R_FB = 17, + XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_L_FB = 18, + XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_R_FB = 19, + XR_FACE_EXPRESSION2_EYES_LOOK_UP_L_FB = 20, + XR_FACE_EXPRESSION2_EYES_LOOK_UP_R_FB = 21, + XR_FACE_EXPRESSION2_INNER_BROW_RAISER_L_FB = 22, + XR_FACE_EXPRESSION2_INNER_BROW_RAISER_R_FB = 23, + XR_FACE_EXPRESSION2_JAW_DROP_FB = 24, + XR_FACE_EXPRESSION2_JAW_SIDEWAYS_LEFT_FB = 25, + XR_FACE_EXPRESSION2_JAW_SIDEWAYS_RIGHT_FB = 26, + XR_FACE_EXPRESSION2_JAW_THRUST_FB = 27, + XR_FACE_EXPRESSION2_LID_TIGHTENER_L_FB = 28, + XR_FACE_EXPRESSION2_LID_TIGHTENER_R_FB = 29, + XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_L_FB = 30, + XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_R_FB = 31, + XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_L_FB = 32, + XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_R_FB = 33, + XR_FACE_EXPRESSION2_LIP_FUNNELER_LB_FB = 34, + XR_FACE_EXPRESSION2_LIP_FUNNELER_LT_FB = 35, + XR_FACE_EXPRESSION2_LIP_FUNNELER_RB_FB = 36, + XR_FACE_EXPRESSION2_LIP_FUNNELER_RT_FB = 37, + XR_FACE_EXPRESSION2_LIP_PRESSOR_L_FB = 38, + XR_FACE_EXPRESSION2_LIP_PRESSOR_R_FB = 39, + XR_FACE_EXPRESSION2_LIP_PUCKER_L_FB = 40, + XR_FACE_EXPRESSION2_LIP_PUCKER_R_FB = 41, + XR_FACE_EXPRESSION2_LIP_STRETCHER_L_FB = 42, + XR_FACE_EXPRESSION2_LIP_STRETCHER_R_FB = 43, + XR_FACE_EXPRESSION2_LIP_SUCK_LB_FB = 44, + XR_FACE_EXPRESSION2_LIP_SUCK_LT_FB = 45, + XR_FACE_EXPRESSION2_LIP_SUCK_RB_FB = 46, + XR_FACE_EXPRESSION2_LIP_SUCK_RT_FB = 47, + XR_FACE_EXPRESSION2_LIP_TIGHTENER_L_FB = 48, + XR_FACE_EXPRESSION2_LIP_TIGHTENER_R_FB = 49, + XR_FACE_EXPRESSION2_LIPS_TOWARD_FB = 50, + XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_L_FB = 51, + XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_R_FB = 52, + XR_FACE_EXPRESSION2_MOUTH_LEFT_FB = 53, + XR_FACE_EXPRESSION2_MOUTH_RIGHT_FB = 54, + XR_FACE_EXPRESSION2_NOSE_WRINKLER_L_FB = 55, + XR_FACE_EXPRESSION2_NOSE_WRINKLER_R_FB = 56, + XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_L_FB = 57, + XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_R_FB = 58, + XR_FACE_EXPRESSION2_UPPER_LID_RAISER_L_FB = 59, + XR_FACE_EXPRESSION2_UPPER_LID_RAISER_R_FB = 60, + XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_L_FB = 61, + XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_R_FB = 62, + XR_FACE_EXPRESSION2_TONGUE_TIP_INTERDENTAL_FB = 63, + XR_FACE_EXPRESSION2_TONGUE_TIP_ALVEOLAR_FB = 64, + XR_FACE_EXPRESSION2_TONGUE_FRONT_DORSAL_PALATE_FB = 65, + XR_FACE_EXPRESSION2_TONGUE_MID_DORSAL_PALATE_FB = 66, + XR_FACE_EXPRESSION2_TONGUE_BACK_DORSAL_VELAR_FB = 67, + XR_FACE_EXPRESSION2_TONGUE_OUT_FB = 68, + XR_FACE_EXPRESSION2_TONGUE_RETREAT_FB = 69, + XR_FACE_EXPRESSION2_COUNT_FB = 70, + XR_FACE_EXPRESSION_2FB_MAX_ENUM_FB = 0x7FFFFFFF +} XrFaceExpression2FB; + +typedef enum XrFaceExpressionSet2FB { + XR_FACE_EXPRESSION_SET2_DEFAULT_FB = 0, + XR_FACE_EXPRESSION_SET_2FB_MAX_ENUM_FB = 0x7FFFFFFF +} XrFaceExpressionSet2FB; + +typedef enum XrFaceTrackingDataSource2FB { + XR_FACE_TRACKING_DATA_SOURCE2_VISUAL_FB = 0, + XR_FACE_TRACKING_DATA_SOURCE2_AUDIO_FB = 1, + XR_FACE_TRACKING_DATA_SOURCE_2FB_MAX_ENUM_FB = 0x7FFFFFFF +} XrFaceTrackingDataSource2FB; + +typedef enum XrFaceConfidence2FB { + XR_FACE_CONFIDENCE2_LOWER_FACE_FB = 0, + XR_FACE_CONFIDENCE2_UPPER_FACE_FB = 1, + XR_FACE_CONFIDENCE2_COUNT_FB = 2, + XR_FACE_CONFIDENCE_2FB_MAX_ENUM_FB = 0x7FFFFFFF +} XrFaceConfidence2FB; +// XrSystemFaceTrackingProperties2FB extends XrSystemProperties +typedef struct XrSystemFaceTrackingProperties2FB { + XrStructureType type; + void* XR_MAY_ALIAS next; + XrBool32 supportsVisualFaceTracking; + XrBool32 supportsAudioFaceTracking; +} XrSystemFaceTrackingProperties2FB; + +typedef struct XrFaceTrackerCreateInfo2FB { + XrStructureType type; + const void* XR_MAY_ALIAS next; + XrFaceExpressionSet2FB faceExpressionSet; + uint32_t requestedDataSourceCount; + XrFaceTrackingDataSource2FB* requestedDataSources; +} XrFaceTrackerCreateInfo2FB; + +typedef struct XrFaceExpressionInfo2FB { + XrStructureType type; + const void* XR_MAY_ALIAS next; + XrTime time; +} XrFaceExpressionInfo2FB; + +typedef struct XrFaceExpressionWeights2FB { + XrStructureType type; + void* XR_MAY_ALIAS next; + uint32_t weightCount; + float* weights; + uint32_t confidenceCount; + float* confidences; + XrBool32 isValid; + XrBool32 isEyeFollowingBlendshapesValid; + XrFaceTrackingDataSource2FB dataSource; + XrTime time; +} XrFaceExpressionWeights2FB; + +typedef XrResult (XRAPI_PTR *PFN_xrCreateFaceTracker2FB)(XrSession session, const XrFaceTrackerCreateInfo2FB* createInfo, XrFaceTracker2FB* faceTracker); +typedef XrResult (XRAPI_PTR *PFN_xrDestroyFaceTracker2FB)(XrFaceTracker2FB faceTracker); +typedef XrResult (XRAPI_PTR *PFN_xrGetFaceExpressionWeights2FB)(XrFaceTracker2FB faceTracker, const XrFaceExpressionInfo2FB* expressionInfo, XrFaceExpressionWeights2FB* expressionWeights); + +#ifndef XR_NO_PROTOTYPES +#ifdef XR_EXTENSION_PROTOTYPES +XRAPI_ATTR XrResult XRAPI_CALL xrCreateFaceTracker2FB( + XrSession session, + const XrFaceTrackerCreateInfo2FB* createInfo, + XrFaceTracker2FB* faceTracker); + +XRAPI_ATTR XrResult XRAPI_CALL xrDestroyFaceTracker2FB( + XrFaceTracker2FB faceTracker); + +XRAPI_ATTR XrResult XRAPI_CALL xrGetFaceExpressionWeights2FB( + XrFaceTracker2FB faceTracker, + const XrFaceExpressionInfo2FB* expressionInfo, + XrFaceExpressionWeights2FB* expressionWeights); +#endif /* XR_EXTENSION_PROTOTYPES */ +#endif /* !XR_NO_PROTOTYPES */ + + #define XR_EXT_uuid 1 #define XR_EXT_uuid_SPEC_VERSION 1 #define XR_EXT_UUID_EXTENSION_NAME "XR_EXT_uuid" @@ -6667,6 +6905,25 @@ XRAPI_ATTR XrResult XRAPI_CALL xrGetPlanePolygonBufferEXT( #define XR_OPPO_CONTROLLER_INTERACTION_EXTENSION_NAME "XR_OPPO_controller_interaction" +#define XR_EXT_user_presence 1 +#define XR_EXT_user_presence_SPEC_VERSION 1 +#define XR_EXT_USER_PRESENCE_EXTENSION_NAME "XR_EXT_user_presence" +typedef struct XrEventDataUserPresenceChangedEXT { + XrStructureType type; + const void* XR_MAY_ALIAS next; + XrSession session; + XrBool32 isUserPresent; +} XrEventDataUserPresenceChangedEXT; + +// XrSystemUserPresencePropertiesEXT extends XrSystemProperties +typedef struct XrSystemUserPresencePropertiesEXT { + XrStructureType type; + void* XR_MAY_ALIAS next; + XrBool32 supportsUserPresence; +} XrSystemUserPresencePropertiesEXT; + + + #define XR_ML_user_calibration 1 #define XR_ML_user_calibration_SPEC_VERSION 1 #define XR_ML_USER_CALIBRATION_EXTENSION_NAME "XR_ML_user_calibration" diff --git a/thirdparty/openxr/include/openxr/openxr_reflection.h b/thirdparty/openxr/include/openxr/openxr_reflection.h index f6d66363bf8..b449c7099b9 100644 --- a/thirdparty/openxr/include/openxr/openxr_reflection.h +++ b/thirdparty/openxr/include/openxr/openxr_reflection.h @@ -444,11 +444,19 @@ XR_ENUM_STR(XrResult); _(XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB, 1000238001) \ _(XR_TYPE_SPACE_USER_CREATE_INFO_FB, 1000241001) \ _(XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META, 1000245000) \ + _(XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META, 1000254000) \ + _(XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META, 1000254001) \ _(XR_TYPE_SYSTEM_PASSTHROUGH_COLOR_LUT_PROPERTIES_META, 1000266000) \ _(XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META, 1000266001) \ _(XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META, 1000266002) \ _(XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META, 1000266100) \ _(XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META, 1000266101) \ + _(XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META, 1000269001) \ + _(XR_TYPE_SPACE_TRIANGLE_MESH_META, 1000269002) \ + _(XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB, 1000287013) \ + _(XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB, 1000287014) \ + _(XR_TYPE_FACE_EXPRESSION_INFO2_FB, 1000287015) \ + _(XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB, 1000287016) \ _(XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC, 1000317001) \ _(XR_TYPE_PASSTHROUGH_COLOR_HTC, 1000317002) \ _(XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC, 1000317003) \ @@ -470,6 +478,8 @@ XR_ENUM_STR(XrResult); _(XR_TYPE_PLANE_DETECTOR_LOCATION_EXT, 1000429005) \ _(XR_TYPE_PLANE_DETECTOR_POLYGON_BUFFER_EXT, 1000429006) \ _(XR_TYPE_SYSTEM_PLANE_DETECTION_PROPERTIES_EXT, 1000429007) \ + _(XR_TYPE_EVENT_DATA_USER_PRESENCE_CHANGED_EXT, 1000470000) \ + _(XR_TYPE_SYSTEM_USER_PRESENCE_PROPERTIES_EXT, 1000470001) \ _(XR_STRUCTURE_TYPE_MAX_ENUM, 0x7FFFFFFF) #define XR_LIST_ENUM_XrFormFactor(_) \ @@ -555,6 +565,7 @@ XR_ENUM_STR(XrResult); _(XR_OBJECT_TYPE_VIRTUAL_KEYBOARD_META, 1000219000) \ _(XR_OBJECT_TYPE_SPACE_USER_FB, 1000241000) \ _(XR_OBJECT_TYPE_PASSTHROUGH_COLOR_LUT_META, 1000266000) \ + _(XR_OBJECT_TYPE_FACE_TRACKER2_FB, 1000287012) \ _(XR_OBJECT_TYPE_PASSTHROUGH_HTC, 1000317000) \ _(XR_OBJECT_TYPE_PLANE_DETECTOR_EXT, 1000429000) \ _(XR_OBJECT_TYPE_MAX_ENUM, 0x7FFFFFFF) @@ -891,6 +902,7 @@ XR_ENUM_STR(XrResult); _(XR_SPACE_COMPONENT_TYPE_SEMANTIC_LABELS_FB, 5) \ _(XR_SPACE_COMPONENT_TYPE_ROOM_LAYOUT_FB, 6) \ _(XR_SPACE_COMPONENT_TYPE_SPACE_CONTAINER_FB, 7) \ + _(XR_SPACE_COMPONENT_TYPE_TRIANGLE_MESH_META, 1000269000) \ _(XR_SPACE_COMPONENT_TYPE_MAX_ENUM_FB, 0x7FFFFFFF) #define XR_LIST_ENUM_XrFoveationLevelFB(_) \ @@ -1209,6 +1221,95 @@ XR_ENUM_STR(XrResult); _(XR_PASSTHROUGH_COLOR_LUT_CHANNELS_RGBA_META, 2) \ _(XR_PASSTHROUGH_COLOR_LUT_CHANNELS_MAX_ENUM_META, 0x7FFFFFFF) +#define XR_LIST_ENUM_XrFaceExpression2FB(_) \ + _(XR_FACE_EXPRESSION2_BROW_LOWERER_L_FB, 0) \ + _(XR_FACE_EXPRESSION2_BROW_LOWERER_R_FB, 1) \ + _(XR_FACE_EXPRESSION2_CHEEK_PUFF_L_FB, 2) \ + _(XR_FACE_EXPRESSION2_CHEEK_PUFF_R_FB, 3) \ + _(XR_FACE_EXPRESSION2_CHEEK_RAISER_L_FB, 4) \ + _(XR_FACE_EXPRESSION2_CHEEK_RAISER_R_FB, 5) \ + _(XR_FACE_EXPRESSION2_CHEEK_SUCK_L_FB, 6) \ + _(XR_FACE_EXPRESSION2_CHEEK_SUCK_R_FB, 7) \ + _(XR_FACE_EXPRESSION2_CHIN_RAISER_B_FB, 8) \ + _(XR_FACE_EXPRESSION2_CHIN_RAISER_T_FB, 9) \ + _(XR_FACE_EXPRESSION2_DIMPLER_L_FB, 10) \ + _(XR_FACE_EXPRESSION2_DIMPLER_R_FB, 11) \ + _(XR_FACE_EXPRESSION2_EYES_CLOSED_L_FB, 12) \ + _(XR_FACE_EXPRESSION2_EYES_CLOSED_R_FB, 13) \ + _(XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_L_FB, 14) \ + _(XR_FACE_EXPRESSION2_EYES_LOOK_DOWN_R_FB, 15) \ + _(XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_L_FB, 16) \ + _(XR_FACE_EXPRESSION2_EYES_LOOK_LEFT_R_FB, 17) \ + _(XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_L_FB, 18) \ + _(XR_FACE_EXPRESSION2_EYES_LOOK_RIGHT_R_FB, 19) \ + _(XR_FACE_EXPRESSION2_EYES_LOOK_UP_L_FB, 20) \ + _(XR_FACE_EXPRESSION2_EYES_LOOK_UP_R_FB, 21) \ + _(XR_FACE_EXPRESSION2_INNER_BROW_RAISER_L_FB, 22) \ + _(XR_FACE_EXPRESSION2_INNER_BROW_RAISER_R_FB, 23) \ + _(XR_FACE_EXPRESSION2_JAW_DROP_FB, 24) \ + _(XR_FACE_EXPRESSION2_JAW_SIDEWAYS_LEFT_FB, 25) \ + _(XR_FACE_EXPRESSION2_JAW_SIDEWAYS_RIGHT_FB, 26) \ + _(XR_FACE_EXPRESSION2_JAW_THRUST_FB, 27) \ + _(XR_FACE_EXPRESSION2_LID_TIGHTENER_L_FB, 28) \ + _(XR_FACE_EXPRESSION2_LID_TIGHTENER_R_FB, 29) \ + _(XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_L_FB, 30) \ + _(XR_FACE_EXPRESSION2_LIP_CORNER_DEPRESSOR_R_FB, 31) \ + _(XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_L_FB, 32) \ + _(XR_FACE_EXPRESSION2_LIP_CORNER_PULLER_R_FB, 33) \ + _(XR_FACE_EXPRESSION2_LIP_FUNNELER_LB_FB, 34) \ + _(XR_FACE_EXPRESSION2_LIP_FUNNELER_LT_FB, 35) \ + _(XR_FACE_EXPRESSION2_LIP_FUNNELER_RB_FB, 36) \ + _(XR_FACE_EXPRESSION2_LIP_FUNNELER_RT_FB, 37) \ + _(XR_FACE_EXPRESSION2_LIP_PRESSOR_L_FB, 38) \ + _(XR_FACE_EXPRESSION2_LIP_PRESSOR_R_FB, 39) \ + _(XR_FACE_EXPRESSION2_LIP_PUCKER_L_FB, 40) \ + _(XR_FACE_EXPRESSION2_LIP_PUCKER_R_FB, 41) \ + _(XR_FACE_EXPRESSION2_LIP_STRETCHER_L_FB, 42) \ + _(XR_FACE_EXPRESSION2_LIP_STRETCHER_R_FB, 43) \ + _(XR_FACE_EXPRESSION2_LIP_SUCK_LB_FB, 44) \ + _(XR_FACE_EXPRESSION2_LIP_SUCK_LT_FB, 45) \ + _(XR_FACE_EXPRESSION2_LIP_SUCK_RB_FB, 46) \ + _(XR_FACE_EXPRESSION2_LIP_SUCK_RT_FB, 47) \ + _(XR_FACE_EXPRESSION2_LIP_TIGHTENER_L_FB, 48) \ + _(XR_FACE_EXPRESSION2_LIP_TIGHTENER_R_FB, 49) \ + _(XR_FACE_EXPRESSION2_LIPS_TOWARD_FB, 50) \ + _(XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_L_FB, 51) \ + _(XR_FACE_EXPRESSION2_LOWER_LIP_DEPRESSOR_R_FB, 52) \ + _(XR_FACE_EXPRESSION2_MOUTH_LEFT_FB, 53) \ + _(XR_FACE_EXPRESSION2_MOUTH_RIGHT_FB, 54) \ + _(XR_FACE_EXPRESSION2_NOSE_WRINKLER_L_FB, 55) \ + _(XR_FACE_EXPRESSION2_NOSE_WRINKLER_R_FB, 56) \ + _(XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_L_FB, 57) \ + _(XR_FACE_EXPRESSION2_OUTER_BROW_RAISER_R_FB, 58) \ + _(XR_FACE_EXPRESSION2_UPPER_LID_RAISER_L_FB, 59) \ + _(XR_FACE_EXPRESSION2_UPPER_LID_RAISER_R_FB, 60) \ + _(XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_L_FB, 61) \ + _(XR_FACE_EXPRESSION2_UPPER_LIP_RAISER_R_FB, 62) \ + _(XR_FACE_EXPRESSION2_TONGUE_TIP_INTERDENTAL_FB, 63) \ + _(XR_FACE_EXPRESSION2_TONGUE_TIP_ALVEOLAR_FB, 64) \ + _(XR_FACE_EXPRESSION2_TONGUE_FRONT_DORSAL_PALATE_FB, 65) \ + _(XR_FACE_EXPRESSION2_TONGUE_MID_DORSAL_PALATE_FB, 66) \ + _(XR_FACE_EXPRESSION2_TONGUE_BACK_DORSAL_VELAR_FB, 67) \ + _(XR_FACE_EXPRESSION2_TONGUE_OUT_FB, 68) \ + _(XR_FACE_EXPRESSION2_TONGUE_RETREAT_FB, 69) \ + _(XR_FACE_EXPRESSION2_COUNT_FB, 70) \ + _(XR_FACE_EXPRESSION_2FB_MAX_ENUM_FB, 0x7FFFFFFF) + +#define XR_LIST_ENUM_XrFaceExpressionSet2FB(_) \ + _(XR_FACE_EXPRESSION_SET2_DEFAULT_FB, 0) \ + _(XR_FACE_EXPRESSION_SET_2FB_MAX_ENUM_FB, 0x7FFFFFFF) + +#define XR_LIST_ENUM_XrFaceTrackingDataSource2FB(_) \ + _(XR_FACE_TRACKING_DATA_SOURCE2_VISUAL_FB, 0) \ + _(XR_FACE_TRACKING_DATA_SOURCE2_AUDIO_FB, 1) \ + _(XR_FACE_TRACKING_DATA_SOURCE_2FB_MAX_ENUM_FB, 0x7FFFFFFF) + +#define XR_LIST_ENUM_XrFaceConfidence2FB(_) \ + _(XR_FACE_CONFIDENCE2_LOWER_FACE_FB, 0) \ + _(XR_FACE_CONFIDENCE2_UPPER_FACE_FB, 1) \ + _(XR_FACE_CONFIDENCE2_COUNT_FB, 2) \ + _(XR_FACE_CONFIDENCE_2FB_MAX_ENUM_FB, 0x7FFFFFFF) + #define XR_LIST_ENUM_XrTrackingOptimizationSettingsDomainQCOM(_) \ _(XR_TRACKING_OPTIMIZATION_SETTINGS_DOMAIN_ALL_QCOM, 1) \ _(XR_TRACKING_OPTIMIZATION_SETTINGS_DOMAIN_MAX_ENUM_QCOM, 0x7FFFFFFF) @@ -1437,6 +1538,7 @@ XR_ENUM_STR(XrResult); #define XR_LIST_BITS_XrSemanticLabelsSupportFlagsFB(_) \ _(XR_SEMANTIC_LABELS_SUPPORT_MULTIPLE_SEMANTIC_LABELS_BIT_FB, 0x00000001) \ _(XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_DESK_TO_TABLE_MIGRATION_BIT_FB, 0x00000002) \ + _(XR_SEMANTIC_LABELS_SUPPORT_ACCEPT_INVISIBLE_WALL_FACE_BIT_FB, 0x00000004) \ #define XR_LIST_BITS_XrDigitalLensControlFlagsALMALENCE(_) \ _(XR_DIGITAL_LENS_CONTROL_PROCESSING_DISABLE_BIT_ALMALENCE, 0x00000001) \ @@ -1451,6 +1553,7 @@ XR_ENUM_STR(XrResult); _(XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SUPER_SAMPLING_BIT_FB, 0x00000002) \ _(XR_COMPOSITION_LAYER_SETTINGS_NORMAL_SHARPENING_BIT_FB, 0x00000004) \ _(XR_COMPOSITION_LAYER_SETTINGS_QUALITY_SHARPENING_BIT_FB, 0x00000008) \ + _(XR_COMPOSITION_LAYER_SETTINGS_AUTO_LAYER_FILTER_BIT_META, 0x00000020) \ #define XR_LIST_BITS_XrPassthroughPreferenceFlagsMETA(_) \ _(XR_PASSTHROUGH_PREFERENCE_DEFAULT_TO_ACTIVE_BIT_META, 0x00000001) \ @@ -4141,6 +4244,20 @@ XR_ENUM_STR(XrResult); _(next) \ _(id) \ +/// Calls your macro with the name of each member of XrRecommendedLayerResolutionMETA, in order. +#define XR_LIST_STRUCT_XrRecommendedLayerResolutionMETA(_) \ + _(type) \ + _(next) \ + _(recommendedImageDimensions) \ + _(isValid) \ + +/// Calls your macro with the name of each member of XrRecommendedLayerResolutionGetInfoMETA, in order. +#define XR_LIST_STRUCT_XrRecommendedLayerResolutionGetInfoMETA(_) \ + _(type) \ + _(next) \ + _(layer) \ + _(predictedDisplayTime) \ + /// Calls your macro with the name of each member of XrPassthroughColorLutDataMETA, in order. #define XR_LIST_STRUCT_XrPassthroughColorLutDataMETA(_) \ _(bufferSize) \ @@ -4181,6 +4298,56 @@ XR_ENUM_STR(XrResult); _(next) \ _(maxColorLutResolution) \ +/// Calls your macro with the name of each member of XrSpaceTriangleMeshGetInfoMETA, in order. +#define XR_LIST_STRUCT_XrSpaceTriangleMeshGetInfoMETA(_) \ + _(type) \ + _(next) \ + +/// Calls your macro with the name of each member of XrSpaceTriangleMeshMETA, in order. +#define XR_LIST_STRUCT_XrSpaceTriangleMeshMETA(_) \ + _(type) \ + _(next) \ + _(vertexCapacityInput) \ + _(vertexCountOutput) \ + _(vertices) \ + _(indexCapacityInput) \ + _(indexCountOutput) \ + _(indices) \ + +/// Calls your macro with the name of each member of XrSystemFaceTrackingProperties2FB, in order. +#define XR_LIST_STRUCT_XrSystemFaceTrackingProperties2FB(_) \ + _(type) \ + _(next) \ + _(supportsVisualFaceTracking) \ + _(supportsAudioFaceTracking) \ + +/// Calls your macro with the name of each member of XrFaceTrackerCreateInfo2FB, in order. +#define XR_LIST_STRUCT_XrFaceTrackerCreateInfo2FB(_) \ + _(type) \ + _(next) \ + _(faceExpressionSet) \ + _(requestedDataSourceCount) \ + _(requestedDataSources) \ + +/// Calls your macro with the name of each member of XrFaceExpressionInfo2FB, in order. +#define XR_LIST_STRUCT_XrFaceExpressionInfo2FB(_) \ + _(type) \ + _(next) \ + _(time) \ + +/// Calls your macro with the name of each member of XrFaceExpressionWeights2FB, in order. +#define XR_LIST_STRUCT_XrFaceExpressionWeights2FB(_) \ + _(type) \ + _(next) \ + _(weightCount) \ + _(weights) \ + _(confidenceCount) \ + _(confidences) \ + _(isValid) \ + _(isEyeFollowingBlendshapesValid) \ + _(dataSource) \ + _(time) \ + /// Calls your macro with the name of each member of XrPassthroughCreateInfoHTC, in order. #define XR_LIST_STRUCT_XrPassthroughCreateInfoHTC(_) \ _(type) \ @@ -4372,6 +4539,19 @@ XR_ENUM_STR(XrResult); _(vertexCountOutput) \ _(vertices) \ +/// Calls your macro with the name of each member of XrEventDataUserPresenceChangedEXT, in order. +#define XR_LIST_STRUCT_XrEventDataUserPresenceChangedEXT(_) \ + _(type) \ + _(next) \ + _(session) \ + _(isUserPresent) \ + +/// Calls your macro with the name of each member of XrSystemUserPresencePropertiesEXT, in order. +#define XR_LIST_STRUCT_XrSystemUserPresencePropertiesEXT(_) \ + _(type) \ + _(next) \ + _(supportsUserPresence) \ + /// Calls your macro with the name of each member of XrEventDataHeadsetFitChangedML, in order. #define XR_LIST_STRUCT_XrEventDataHeadsetFitChangedML(_) \ _(type) \ @@ -4680,11 +4860,19 @@ XR_ENUM_STR(XrResult); _(XrEventDataSpaceListSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB) \ _(XrSpaceUserCreateInfoFB, XR_TYPE_SPACE_USER_CREATE_INFO_FB) \ _(XrSystemHeadsetIdPropertiesMETA, XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META) \ + _(XrRecommendedLayerResolutionMETA, XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META) \ + _(XrRecommendedLayerResolutionGetInfoMETA, XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META) \ _(XrPassthroughColorLutCreateInfoMETA, XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META) \ _(XrPassthroughColorLutUpdateInfoMETA, XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META) \ _(XrPassthroughColorMapLutMETA, XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META) \ _(XrPassthroughColorMapInterpolatedLutMETA, XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META) \ _(XrSystemPassthroughColorLutPropertiesMETA, XR_TYPE_SYSTEM_PASSTHROUGH_COLOR_LUT_PROPERTIES_META) \ + _(XrSpaceTriangleMeshGetInfoMETA, XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META) \ + _(XrSpaceTriangleMeshMETA, XR_TYPE_SPACE_TRIANGLE_MESH_META) \ + _(XrSystemFaceTrackingProperties2FB, XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB) \ + _(XrFaceTrackerCreateInfo2FB, XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB) \ + _(XrFaceExpressionInfo2FB, XR_TYPE_FACE_EXPRESSION_INFO2_FB) \ + _(XrFaceExpressionWeights2FB, XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB) \ _(XrPassthroughCreateInfoHTC, XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC) \ _(XrPassthroughColorHTC, XR_TYPE_PASSTHROUGH_COLOR_HTC) \ _(XrPassthroughMeshTransformInfoHTC, XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC) \ @@ -4706,6 +4894,8 @@ XR_ENUM_STR(XrResult); _(XrPlaneDetectorLocationEXT, XR_TYPE_PLANE_DETECTOR_LOCATION_EXT) \ _(XrPlaneDetectorLocationsEXT, XR_TYPE_PLANE_DETECTOR_LOCATIONS_EXT) \ _(XrPlaneDetectorPolygonBufferEXT, XR_TYPE_PLANE_DETECTOR_POLYGON_BUFFER_EXT) \ + _(XrEventDataUserPresenceChangedEXT, XR_TYPE_EVENT_DATA_USER_PRESENCE_CHANGED_EXT) \ + _(XrSystemUserPresencePropertiesEXT, XR_TYPE_SYSTEM_USER_PRESENCE_PROPERTIES_EXT) \ _(XrEventDataHeadsetFitChangedML, XR_TYPE_EVENT_DATA_HEADSET_FIT_CHANGED_ML) \ _(XrEventDataEyeCalibrationChangedML, XR_TYPE_EVENT_DATA_EYE_CALIBRATION_CHANGED_ML) \ _(XrUserCalibrationEnableEventsInfoML, XR_TYPE_USER_CALIBRATION_ENABLE_EVENTS_INFO_ML) \ @@ -4960,6 +5150,7 @@ XR_ENUM_STR(XrResult); _(XR_VARJO_environment_depth_estimation, 124) \ _(XR_VARJO_marker_tracking, 125) \ _(XR_VARJO_view_offset, 126) \ + _(XR_VARJO_xr4_controller_interaction, 130) \ _(XR_ML_ml2_controller_interaction, 135) \ _(XR_ML_frame_end_info, 136) \ _(XR_ML_global_dimmer, 137) \ @@ -5003,8 +5194,12 @@ XR_ENUM_STR(XrResult); _(XR_FB_spatial_entity_storage_batch, 239) \ _(XR_FB_spatial_entity_user, 242) \ _(XR_META_headset_id, 246) \ + _(XR_META_recommended_layer_resolution, 255) \ _(XR_META_passthrough_color_lut, 267) \ + _(XR_META_spatial_entity_mesh, 270) \ + _(XR_META_automatic_layer_filter, 272) \ _(XR_META_touch_controller_plus, 280) \ + _(XR_FB_face_tracking2, 288) \ _(XR_EXT_uuid, 300) \ _(XR_EXT_hand_interaction, 303) \ _(XR_QCOM_tracking_optimization_settings, 307) \ @@ -5018,9 +5213,830 @@ XR_ENUM_STR(XrResult); _(XR_EXT_hand_tracking_data_source, 429) \ _(XR_EXT_plane_detection, 430) \ _(XR_OPPO_controller_interaction, 454) \ + _(XR_EXT_user_presence, 471) \ _(XR_ML_user_calibration, 473) \ _(XR_YVR_controller_interaction, 498) \ + +/// For every function defined by XR_VERSION_1_0 in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_VERSION_1_0(_) \ + _(GetInstanceProcAddr, VERSION_1_0) \ + _(EnumerateApiLayerProperties, VERSION_1_0) \ + _(EnumerateInstanceExtensionProperties, VERSION_1_0) \ + _(CreateInstance, VERSION_1_0) \ + _(DestroyInstance, VERSION_1_0) \ + _(GetInstanceProperties, VERSION_1_0) \ + _(PollEvent, VERSION_1_0) \ + _(ResultToString, VERSION_1_0) \ + _(StructureTypeToString, VERSION_1_0) \ + _(GetSystem, VERSION_1_0) \ + _(GetSystemProperties, VERSION_1_0) \ + _(EnumerateEnvironmentBlendModes, VERSION_1_0) \ + _(CreateSession, VERSION_1_0) \ + _(DestroySession, VERSION_1_0) \ + _(EnumerateReferenceSpaces, VERSION_1_0) \ + _(CreateReferenceSpace, VERSION_1_0) \ + _(GetReferenceSpaceBoundsRect, VERSION_1_0) \ + _(CreateActionSpace, VERSION_1_0) \ + _(LocateSpace, VERSION_1_0) \ + _(DestroySpace, VERSION_1_0) \ + _(EnumerateViewConfigurations, VERSION_1_0) \ + _(GetViewConfigurationProperties, VERSION_1_0) \ + _(EnumerateViewConfigurationViews, VERSION_1_0) \ + _(EnumerateSwapchainFormats, VERSION_1_0) \ + _(CreateSwapchain, VERSION_1_0) \ + _(DestroySwapchain, VERSION_1_0) \ + _(EnumerateSwapchainImages, VERSION_1_0) \ + _(AcquireSwapchainImage, VERSION_1_0) \ + _(WaitSwapchainImage, VERSION_1_0) \ + _(ReleaseSwapchainImage, VERSION_1_0) \ + _(BeginSession, VERSION_1_0) \ + _(EndSession, VERSION_1_0) \ + _(RequestExitSession, VERSION_1_0) \ + _(WaitFrame, VERSION_1_0) \ + _(BeginFrame, VERSION_1_0) \ + _(EndFrame, VERSION_1_0) \ + _(LocateViews, VERSION_1_0) \ + _(StringToPath, VERSION_1_0) \ + _(PathToString, VERSION_1_0) \ + _(CreateActionSet, VERSION_1_0) \ + _(DestroyActionSet, VERSION_1_0) \ + _(CreateAction, VERSION_1_0) \ + _(DestroyAction, VERSION_1_0) \ + _(SuggestInteractionProfileBindings, VERSION_1_0) \ + _(AttachSessionActionSets, VERSION_1_0) \ + _(GetCurrentInteractionProfile, VERSION_1_0) \ + _(GetActionStateBoolean, VERSION_1_0) \ + _(GetActionStateFloat, VERSION_1_0) \ + _(GetActionStateVector2f, VERSION_1_0) \ + _(GetActionStatePose, VERSION_1_0) \ + _(SyncActions, VERSION_1_0) \ + _(EnumerateBoundSourcesForAction, VERSION_1_0) \ + _(GetInputSourceLocalizedName, VERSION_1_0) \ + _(ApplyHapticFeedback, VERSION_1_0) \ + _(StopHapticFeedback, VERSION_1_0) \ + + +/// For every function defined by XR_LOADER_VERSION_1_0 in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_LOADER_VERSION_1_0(_) \ + _(CreateApiLayerInstance, LOADER_VERSION_1_0) \ + _(NegotiateLoaderRuntimeInterface, LOADER_VERSION_1_0) \ + _(NegotiateLoaderApiLayerInterface, LOADER_VERSION_1_0) \ + + +/// For every function defined by XR_KHR_android_thread_settings in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_android_thread_settings(_) \ + _(SetAndroidApplicationThreadKHR, KHR_android_thread_settings) \ + + +/// For every function defined by XR_KHR_android_surface_swapchain in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_android_surface_swapchain(_) \ + _(CreateSwapchainAndroidSurfaceKHR, KHR_android_surface_swapchain) \ + + +/// For every function defined by XR_KHR_opengl_enable in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_opengl_enable(_) \ + _(GetOpenGLGraphicsRequirementsKHR, KHR_opengl_enable) \ + + +/// For every function defined by XR_KHR_opengl_es_enable in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_opengl_es_enable(_) \ + _(GetOpenGLESGraphicsRequirementsKHR, KHR_opengl_es_enable) \ + + +/// For every function defined by XR_KHR_vulkan_enable in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_vulkan_enable(_) \ + _(GetVulkanInstanceExtensionsKHR, KHR_vulkan_enable) \ + _(GetVulkanDeviceExtensionsKHR, KHR_vulkan_enable) \ + _(GetVulkanGraphicsDeviceKHR, KHR_vulkan_enable) \ + _(GetVulkanGraphicsRequirementsKHR, KHR_vulkan_enable) \ + + +/// For every function defined by XR_KHR_D3D11_enable in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_D3D11_enable(_) \ + _(GetD3D11GraphicsRequirementsKHR, KHR_D3D11_enable) \ + + +/// For every function defined by XR_KHR_D3D12_enable in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_D3D12_enable(_) \ + _(GetD3D12GraphicsRequirementsKHR, KHR_D3D12_enable) \ + + +/// For every function defined by XR_KHR_visibility_mask in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_visibility_mask(_) \ + _(GetVisibilityMaskKHR, KHR_visibility_mask) \ + + +/// For every function defined by XR_KHR_win32_convert_performance_counter_time in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_win32_convert_performance_counter_time(_) \ + _(ConvertWin32PerformanceCounterToTimeKHR, KHR_win32_convert_performance_counter_time) \ + _(ConvertTimeToWin32PerformanceCounterKHR, KHR_win32_convert_performance_counter_time) \ + + +/// For every function defined by XR_KHR_convert_timespec_time in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_convert_timespec_time(_) \ + _(ConvertTimespecTimeToTimeKHR, KHR_convert_timespec_time) \ + _(ConvertTimeToTimespecTimeKHR, KHR_convert_timespec_time) \ + + +/// For every function defined by XR_KHR_loader_init in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_loader_init(_) \ + _(InitializeLoaderKHR, KHR_loader_init) \ + + +/// For every function defined by XR_KHR_vulkan_enable2 in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_KHR_vulkan_enable2(_) \ + _(CreateVulkanInstanceKHR, KHR_vulkan_enable2) \ + _(CreateVulkanDeviceKHR, KHR_vulkan_enable2) \ + _(GetVulkanGraphicsDevice2KHR, KHR_vulkan_enable2) \ + + +/// For every function defined by XR_EXT_performance_settings in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_EXT_performance_settings(_) \ + _(PerfSettingsSetPerformanceLevelEXT, EXT_performance_settings) \ + + +/// For every function defined by XR_EXT_thermal_query in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_EXT_thermal_query(_) \ + _(ThermalGetTemperatureTrendEXT, EXT_thermal_query) \ + + +/// For every function defined by XR_EXT_debug_utils in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_EXT_debug_utils(_) \ + _(SetDebugUtilsObjectNameEXT, EXT_debug_utils) \ + _(CreateDebugUtilsMessengerEXT, EXT_debug_utils) \ + _(DestroyDebugUtilsMessengerEXT, EXT_debug_utils) \ + _(SubmitDebugUtilsMessageEXT, EXT_debug_utils) \ + _(SessionBeginDebugUtilsLabelRegionEXT, EXT_debug_utils) \ + _(SessionEndDebugUtilsLabelRegionEXT, EXT_debug_utils) \ + _(SessionInsertDebugUtilsLabelEXT, EXT_debug_utils) \ + + +/// For every function defined by XR_MSFT_spatial_anchor in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_spatial_anchor(_) \ + _(CreateSpatialAnchorMSFT, MSFT_spatial_anchor) \ + _(CreateSpatialAnchorSpaceMSFT, MSFT_spatial_anchor) \ + _(DestroySpatialAnchorMSFT, MSFT_spatial_anchor) \ + + +/// For every function defined by XR_EXT_conformance_automation in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_EXT_conformance_automation(_) \ + _(SetInputDeviceActiveEXT, EXT_conformance_automation) \ + _(SetInputDeviceStateBoolEXT, EXT_conformance_automation) \ + _(SetInputDeviceStateFloatEXT, EXT_conformance_automation) \ + _(SetInputDeviceStateVector2fEXT, EXT_conformance_automation) \ + _(SetInputDeviceLocationEXT, EXT_conformance_automation) \ + + +/// For every function defined by XR_MSFT_spatial_graph_bridge in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_spatial_graph_bridge(_) \ + _(CreateSpatialGraphNodeSpaceMSFT, MSFT_spatial_graph_bridge) \ + _(TryCreateSpatialGraphStaticNodeBindingMSFT, MSFT_spatial_graph_bridge) \ + _(DestroySpatialGraphNodeBindingMSFT, MSFT_spatial_graph_bridge) \ + _(GetSpatialGraphNodeBindingPropertiesMSFT, MSFT_spatial_graph_bridge) \ + + +/// For every function defined by XR_EXT_hand_tracking in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_EXT_hand_tracking(_) \ + _(CreateHandTrackerEXT, EXT_hand_tracking) \ + _(DestroyHandTrackerEXT, EXT_hand_tracking) \ + _(LocateHandJointsEXT, EXT_hand_tracking) \ + + +/// For every function defined by XR_MSFT_hand_tracking_mesh in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_hand_tracking_mesh(_) \ + _(CreateHandMeshSpaceMSFT, MSFT_hand_tracking_mesh) \ + _(UpdateHandMeshMSFT, MSFT_hand_tracking_mesh) \ + + +/// For every function defined by XR_MSFT_controller_model in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_controller_model(_) \ + _(GetControllerModelKeyMSFT, MSFT_controller_model) \ + _(LoadControllerModelMSFT, MSFT_controller_model) \ + _(GetControllerModelPropertiesMSFT, MSFT_controller_model) \ + _(GetControllerModelStateMSFT, MSFT_controller_model) \ + + +/// For every function defined by XR_MSFT_perception_anchor_interop in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_perception_anchor_interop(_) \ + _(CreateSpatialAnchorFromPerceptionAnchorMSFT, MSFT_perception_anchor_interop) \ + _(TryGetPerceptionAnchorFromSpatialAnchorMSFT, MSFT_perception_anchor_interop) \ + + +/// For every function defined by XR_MSFT_composition_layer_reprojection in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_composition_layer_reprojection(_) \ + _(EnumerateReprojectionModesMSFT, MSFT_composition_layer_reprojection) \ + + +/// For every function defined by XR_FB_swapchain_update_state in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_swapchain_update_state(_) \ + _(UpdateSwapchainFB, FB_swapchain_update_state) \ + _(GetSwapchainStateFB, FB_swapchain_update_state) \ + + +/// For every function defined by XR_FB_body_tracking in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_body_tracking(_) \ + _(CreateBodyTrackerFB, FB_body_tracking) \ + _(DestroyBodyTrackerFB, FB_body_tracking) \ + _(LocateBodyJointsFB, FB_body_tracking) \ + _(GetBodySkeletonFB, FB_body_tracking) \ + + +/// For every function defined by XR_MSFT_scene_understanding in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_scene_understanding(_) \ + _(EnumerateSceneComputeFeaturesMSFT, MSFT_scene_understanding) \ + _(CreateSceneObserverMSFT, MSFT_scene_understanding) \ + _(DestroySceneObserverMSFT, MSFT_scene_understanding) \ + _(CreateSceneMSFT, MSFT_scene_understanding) \ + _(DestroySceneMSFT, MSFT_scene_understanding) \ + _(ComputeNewSceneMSFT, MSFT_scene_understanding) \ + _(GetSceneComputeStateMSFT, MSFT_scene_understanding) \ + _(GetSceneComponentsMSFT, MSFT_scene_understanding) \ + _(LocateSceneComponentsMSFT, MSFT_scene_understanding) \ + _(GetSceneMeshBuffersMSFT, MSFT_scene_understanding) \ + + +/// For every function defined by XR_MSFT_scene_understanding_serialization in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_scene_understanding_serialization(_) \ + _(DeserializeSceneMSFT, MSFT_scene_understanding_serialization) \ + _(GetSerializedSceneFragmentDataMSFT, MSFT_scene_understanding_serialization) \ + + +/// For every function defined by XR_FB_display_refresh_rate in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_display_refresh_rate(_) \ + _(EnumerateDisplayRefreshRatesFB, FB_display_refresh_rate) \ + _(GetDisplayRefreshRateFB, FB_display_refresh_rate) \ + _(RequestDisplayRefreshRateFB, FB_display_refresh_rate) \ + + +/// For every function defined by XR_HTCX_vive_tracker_interaction in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_HTCX_vive_tracker_interaction(_) \ + _(EnumerateViveTrackerPathsHTCX, HTCX_vive_tracker_interaction) \ + + +/// For every function defined by XR_HTC_facial_tracking in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_HTC_facial_tracking(_) \ + _(CreateFacialTrackerHTC, HTC_facial_tracking) \ + _(DestroyFacialTrackerHTC, HTC_facial_tracking) \ + _(GetFacialExpressionsHTC, HTC_facial_tracking) \ + + +/// For every function defined by XR_FB_color_space in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_color_space(_) \ + _(EnumerateColorSpacesFB, FB_color_space) \ + _(SetColorSpaceFB, FB_color_space) \ + + +/// For every function defined by XR_FB_hand_tracking_mesh in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_hand_tracking_mesh(_) \ + _(GetHandMeshFB, FB_hand_tracking_mesh) \ + + +/// For every function defined by XR_FB_spatial_entity in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity(_) \ + _(CreateSpatialAnchorFB, FB_spatial_entity) \ + _(GetSpaceUuidFB, FB_spatial_entity) \ + _(EnumerateSpaceSupportedComponentsFB, FB_spatial_entity) \ + _(SetSpaceComponentStatusFB, FB_spatial_entity) \ + _(GetSpaceComponentStatusFB, FB_spatial_entity) \ + + +/// For every function defined by XR_FB_foveation in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_foveation(_) \ + _(CreateFoveationProfileFB, FB_foveation) \ + _(DestroyFoveationProfileFB, FB_foveation) \ + + +/// For every function defined by XR_FB_keyboard_tracking in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_keyboard_tracking(_) \ + _(QuerySystemTrackedKeyboardFB, FB_keyboard_tracking) \ + _(CreateKeyboardSpaceFB, FB_keyboard_tracking) \ + + +/// For every function defined by XR_FB_triangle_mesh in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_triangle_mesh(_) \ + _(CreateTriangleMeshFB, FB_triangle_mesh) \ + _(DestroyTriangleMeshFB, FB_triangle_mesh) \ + _(TriangleMeshGetVertexBufferFB, FB_triangle_mesh) \ + _(TriangleMeshGetIndexBufferFB, FB_triangle_mesh) \ + _(TriangleMeshBeginUpdateFB, FB_triangle_mesh) \ + _(TriangleMeshEndUpdateFB, FB_triangle_mesh) \ + _(TriangleMeshBeginVertexBufferUpdateFB, FB_triangle_mesh) \ + _(TriangleMeshEndVertexBufferUpdateFB, FB_triangle_mesh) \ + + +/// For every function defined by XR_FB_passthrough in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_passthrough(_) \ + _(CreatePassthroughFB, FB_passthrough) \ + _(DestroyPassthroughFB, FB_passthrough) \ + _(PassthroughStartFB, FB_passthrough) \ + _(PassthroughPauseFB, FB_passthrough) \ + _(CreatePassthroughLayerFB, FB_passthrough) \ + _(DestroyPassthroughLayerFB, FB_passthrough) \ + _(PassthroughLayerPauseFB, FB_passthrough) \ + _(PassthroughLayerResumeFB, FB_passthrough) \ + _(PassthroughLayerSetStyleFB, FB_passthrough) \ + _(CreateGeometryInstanceFB, FB_passthrough) \ + _(DestroyGeometryInstanceFB, FB_passthrough) \ + _(GeometryInstanceSetTransformFB, FB_passthrough) \ + + +/// For every function defined by XR_FB_render_model in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_render_model(_) \ + _(EnumerateRenderModelPathsFB, FB_render_model) \ + _(GetRenderModelPropertiesFB, FB_render_model) \ + _(LoadRenderModelFB, FB_render_model) \ + + +/// For every function defined by XR_VARJO_environment_depth_estimation in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_VARJO_environment_depth_estimation(_) \ + _(SetEnvironmentDepthEstimationVARJO, VARJO_environment_depth_estimation) \ + + +/// For every function defined by XR_VARJO_marker_tracking in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_VARJO_marker_tracking(_) \ + _(SetMarkerTrackingVARJO, VARJO_marker_tracking) \ + _(SetMarkerTrackingTimeoutVARJO, VARJO_marker_tracking) \ + _(SetMarkerTrackingPredictionVARJO, VARJO_marker_tracking) \ + _(GetMarkerSizeVARJO, VARJO_marker_tracking) \ + _(CreateMarkerSpaceVARJO, VARJO_marker_tracking) \ + + +/// For every function defined by XR_VARJO_view_offset in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_VARJO_view_offset(_) \ + _(SetViewOffsetVARJO, VARJO_view_offset) \ + + +/// For every function defined by XR_ML_compat in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_ML_compat(_) \ + _(CreateSpaceFromCoordinateFrameUIDML, ML_compat) \ + + +/// For every function defined by XR_ML_marker_understanding in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_ML_marker_understanding(_) \ + _(CreateMarkerDetectorML, ML_marker_understanding) \ + _(DestroyMarkerDetectorML, ML_marker_understanding) \ + _(SnapshotMarkerDetectorML, ML_marker_understanding) \ + _(GetMarkerDetectorStateML, ML_marker_understanding) \ + _(GetMarkersML, ML_marker_understanding) \ + _(GetMarkerReprojectionErrorML, ML_marker_understanding) \ + _(GetMarkerLengthML, ML_marker_understanding) \ + _(GetMarkerNumberML, ML_marker_understanding) \ + _(GetMarkerStringML, ML_marker_understanding) \ + _(CreateMarkerSpaceML, ML_marker_understanding) \ + + +/// For every function defined by XR_ML_localization_map in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_ML_localization_map(_) \ + _(EnableLocalizationEventsML, ML_localization_map) \ + _(QueryLocalizationMapsML, ML_localization_map) \ + _(RequestMapLocalizationML, ML_localization_map) \ + _(ImportLocalizationMapML, ML_localization_map) \ + _(CreateExportedLocalizationMapML, ML_localization_map) \ + _(DestroyExportedLocalizationMapML, ML_localization_map) \ + _(GetExportedLocalizationMapDataML, ML_localization_map) \ + + +/// For every function defined by XR_MSFT_spatial_anchor_persistence in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_spatial_anchor_persistence(_) \ + _(CreateSpatialAnchorStoreConnectionMSFT, MSFT_spatial_anchor_persistence) \ + _(DestroySpatialAnchorStoreConnectionMSFT, MSFT_spatial_anchor_persistence) \ + _(PersistSpatialAnchorMSFT, MSFT_spatial_anchor_persistence) \ + _(EnumeratePersistedSpatialAnchorNamesMSFT, MSFT_spatial_anchor_persistence) \ + _(CreateSpatialAnchorFromPersistedNameMSFT, MSFT_spatial_anchor_persistence) \ + _(UnpersistSpatialAnchorMSFT, MSFT_spatial_anchor_persistence) \ + _(ClearSpatialAnchorStoreMSFT, MSFT_spatial_anchor_persistence) \ + + +/// For every function defined by XR_MSFT_scene_marker in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MSFT_scene_marker(_) \ + _(GetSceneMarkerRawDataMSFT, MSFT_scene_marker) \ + _(GetSceneMarkerDecodedStringMSFT, MSFT_scene_marker) \ + + +/// For every function defined by XR_FB_spatial_entity_query in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_query(_) \ + _(QuerySpacesFB, FB_spatial_entity_query) \ + _(RetrieveSpaceQueryResultsFB, FB_spatial_entity_query) \ + + +/// For every function defined by XR_FB_spatial_entity_storage in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_storage(_) \ + _(SaveSpaceFB, FB_spatial_entity_storage) \ + _(EraseSpaceFB, FB_spatial_entity_storage) \ + + +/// For every function defined by XR_OCULUS_audio_device_guid in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_OCULUS_audio_device_guid(_) \ + _(GetAudioOutputDeviceGuidOculus, OCULUS_audio_device_guid) \ + _(GetAudioInputDeviceGuidOculus, OCULUS_audio_device_guid) \ + + +/// For every function defined by XR_FB_spatial_entity_sharing in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_sharing(_) \ + _(ShareSpacesFB, FB_spatial_entity_sharing) \ + + +/// For every function defined by XR_FB_scene in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_scene(_) \ + _(GetSpaceBoundingBox2DFB, FB_scene) \ + _(GetSpaceBoundingBox3DFB, FB_scene) \ + _(GetSpaceSemanticLabelsFB, FB_scene) \ + _(GetSpaceBoundary2DFB, FB_scene) \ + _(GetSpaceRoomLayoutFB, FB_scene) \ + + +/// For every function defined by XR_ALMALENCE_digital_lens_control in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_ALMALENCE_digital_lens_control(_) \ + _(SetDigitalLensControlALMALENCE, ALMALENCE_digital_lens_control) \ + + +/// For every function defined by XR_FB_scene_capture in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_scene_capture(_) \ + _(RequestSceneCaptureFB, FB_scene_capture) \ + + +/// For every function defined by XR_FB_spatial_entity_container in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_container(_) \ + _(GetSpaceContainerFB, FB_spatial_entity_container) \ + + +/// For every function defined by XR_META_foveation_eye_tracked in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_META_foveation_eye_tracked(_) \ + _(GetFoveationEyeTrackedStateMETA, META_foveation_eye_tracked) \ + + +/// For every function defined by XR_FB_face_tracking in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_face_tracking(_) \ + _(CreateFaceTrackerFB, FB_face_tracking) \ + _(DestroyFaceTrackerFB, FB_face_tracking) \ + _(GetFaceExpressionWeightsFB, FB_face_tracking) \ + + +/// For every function defined by XR_FB_eye_tracking_social in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_eye_tracking_social(_) \ + _(CreateEyeTrackerFB, FB_eye_tracking_social) \ + _(DestroyEyeTrackerFB, FB_eye_tracking_social) \ + _(GetEyeGazesFB, FB_eye_tracking_social) \ + + +/// For every function defined by XR_FB_passthrough_keyboard_hands in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_passthrough_keyboard_hands(_) \ + _(PassthroughLayerSetKeyboardHandsIntensityFB, FB_passthrough_keyboard_hands) \ + + +/// For every function defined by XR_FB_haptic_pcm in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_haptic_pcm(_) \ + _(GetDeviceSampleRateFB, FB_haptic_pcm) \ + + +/// For every function defined by XR_META_passthrough_preferences in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_META_passthrough_preferences(_) \ + _(GetPassthroughPreferencesMETA, META_passthrough_preferences) \ + + +/// For every function defined by XR_META_virtual_keyboard in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_META_virtual_keyboard(_) \ + _(CreateVirtualKeyboardMETA, META_virtual_keyboard) \ + _(DestroyVirtualKeyboardMETA, META_virtual_keyboard) \ + _(CreateVirtualKeyboardSpaceMETA, META_virtual_keyboard) \ + _(SuggestVirtualKeyboardLocationMETA, META_virtual_keyboard) \ + _(GetVirtualKeyboardScaleMETA, META_virtual_keyboard) \ + _(SetVirtualKeyboardModelVisibilityMETA, META_virtual_keyboard) \ + _(GetVirtualKeyboardModelAnimationStatesMETA, META_virtual_keyboard) \ + _(GetVirtualKeyboardDirtyTexturesMETA, META_virtual_keyboard) \ + _(GetVirtualKeyboardTextureDataMETA, META_virtual_keyboard) \ + _(SendVirtualKeyboardInputMETA, META_virtual_keyboard) \ + _(ChangeVirtualKeyboardTextContextMETA, META_virtual_keyboard) \ + + +/// For every function defined by XR_OCULUS_external_camera in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_OCULUS_external_camera(_) \ + _(EnumerateExternalCamerasOCULUS, OCULUS_external_camera) \ + + +/// For every function defined by XR_META_performance_metrics in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_META_performance_metrics(_) \ + _(EnumeratePerformanceMetricsCounterPathsMETA, META_performance_metrics) \ + _(SetPerformanceMetricsStateMETA, META_performance_metrics) \ + _(GetPerformanceMetricsStateMETA, META_performance_metrics) \ + _(QueryPerformanceMetricsCounterMETA, META_performance_metrics) \ + + +/// For every function defined by XR_FB_spatial_entity_storage_batch in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_storage_batch(_) \ + _(SaveSpaceListFB, FB_spatial_entity_storage_batch) \ + + +/// For every function defined by XR_FB_spatial_entity_user in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_spatial_entity_user(_) \ + _(CreateSpaceUserFB, FB_spatial_entity_user) \ + _(GetSpaceUserIdFB, FB_spatial_entity_user) \ + _(DestroySpaceUserFB, FB_spatial_entity_user) \ + + +/// For every function defined by XR_META_recommended_layer_resolution in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_META_recommended_layer_resolution(_) \ + _(GetRecommendedLayerResolutionMETA, META_recommended_layer_resolution) \ + + +/// For every function defined by XR_META_passthrough_color_lut in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_META_passthrough_color_lut(_) \ + _(CreatePassthroughColorLutMETA, META_passthrough_color_lut) \ + _(DestroyPassthroughColorLutMETA, META_passthrough_color_lut) \ + _(UpdatePassthroughColorLutMETA, META_passthrough_color_lut) \ + + +/// For every function defined by XR_META_spatial_entity_mesh in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_META_spatial_entity_mesh(_) \ + _(GetSpaceTriangleMeshMETA, META_spatial_entity_mesh) \ + + +/// For every function defined by XR_FB_face_tracking2 in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_FB_face_tracking2(_) \ + _(CreateFaceTracker2FB, FB_face_tracking2) \ + _(DestroyFaceTracker2FB, FB_face_tracking2) \ + _(GetFaceExpressionWeights2FB, FB_face_tracking2) \ + + +/// For every function defined by XR_QCOM_tracking_optimization_settings in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_QCOM_tracking_optimization_settings(_) \ + _(SetTrackingOptimizationSettingsHintQCOM, QCOM_tracking_optimization_settings) \ + + +/// For every function defined by XR_HTC_passthrough in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_HTC_passthrough(_) \ + _(CreatePassthroughHTC, HTC_passthrough) \ + _(DestroyPassthroughHTC, HTC_passthrough) \ + + +/// For every function defined by XR_HTC_foveation in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_HTC_foveation(_) \ + _(ApplyFoveationHTC, HTC_foveation) \ + + +/// For every function defined by XR_HTC_anchor in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_HTC_anchor(_) \ + _(CreateSpatialAnchorHTC, HTC_anchor) \ + _(GetSpatialAnchorNameHTC, HTC_anchor) \ + + +/// For every function defined by XR_MNDX_force_feedback_curl in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_MNDX_force_feedback_curl(_) \ + _(ApplyForceFeedbackCurlMNDX, MNDX_force_feedback_curl) \ + + +/// For every function defined by XR_EXT_plane_detection in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_EXT_plane_detection(_) \ + _(CreatePlaneDetectorEXT, EXT_plane_detection) \ + _(DestroyPlaneDetectorEXT, EXT_plane_detection) \ + _(BeginPlaneDetectionEXT, EXT_plane_detection) \ + _(GetPlaneDetectionStateEXT, EXT_plane_detection) \ + _(GetPlaneDetectionsEXT, EXT_plane_detection) \ + _(GetPlanePolygonBufferEXT, EXT_plane_detection) \ + + +/// For every function defined by XR_ML_user_calibration in this version of the spec, +/// calls your macro with the function name and extension name. +/// Trims the leading `xr` from the function name and the leading `XR_` from the feature name, +/// because it is easy to add back but impossible to remove with the preprocessor. +#define XR_LIST_FUNCTIONS_XR_ML_user_calibration(_) \ + _(EnableUserCalibrationEventsML, ML_user_calibration) \ + + + + #endif diff --git a/thirdparty/openxr/include/openxr/openxr_reflection_structs.h b/thirdparty/openxr/include/openxr/openxr_reflection_structs.h index bcc1333e298..f973539cbb8 100644 --- a/thirdparty/openxr/include/openxr/openxr_reflection_structs.h +++ b/thirdparty/openxr/include/openxr/openxr_reflection_structs.h @@ -308,11 +308,19 @@ This file contains expansion macros (X Macros) for OpenXR structures. _avail(XrEventDataSpaceListSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB) \ _avail(XrSpaceUserCreateInfoFB, XR_TYPE_SPACE_USER_CREATE_INFO_FB) \ _avail(XrSystemHeadsetIdPropertiesMETA, XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_META) \ + _avail(XrRecommendedLayerResolutionMETA, XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_META) \ + _avail(XrRecommendedLayerResolutionGetInfoMETA, XR_TYPE_RECOMMENDED_LAYER_RESOLUTION_GET_INFO_META) \ _avail(XrPassthroughColorLutCreateInfoMETA, XR_TYPE_PASSTHROUGH_COLOR_LUT_CREATE_INFO_META) \ _avail(XrPassthroughColorLutUpdateInfoMETA, XR_TYPE_PASSTHROUGH_COLOR_LUT_UPDATE_INFO_META) \ _avail(XrPassthroughColorMapLutMETA, XR_TYPE_PASSTHROUGH_COLOR_MAP_LUT_META) \ _avail(XrPassthroughColorMapInterpolatedLutMETA, XR_TYPE_PASSTHROUGH_COLOR_MAP_INTERPOLATED_LUT_META) \ _avail(XrSystemPassthroughColorLutPropertiesMETA, XR_TYPE_SYSTEM_PASSTHROUGH_COLOR_LUT_PROPERTIES_META) \ + _avail(XrSpaceTriangleMeshGetInfoMETA, XR_TYPE_SPACE_TRIANGLE_MESH_GET_INFO_META) \ + _avail(XrSpaceTriangleMeshMETA, XR_TYPE_SPACE_TRIANGLE_MESH_META) \ + _avail(XrSystemFaceTrackingProperties2FB, XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES2_FB) \ + _avail(XrFaceTrackerCreateInfo2FB, XR_TYPE_FACE_TRACKER_CREATE_INFO2_FB) \ + _avail(XrFaceExpressionInfo2FB, XR_TYPE_FACE_EXPRESSION_INFO2_FB) \ + _avail(XrFaceExpressionWeights2FB, XR_TYPE_FACE_EXPRESSION_WEIGHTS2_FB) \ _avail(XrPassthroughCreateInfoHTC, XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC) \ _avail(XrPassthroughColorHTC, XR_TYPE_PASSTHROUGH_COLOR_HTC) \ _avail(XrPassthroughMeshTransformInfoHTC, XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC) \ @@ -334,6 +342,8 @@ This file contains expansion macros (X Macros) for OpenXR structures. _avail(XrPlaneDetectorLocationEXT, XR_TYPE_PLANE_DETECTOR_LOCATION_EXT) \ _avail(XrPlaneDetectorLocationsEXT, XR_TYPE_PLANE_DETECTOR_LOCATIONS_EXT) \ _avail(XrPlaneDetectorPolygonBufferEXT, XR_TYPE_PLANE_DETECTOR_POLYGON_BUFFER_EXT) \ + _avail(XrEventDataUserPresenceChangedEXT, XR_TYPE_EVENT_DATA_USER_PRESENCE_CHANGED_EXT) \ + _avail(XrSystemUserPresencePropertiesEXT, XR_TYPE_SYSTEM_USER_PRESENCE_PROPERTIES_EXT) \ _avail(XrEventDataHeadsetFitChangedML, XR_TYPE_EVENT_DATA_HEADSET_FIT_CHANGED_ML) \ _avail(XrEventDataEyeCalibrationChangedML, XR_TYPE_EVENT_DATA_EYE_CALIBRATION_CHANGED_ML) \ _avail(XrUserCalibrationEnableEventsInfoML, XR_TYPE_USER_CALIBRATION_ENABLE_EVENTS_INFO_ML) \ diff --git a/thirdparty/openxr/src/common/platform_utils.hpp b/thirdparty/openxr/src/common/platform_utils.hpp index c4d75bf259f..35369a14770 100644 --- a/thirdparty/openxr/src/common/platform_utils.hpp +++ b/thirdparty/openxr/src/common/platform_utils.hpp @@ -323,6 +323,8 @@ static inline std::string PlatformUtilsGetSecureEnv(const char* name) { const std::string envValue = PlatformUtilsGetEnv(name); // Do not allow high integrity processes to act on data that can be controlled by medium integrity processes. + // Specifically, medium integrity processes can set environment variables which could then + // be read by high integrity processes. if (IsHighIntegrityLevel()) { if (!envValue.empty()) { LogPlatformUtilsError(std::string("!!! WARNING !!! Environment variable ") + name + diff --git a/thirdparty/openxr/src/loader/api_layer_interface.cpp b/thirdparty/openxr/src/loader/api_layer_interface.cpp index fb509de270d..a93d45da373 100644 --- a/thirdparty/openxr/src/loader/api_layer_interface.cpp +++ b/thirdparty/openxr/src/loader/api_layer_interface.cpp @@ -72,10 +72,10 @@ XrResult ApiLayerInterface::GetApiLayerProperties(const std::string& openxr_comm } // Find any implicit layers which we may need to report information for. - XrResult result = ApiLayerManifestFile::FindManifestFiles(MANIFEST_TYPE_IMPLICIT_API_LAYER, manifest_files); + XrResult result = ApiLayerManifestFile::FindManifestFiles(openxr_command, MANIFEST_TYPE_IMPLICIT_API_LAYER, manifest_files); if (XR_SUCCEEDED(result)) { // Find any explicit layers which we may need to report information for. - result = ApiLayerManifestFile::FindManifestFiles(MANIFEST_TYPE_EXPLICIT_API_LAYER, manifest_files); + result = ApiLayerManifestFile::FindManifestFiles(openxr_command, MANIFEST_TYPE_EXPLICIT_API_LAYER, manifest_files); } if (XR_FAILED(result)) { LoaderLogger::LogErrorMessage(openxr_command, @@ -126,10 +126,10 @@ XrResult ApiLayerInterface::GetInstanceExtensionProperties(const std::string& op // If a layer name is supplied, only use the information out of that one layer if (nullptr != layer_name && 0 != strlen(layer_name)) { - XrResult result = ApiLayerManifestFile::FindManifestFiles(MANIFEST_TYPE_IMPLICIT_API_LAYER, manifest_files); + XrResult result = ApiLayerManifestFile::FindManifestFiles(openxr_command, MANIFEST_TYPE_IMPLICIT_API_LAYER, manifest_files); if (XR_SUCCEEDED(result)) { // Find any explicit layers which we may need to report information for. - result = ApiLayerManifestFile::FindManifestFiles(MANIFEST_TYPE_EXPLICIT_API_LAYER, manifest_files); + result = ApiLayerManifestFile::FindManifestFiles(openxr_command, MANIFEST_TYPE_EXPLICIT_API_LAYER, manifest_files); if (XR_FAILED(result)) { LoaderLogger::LogErrorMessage( openxr_command, @@ -155,7 +155,7 @@ XrResult ApiLayerInterface::GetInstanceExtensionProperties(const std::string& op } // Otherwise, we want to add only implicit API layers and explicit API layers enabled using the environment variables } else { - XrResult result = ApiLayerManifestFile::FindManifestFiles(MANIFEST_TYPE_IMPLICIT_API_LAYER, manifest_files); + XrResult result = ApiLayerManifestFile::FindManifestFiles(openxr_command, MANIFEST_TYPE_IMPLICIT_API_LAYER, manifest_files); if (XR_SUCCEEDED(result)) { // Find any environmentally enabled explicit layers. If they're present, treat them like implicit layers // since we know that they're going to be enabled. @@ -163,7 +163,8 @@ XrResult ApiLayerInterface::GetInstanceExtensionProperties(const std::string& op AddEnvironmentApiLayers(env_enabled_layers); if (!env_enabled_layers.empty()) { std::vector> exp_layer_man_files = {}; - result = ApiLayerManifestFile::FindManifestFiles(MANIFEST_TYPE_EXPLICIT_API_LAYER, exp_layer_man_files); + result = + ApiLayerManifestFile::FindManifestFiles(openxr_command, MANIFEST_TYPE_EXPLICIT_API_LAYER, exp_layer_man_files); if (XR_SUCCEEDED(result)) { for (auto& exp_layer_man_file : exp_layer_man_files) { for (std::string& enabled_layer : env_enabled_layers) { @@ -197,8 +198,8 @@ XrResult ApiLayerInterface::LoadApiLayers(const std::string& openxr_command, uin std::vector> enabled_layer_manifest_files_in_init_order = {}; // Find any implicit layers. - XrResult result = - ApiLayerManifestFile::FindManifestFiles(MANIFEST_TYPE_IMPLICIT_API_LAYER, enabled_layer_manifest_files_in_init_order); + XrResult result = ApiLayerManifestFile::FindManifestFiles(openxr_command, MANIFEST_TYPE_IMPLICIT_API_LAYER, + enabled_layer_manifest_files_in_init_order); for (const auto& enabled_layer_manifest_file : enabled_layer_manifest_files_in_init_order) { layers_already_found.insert(enabled_layer_manifest_file->LayerName()); @@ -208,7 +209,8 @@ XrResult ApiLayerInterface::LoadApiLayers(const std::string& openxr_command, uin std::vector> explicit_layer_manifest_files = {}; if (XR_SUCCEEDED(result)) { - result = ApiLayerManifestFile::FindManifestFiles(MANIFEST_TYPE_EXPLICIT_API_LAYER, explicit_layer_manifest_files); + result = ApiLayerManifestFile::FindManifestFiles(openxr_command, MANIFEST_TYPE_EXPLICIT_API_LAYER, + explicit_layer_manifest_files); } bool found_all_layers = true; diff --git a/thirdparty/openxr/src/loader/loader_init_data.cpp b/thirdparty/openxr/src/loader/loader_init_data.cpp index 11d3c4e77b5..3ba6d26713f 100644 --- a/thirdparty/openxr/src/loader/loader_init_data.cpp +++ b/thirdparty/openxr/src/loader/loader_init_data.cpp @@ -11,9 +11,9 @@ #ifdef XR_KHR_LOADER_INIT_SUPPORT -#ifdef XR_USE_PLATFORM_ANDROID // Check and copy the Android-specific init data. XrResult LoaderInitData::initialize(const XrLoaderInitInfoBaseHeaderKHR* info) { +#if defined(XR_USE_PLATFORM_ANDROID) if (info->type != XR_TYPE_LOADER_INIT_INFO_ANDROID_KHR) { return XR_ERROR_VALIDATION_FAILURE; } @@ -40,11 +40,13 @@ XrResult LoaderInitData::initialize(const XrLoaderInitInfoBaseHeaderKHR* info) { const auto applicationContext = context.call("getApplicationContext()Landroid/content/Context;"); const auto applicationInfo = context.call("getApplicationInfo()Landroid/content/pm/ApplicationInfo;"); _native_library_path = applicationInfo.get("nativeLibraryDir"); +#else +#error "Platform specific XR_KHR_loader_init structure is not defined for this platform." +#endif // XR_USE_PLATFORM_ANDROID _initialized = true; return XR_SUCCESS; } -#endif // XR_USE_PLATFORM_ANDROID XrResult InitializeLoaderInitData(const XrLoaderInitInfoBaseHeaderKHR* loaderInitInfo) { return LoaderInitData::instance().initialize(loaderInitInfo); diff --git a/thirdparty/openxr/src/loader/loader_init_data.hpp b/thirdparty/openxr/src/loader/loader_init_data.hpp index fe6bc134d38..e3a27fc403b 100644 --- a/thirdparty/openxr/src/loader/loader_init_data.hpp +++ b/thirdparty/openxr/src/loader/loader_init_data.hpp @@ -33,7 +33,7 @@ class LoaderInitData { return obj; } -#ifdef XR_USE_PLATFORM_ANDROID +#if defined(XR_USE_PLATFORM_ANDROID) /*! * Type alias for the platform-specific structure type. */ diff --git a/thirdparty/openxr/src/loader/manifest_file.cpp b/thirdparty/openxr/src/loader/manifest_file.cpp index f9699ece407..4e3e5b49476 100644 --- a/thirdparty/openxr/src/loader/manifest_file.cpp +++ b/thirdparty/openxr/src/loader/manifest_file.cpp @@ -600,14 +600,8 @@ void RuntimeManifestFile::CreateIfValid(const Json::Value &root_node, const std: // If the library_path variable has no directory symbol, it's just a file name and should be accessible on the // global library path. if (lib_path.find('\\') != std::string::npos || lib_path.find('/') != std::string::npos) { - // If the library_path is an absolute path, just use that if it exists - if (FileSysUtilsIsAbsolutePath(lib_path)) { - if (!FileSysUtilsPathExists(lib_path)) { - error_ss << filename << " library " << lib_path << " does not appear to exist"; - LoaderLogger::LogErrorMessage("", error_ss.str()); - return; - } - } else { + // If the library_path is an absolute path, just use that as-is. + if (!FileSysUtilsIsAbsolutePath(lib_path)) { // Otherwise, treat the library path as a relative path based on the JSON file. std::string canonical_path; std::string combined_path; @@ -618,8 +612,8 @@ void RuntimeManifestFile::CreateIfValid(const Json::Value &root_node, const std: canonical_path = filename; } if (!FileSysUtilsGetParentPath(canonical_path, file_parent) || - !FileSysUtilsCombinePaths(file_parent, lib_path, combined_path) || !FileSysUtilsPathExists(combined_path)) { - error_ss << filename << " library " << combined_path << " does not appear to exist"; + !FileSysUtilsCombinePaths(file_parent, lib_path, combined_path)) { + error_ss << filename << " filesystem operations failed for path " << canonical_path; LoaderLogger::LogErrorMessage("", error_ss.str()); return; } @@ -636,53 +630,58 @@ void RuntimeManifestFile::CreateIfValid(const Json::Value &root_node, const std: } // Find all manifest files in the appropriate search paths/registries for the given type. -XrResult RuntimeManifestFile::FindManifestFiles(std::vector> &manifest_files) { +XrResult RuntimeManifestFile::FindManifestFiles(const std::string &openxr_command, + std::vector> &manifest_files) { XrResult result = XR_SUCCESS; std::string filename = PlatformUtilsGetSecureEnv(OPENXR_RUNTIME_JSON_ENV_VAR); if (!filename.empty()) { LoaderLogger::LogInfoMessage( - "", "RuntimeManifestFile::FindManifestFiles - using environment variable override runtime file " + filename); + openxr_command, + "RuntimeManifestFile::FindManifestFiles - using environment variable override runtime file " + filename); } else { #ifdef XR_OS_WINDOWS std::vector filenames; ReadRuntimeDataFilesInRegistry("", "ActiveRuntime", filenames); if (filenames.size() == 0) { LoaderLogger::LogErrorMessage( - "", "RuntimeManifestFile::FindManifestFiles - failed to find active runtime file in registry"); + openxr_command, "RuntimeManifestFile::FindManifestFiles - failed to find active runtime file in registry"); return XR_ERROR_RUNTIME_UNAVAILABLE; } if (filenames.size() > 1) { LoaderLogger::LogWarningMessage( - "", "RuntimeManifestFile::FindManifestFiles - found too many default runtime files in registry"); + openxr_command, "RuntimeManifestFile::FindManifestFiles - found too many default runtime files in registry"); } filename = filenames[0]; - LoaderLogger::LogInfoMessage("", + LoaderLogger::LogInfoMessage(openxr_command, "RuntimeManifestFile::FindManifestFiles - using registry-specified runtime file " + filename); #elif defined(XR_OS_LINUX) if (!FindXDGConfigFile("openxr/", XR_VERSION_MAJOR(XR_CURRENT_API_VERSION), filename)) { LoaderLogger::LogErrorMessage( - "", "RuntimeManifestFile::FindManifestFiles - failed to determine active runtime file path for this environment"); + openxr_command, + "RuntimeManifestFile::FindManifestFiles - failed to determine active runtime file path for this environment"); return XR_ERROR_RUNTIME_UNAVAILABLE; } -#else +#else // !defined(XR_OS_WINDOWS) && !defined(XR_OS_LINUX) -#if defined(XR_USE_PLATFORM_ANDROID) +#if defined(XR_KHR_LOADER_INIT_SUPPORT) && defined(XR_USE_PLATFORM_ANDROID) Json::Value virtualManifest; result = GetPlatformRuntimeVirtualManifest(virtualManifest); if (XR_SUCCESS == result) { RuntimeManifestFile::CreateIfValid(virtualManifest, "", manifest_files); return result; } -#endif // defined(XR_USE_PLATFORM_ANDROID) +#endif // defined(XR_USE_PLATFORM_ANDROID) && defined(XR_KHR_LOADER_INIT_SUPPORT) if (!PlatformGetGlobalRuntimeFileName(XR_VERSION_MAJOR(XR_CURRENT_API_VERSION), filename)) { LoaderLogger::LogErrorMessage( - "", "RuntimeManifestFile::FindManifestFiles - failed to determine active runtime file path for this environment"); + openxr_command, + "RuntimeManifestFile::FindManifestFiles - failed to determine active runtime file path for this environment"); return XR_ERROR_RUNTIME_UNAVAILABLE; } result = XR_SUCCESS; - LoaderLogger::LogInfoMessage("", "RuntimeManifestFile::FindManifestFiles - using global runtime file " + filename); -#endif + LoaderLogger::LogInfoMessage(openxr_command, + "RuntimeManifestFile::FindManifestFiles - using global runtime file " + filename); +#endif // !defined(XR_OS_WINDOWS) && !defined(XR_OS_LINUX) } RuntimeManifestFile::CreateIfValid(filename, manifest_files); @@ -698,9 +697,17 @@ ApiLayerManifestFile::ApiLayerManifestFile(ManifestFileType type, const std::str _description(description), _implementation_version(implementation_version) {} -#ifdef XR_USE_PLATFORM_ANDROID -void ApiLayerManifestFile::AddManifestFilesAndroid(ManifestFileType type, +#if defined(XR_KHR_LOADER_INIT_SUPPORT) && defined(XR_USE_PLATFORM_ANDROID) +void ApiLayerManifestFile::AddManifestFilesAndroid(const std::string &openxr_command, ManifestFileType type, std::vector> &manifest_files) { + if (!LoaderInitData::instance().initialized()) { + // This will happen for applications that do not call xrInitializeLoaderKHR + LoaderLogger::LogWarningMessage( + openxr_command, + "ApiLayerManifestFile::AddManifestFilesAndroid unable to add manifest files LoaderInitData not initialized."); + return; + } + AAssetManager *assetManager = (AAssetManager *)Android_Get_Asset_Manager(); std::vector filenames; { @@ -736,7 +743,7 @@ void ApiLayerManifestFile::AddManifestFilesAndroid(ManifestFileType type, UniqueAsset asset{AAssetManager_open(assetManager, filename.c_str(), AASSET_MODE_BUFFER)}; if (!asset) { LoaderLogger::LogWarningMessage( - "", "ApiLayerManifestFile::AddManifestFilesAndroid unable to open asset " + filename + ", skipping"); + openxr_command, "ApiLayerManifestFile::AddManifestFilesAndroid unable to open asset " + filename + ", skipping"); continue; } @@ -744,7 +751,7 @@ void ApiLayerManifestFile::AddManifestFilesAndroid(ManifestFileType type, const char *buf = reinterpret_cast(AAsset_getBuffer(asset.get())); if (!buf) { LoaderLogger::LogWarningMessage( - "", "ApiLayerManifestFile::AddManifestFilesAndroid unable to access asset" + filename + ", skipping"); + openxr_command, "ApiLayerManifestFile::AddManifestFilesAndroid unable to access asset" + filename + ", skipping"); continue; } @@ -754,7 +761,7 @@ void ApiLayerManifestFile::AddManifestFilesAndroid(ManifestFileType type, &ApiLayerManifestFile::LocateLibraryInAssets, manifest_files); } } -#endif // XR_USE_PLATFORM_ANDROID +#endif // defined(XR_USE_PLATFORM_ANDROID) && defined(XR_KHR_LOADER_INIT_SUPPORT) void ApiLayerManifestFile::CreateIfValid(ManifestFileType type, const std::string &filename, std::istream &json_stream, LibraryLocator locate_library, @@ -898,7 +905,7 @@ bool ApiLayerManifestFile::LocateLibraryRelativeToJson( return true; } -#ifdef XR_USE_PLATFORM_ANDROID +#if defined(XR_KHR_LOADER_INIT_SUPPORT) && defined(XR_USE_PLATFORM_ANDROID) bool ApiLayerManifestFile::LocateLibraryInAssets(const std::string & /* json_filename */, const std::string &library_path, std::string &out_combined_path) { std::string combined_path; @@ -910,7 +917,7 @@ bool ApiLayerManifestFile::LocateLibraryInAssets(const std::string & /* json_fil out_combined_path = combined_path; return true; } -#endif +#endif // defined(XR_USE_PLATFORM_ANDROID) && defined(XR_KHR_LOADER_INIT_SUPPORT) void ApiLayerManifestFile::PopulateApiLayerProperties(XrApiLayerProperties &props) const { props.layerVersion = _implementation_version; @@ -926,7 +933,7 @@ void ApiLayerManifestFile::PopulateApiLayerProperties(XrApiLayerProperties &prop } // Find all layer manifest files in the appropriate search paths/registries for the given type. -XrResult ApiLayerManifestFile::FindManifestFiles(ManifestFileType type, +XrResult ApiLayerManifestFile::FindManifestFiles(const std::string &openxr_command, ManifestFileType type, std::vector> &manifest_files) { std::string relative_path; std::string override_env_var; @@ -953,7 +960,8 @@ XrResult ApiLayerManifestFile::FindManifestFiles(ManifestFileType type, #endif break; default: - LoaderLogger::LogErrorMessage("", "ApiLayerManifestFile::FindManifestFiles - unknown manifest file requested"); + LoaderLogger::LogErrorMessage(openxr_command, + "ApiLayerManifestFile::FindManifestFiles - unknown manifest file requested"); return XR_ERROR_FILE_ACCESS_ERROR; } @@ -972,9 +980,9 @@ XrResult ApiLayerManifestFile::FindManifestFiles(ManifestFileType type, ApiLayerManifestFile::CreateIfValid(type, cur_file, manifest_files); } -#ifdef XR_USE_PLATFORM_ANDROID - ApiLayerManifestFile::AddManifestFilesAndroid(type, manifest_files); -#endif // XR_USE_PLATFORM_ANDROID +#if defined(XR_KHR_LOADER_INIT_SUPPORT) && defined(XR_USE_PLATFORM_ANDROID) + ApiLayerManifestFile::AddManifestFilesAndroid(openxr_command, type, manifest_files); +#endif // defined(XR_USE_PLATFORM_ANDROID) && defined(XR_KHR_LOADER_INIT_SUPPORT) return XR_SUCCESS; } diff --git a/thirdparty/openxr/src/loader/manifest_file.hpp b/thirdparty/openxr/src/loader/manifest_file.hpp index 52fe3134b0c..801614ad1ee 100644 --- a/thirdparty/openxr/src/loader/manifest_file.hpp +++ b/thirdparty/openxr/src/loader/manifest_file.hpp @@ -71,7 +71,8 @@ class ManifestFile { class RuntimeManifestFile : public ManifestFile { public: // Factory method - static XrResult FindManifestFiles(std::vector> &manifest_files); + static XrResult FindManifestFiles(const std::string &openxr_command, + std::vector> &manifest_files); private: RuntimeManifestFile(const std::string &filename, const std::string &library_path); @@ -87,7 +88,8 @@ using LibraryLocator = bool (*)(const std::string &json_filename, const std::str class ApiLayerManifestFile : public ManifestFile { public: // Factory method - static XrResult FindManifestFiles(ManifestFileType type, std::vector> &manifest_files); + static XrResult FindManifestFiles(const std::string &openxr_command, ManifestFileType type, + std::vector> &manifest_files); const std::string &LayerName() const { return _layer_name; } void PopulateApiLayerProperties(XrApiLayerProperties &props) const; @@ -104,11 +106,13 @@ class ApiLayerManifestFile : public ManifestFile { /// @return false if we could not find the library. static bool LocateLibraryRelativeToJson(const std::string &json_filename, const std::string &library_path, std::string &out_combined_path); -#ifdef XR_USE_PLATFORM_ANDROID + +#if defined(XR_KHR_LOADER_INIT_SUPPORT) && defined(XR_USE_PLATFORM_ANDROID) static bool LocateLibraryInAssets(const std::string &json_filename, const std::string &library_path, std::string &out_combined_path); - static void AddManifestFilesAndroid(ManifestFileType type, std::vector> &manifest_files); -#endif + static void AddManifestFilesAndroid(const std::string &openxr_command, ManifestFileType type, + std::vector> &manifest_files); +#endif // defined(XR_USE_PLATFORM_ANDROID) && defined(XR_KHR_LOADER_INIT_SUPPORT) JsonVersion _api_version; std::string _layer_name; diff --git a/thirdparty/openxr/src/loader/runtime_interface.cpp b/thirdparty/openxr/src/loader/runtime_interface.cpp index 7812aca987a..a0296c738cc 100644 --- a/thirdparty/openxr/src/loader/runtime_interface.cpp +++ b/thirdparty/openxr/src/loader/runtime_interface.cpp @@ -34,7 +34,7 @@ #include #endif // XR_USE_PLATFORM_ANDROID -#ifdef XR_USE_PLATFORM_ANDROID +#if defined(XR_KHR_LOADER_INIT_SUPPORT) && defined(XR_USE_PLATFORM_ANDROID) XrResult GetPlatformRuntimeVirtualManifest(Json::Value& out_manifest) { using wrap::android::content::Context; auto& initData = LoaderInitData::instance(); @@ -52,7 +52,7 @@ XrResult GetPlatformRuntimeVirtualManifest(Json::Value& out_manifest) { out_manifest = virtualManifest; return XR_SUCCESS; } -#endif // XR_USE_PLATFORM_ANDROID +#endif // defined(XR_USE_PLATFORM_ANDROID) && defined(XR_KHR_LOADER_INIT_SUPPORT) XrResult RuntimeInterface::TryLoadingSingleRuntime(const std::string& openxr_command, std::unique_ptr& manifest_file) { @@ -227,7 +227,6 @@ XrResult RuntimeInterface::LoadRuntime(const std::string& openxr_command) { return XR_SUCCESS; } #ifdef XR_KHR_LOADER_INIT_SUPPORT - if (!LoaderInitData::instance().initialized()) { LoaderLogger::LogErrorMessage( openxr_command, "RuntimeInterface::LoadRuntime cannot run because xrInitializeLoaderKHR was not successfully called."); @@ -238,7 +237,7 @@ XrResult RuntimeInterface::LoadRuntime(const std::string& openxr_command) { std::vector> runtime_manifest_files = {}; // Find the available runtimes which we may need to report information for. - XrResult last_error = RuntimeManifestFile::FindManifestFiles(runtime_manifest_files); + XrResult last_error = RuntimeManifestFile::FindManifestFiles(openxr_command, runtime_manifest_files); if (XR_FAILED(last_error)) { LoaderLogger::LogErrorMessage(openxr_command, "RuntimeInterface::LoadRuntimes - unknown error"); } else {