openxr: Sync with upstream 1.0.28
(cherry picked from commit d756169881
)
This commit is contained in:
parent
c1ba321815
commit
894d4ca769
|
@ -409,7 +409,7 @@ License: Apache-2.0
|
||||||
|
|
||||||
Files: ./thirdparty/openxr/
|
Files: ./thirdparty/openxr/
|
||||||
Comment: OpenXR Loader
|
Comment: OpenXR Loader
|
||||||
Copyright: 2020-2022, The Khronos Group Inc.
|
Copyright: 2020-2023, The Khronos Group Inc.
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
|
|
||||||
Files: ./thirdparty/pcre2/
|
Files: ./thirdparty/pcre2/
|
||||||
|
|
|
@ -583,7 +583,7 @@ Patch files are provided in `oidn/patches/`.
|
||||||
## openxr
|
## openxr
|
||||||
|
|
||||||
- Upstream: https://github.com/KhronosGroup/OpenXR-SDK
|
- Upstream: https://github.com/KhronosGroup/OpenXR-SDK
|
||||||
- Version: 1.0.26 (e2da9ce83a4388c9622da328bf48548471261290, 2022)
|
- Version: 1.0.28 (f5beb0131f1bea8701ace744d1b50df9049bf331, 2023)
|
||||||
- License: Apache 2.0
|
- License: Apache 2.0
|
||||||
|
|
||||||
Files extracted from upstream source:
|
Files extracted from upstream source:
|
||||||
|
@ -601,7 +601,8 @@ Exclude:
|
||||||
- src/external/android-jni-wrappers and src/external/jnipp (not used yet)
|
- src/external/android-jni-wrappers and src/external/jnipp (not used yet)
|
||||||
- All CMake stuff: cmake/, CMakeLists.txt and *.cmake
|
- All CMake stuff: cmake/, CMakeLists.txt and *.cmake
|
||||||
- All Gradle stuff: *gradle*, AndroidManifest.xml
|
- All Gradle stuff: *gradle*, AndroidManifest.xml
|
||||||
- All following files (and their .license files): *.{def,in,json,map,pom,rc}
|
- All following files (and their .license files): *.{def,expsym,in,json,map,pom,rc,txt}
|
||||||
|
- All dotfiles
|
||||||
|
|
||||||
|
|
||||||
## pcre2
|
## pcre2
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
= COPYING.adoc for the Khronos Group OpenXR projects
|
= COPYING.adoc for the Khronos Group OpenXR projects
|
||||||
|
|
||||||
// Copyright (c) 2020-2022, The Khronos Group Inc.
|
// Copyright (c) 2020-2023, The Khronos Group Inc.
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: CC-BY-4.0
|
// SPDX-License-Identifier: CC-BY-4.0
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,7 @@
|
||||||
#define OPENXR_PLATFORM_H_ 1
|
#define OPENXR_PLATFORM_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright 2017-2022 The Khronos Group Inc.
|
** Copyright 2017-2023 The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
*/
|
*/
|
||||||
|
@ -454,9 +454,9 @@ typedef XrSwapchainImageVulkanKHR XrSwapchainImageVulkan2KHR;
|
||||||
|
|
||||||
typedef XrGraphicsRequirementsVulkanKHR XrGraphicsRequirementsVulkan2KHR;
|
typedef XrGraphicsRequirementsVulkanKHR XrGraphicsRequirementsVulkan2KHR;
|
||||||
|
|
||||||
typedef XrResult (XRAPI_PTR *PFN_xrCreateVulkanInstanceKHR)(XrInstance instance, const XrVulkanInstanceCreateInfoKHR* createInfo, VkInstance* vulkanInstance, VkResult* vulkanResult);
|
typedef XrResult (XRAPI_PTR *PFN_xrCreateVulkanInstanceKHR)(XrInstance instance, const XrVulkanInstanceCreateInfoKHR* createInfo, VkInstance* vulkanInstance, VkResult* vulkanResult);
|
||||||
typedef XrResult (XRAPI_PTR *PFN_xrCreateVulkanDeviceKHR)(XrInstance instance, const XrVulkanDeviceCreateInfoKHR* createInfo, VkDevice* vulkanDevice, VkResult* vulkanResult);
|
typedef XrResult (XRAPI_PTR *PFN_xrCreateVulkanDeviceKHR)(XrInstance instance, const XrVulkanDeviceCreateInfoKHR* createInfo, VkDevice* vulkanDevice, VkResult* vulkanResult);
|
||||||
typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsDevice2KHR)(XrInstance instance, const XrVulkanGraphicsDeviceGetInfoKHR* getInfo, VkPhysicalDevice* vulkanPhysicalDevice);
|
typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsDevice2KHR)(XrInstance instance, const XrVulkanGraphicsDeviceGetInfoKHR* getInfo, VkPhysicalDevice* vulkanPhysicalDevice);
|
||||||
typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsRequirements2KHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsVulkanKHR* graphicsRequirements);
|
typedef XrResult (XRAPI_PTR *PFN_xrGetVulkanGraphicsRequirements2KHR)(XrInstance instance, XrSystemId systemId, XrGraphicsRequirementsVulkanKHR* graphicsRequirements);
|
||||||
|
|
||||||
#ifndef XR_NO_PROTOTYPES
|
#ifndef XR_NO_PROTOTYPES
|
||||||
|
@ -565,6 +565,30 @@ typedef struct XrAndroidSurfaceSwapchainCreateInfoFB {
|
||||||
|
|
||||||
#endif /* XR_USE_PLATFORM_ANDROID */
|
#endif /* XR_USE_PLATFORM_ANDROID */
|
||||||
|
|
||||||
|
#ifdef XR_USE_PLATFORM_ML
|
||||||
|
|
||||||
|
#define XR_ML_compat 1
|
||||||
|
#define XR_ML_compat_SPEC_VERSION 1
|
||||||
|
#define XR_ML_COMPAT_EXTENSION_NAME "XR_ML_compat"
|
||||||
|
typedef struct XrCoordinateSpaceCreateInfoML {
|
||||||
|
XrStructureType type;
|
||||||
|
const void* XR_MAY_ALIAS next;
|
||||||
|
MLCoordinateFrameUID cfuid;
|
||||||
|
XrPosef poseInCoordinateSpace;
|
||||||
|
} XrCoordinateSpaceCreateInfoML;
|
||||||
|
|
||||||
|
typedef XrResult (XRAPI_PTR *PFN_xrCreateSpaceFromCoordinateFrameUIDML)(XrSession session, const XrCoordinateSpaceCreateInfoML *createInfo, XrSpace* space);
|
||||||
|
|
||||||
|
#ifndef XR_NO_PROTOTYPES
|
||||||
|
#ifdef XR_EXTENSION_PROTOTYPES
|
||||||
|
XRAPI_ATTR XrResult XRAPI_CALL xrCreateSpaceFromCoordinateFrameUIDML(
|
||||||
|
XrSession session,
|
||||||
|
const XrCoordinateSpaceCreateInfoML * createInfo,
|
||||||
|
XrSpace* space);
|
||||||
|
#endif /* XR_EXTENSION_PROTOTYPES */
|
||||||
|
#endif /* !XR_NO_PROTOTYPES */
|
||||||
|
#endif /* XR_USE_PLATFORM_ML */
|
||||||
|
|
||||||
#ifdef XR_USE_PLATFORM_WIN32
|
#ifdef XR_USE_PLATFORM_WIN32
|
||||||
|
|
||||||
#define XR_OCULUS_audio_device_guid 1
|
#define XR_OCULUS_audio_device_guid 1
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2017-2022, The Khronos Group Inc.
|
** Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
*/
|
*/
|
||||||
|
@ -65,7 +65,7 @@ typedef unsigned __int64 uint64_t;
|
||||||
#endif // !defined( XR_NO_STDINT_H )
|
#endif // !defined( XR_NO_STDINT_H )
|
||||||
|
|
||||||
// XR_PTR_SIZE (in bytes)
|
// XR_PTR_SIZE (in bytes)
|
||||||
#if (defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__))
|
#if (defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined(_M_IA64) || defined(__aarch64__) || defined(__powerpc64__))
|
||||||
#define XR_PTR_SIZE 8
|
#define XR_PTR_SIZE 8
|
||||||
#else
|
#else
|
||||||
#define XR_PTR_SIZE 4
|
#define XR_PTR_SIZE 4
|
||||||
|
@ -103,6 +103,10 @@ typedef unsigned __int64 uint64_t;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(XR_CPP_NULLPTR_SUPPORTED)
|
||||||
|
#define XR_CPP_NULLPTR_SUPPORTED 0
|
||||||
|
#endif // !defined(XR_CPP_NULLPTR_SUPPORTED)
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -2,7 +2,7 @@
|
||||||
#define OPENXR_REFLECTION_PARENT_STRUCTS_H_ 1
|
#define OPENXR_REFLECTION_PARENT_STRUCTS_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2017-2022, The Khronos Group Inc.
|
** Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
*/
|
*/
|
||||||
|
@ -62,6 +62,8 @@ This file contains expansion macros (X Macros) for OpenXR structures that have a
|
||||||
_avail(XrEventDataSpaceQueryCompleteFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB) \
|
_avail(XrEventDataSpaceQueryCompleteFB, XR_TYPE_EVENT_DATA_SPACE_QUERY_COMPLETE_FB) \
|
||||||
_avail(XrEventDataSpaceSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB) \
|
_avail(XrEventDataSpaceSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB) \
|
||||||
_avail(XrEventDataSpaceEraseCompleteFB, XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB) \
|
_avail(XrEventDataSpaceEraseCompleteFB, XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB) \
|
||||||
|
_avail(XrEventDataSpaceShareCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB) \
|
||||||
|
_avail(XrEventDataSpaceListSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_LIST_SAVE_COMPLETE_FB) \
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -75,6 +77,8 @@ This file contains expansion macros (X Macros) for OpenXR structures that have a
|
||||||
// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrHapticBaseHeader()
|
// Implementation detail of XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrHapticBaseHeader()
|
||||||
#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrHapticBaseHeader_CORE(_avail, _unavail) \
|
#define _impl_XR_LIST_ALL_CHILD_STRUCTURE_TYPES_XrHapticBaseHeader_CORE(_avail, _unavail) \
|
||||||
_avail(XrHapticVibration, XR_TYPE_HAPTIC_VIBRATION) \
|
_avail(XrHapticVibration, XR_TYPE_HAPTIC_VIBRATION) \
|
||||||
|
_avail(XrHapticAmplitudeEnvelopeVibrationFB, XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB) \
|
||||||
|
_avail(XrHapticPcmVibrationFB, XR_TYPE_HAPTIC_PCM_VIBRATION_FB) \
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#define OPENXR_REFLECTION_STRUCTS_H_ 1
|
#define OPENXR_REFLECTION_STRUCTS_H_ 1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Copyright (c) 2017-2022, The Khronos Group Inc.
|
** Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
**
|
**
|
||||||
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
** SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
*/
|
*/
|
||||||
|
@ -37,6 +37,7 @@ This file contains expansion macros (X Macros) for OpenXR structures.
|
||||||
_impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \
|
_impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_GRAPHICS_API_VULKAN(_avail, _unavail) \
|
||||||
_impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \
|
_impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ANDROID(_avail, _unavail) \
|
||||||
_impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_EGL(_avail, _unavail) \
|
_impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_EGL(_avail, _unavail) \
|
||||||
|
_impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ML(_avail, _unavail) \
|
||||||
_impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_avail, _unavail) \
|
_impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_avail, _unavail) \
|
||||||
|
|
||||||
|
|
||||||
|
@ -143,6 +144,11 @@ This file contains expansion macros (X Macros) for OpenXR structures.
|
||||||
_avail(XrCompositionLayerReprojectionInfoMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_INFO_MSFT) \
|
_avail(XrCompositionLayerReprojectionInfoMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_INFO_MSFT) \
|
||||||
_avail(XrCompositionLayerReprojectionPlaneOverrideMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT) \
|
_avail(XrCompositionLayerReprojectionPlaneOverrideMSFT, XR_TYPE_COMPOSITION_LAYER_REPROJECTION_PLANE_OVERRIDE_MSFT) \
|
||||||
_avail(XrCompositionLayerSecureContentFB, XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB) \
|
_avail(XrCompositionLayerSecureContentFB, XR_TYPE_COMPOSITION_LAYER_SECURE_CONTENT_FB) \
|
||||||
|
_avail(XrSystemBodyTrackingPropertiesFB, XR_TYPE_SYSTEM_BODY_TRACKING_PROPERTIES_FB) \
|
||||||
|
_avail(XrBodyTrackerCreateInfoFB, XR_TYPE_BODY_TRACKER_CREATE_INFO_FB) \
|
||||||
|
_avail(XrBodySkeletonFB, XR_TYPE_BODY_SKELETON_FB) \
|
||||||
|
_avail(XrBodyJointsLocateInfoFB, XR_TYPE_BODY_JOINTS_LOCATE_INFO_FB) \
|
||||||
|
_avail(XrBodyJointLocationsFB, XR_TYPE_BODY_JOINT_LOCATIONS_FB) \
|
||||||
_avail(XrInteractionProfileDpadBindingEXT, XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT) \
|
_avail(XrInteractionProfileDpadBindingEXT, XR_TYPE_INTERACTION_PROFILE_DPAD_BINDING_EXT) \
|
||||||
_avail(XrInteractionProfileAnalogThresholdVALVE, XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE) \
|
_avail(XrInteractionProfileAnalogThresholdVALVE, XR_TYPE_INTERACTION_PROFILE_ANALOG_THRESHOLD_VALVE) \
|
||||||
_avail(XrHandJointsMotionRangeInfoEXT, XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT) \
|
_avail(XrHandJointsMotionRangeInfoEXT, XR_TYPE_HAND_JOINTS_MOTION_RANGE_INFO_EXT) \
|
||||||
|
@ -217,6 +223,8 @@ This file contains expansion macros (X Macros) for OpenXR structures.
|
||||||
_avail(XrSystemMarkerTrackingPropertiesVARJO, XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_VARJO) \
|
_avail(XrSystemMarkerTrackingPropertiesVARJO, XR_TYPE_SYSTEM_MARKER_TRACKING_PROPERTIES_VARJO) \
|
||||||
_avail(XrEventDataMarkerTrackingUpdateVARJO, XR_TYPE_EVENT_DATA_MARKER_TRACKING_UPDATE_VARJO) \
|
_avail(XrEventDataMarkerTrackingUpdateVARJO, XR_TYPE_EVENT_DATA_MARKER_TRACKING_UPDATE_VARJO) \
|
||||||
_avail(XrMarkerSpaceCreateInfoVARJO, XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO) \
|
_avail(XrMarkerSpaceCreateInfoVARJO, XR_TYPE_MARKER_SPACE_CREATE_INFO_VARJO) \
|
||||||
|
_avail(XrFrameEndInfoML, XR_TYPE_FRAME_END_INFO_ML) \
|
||||||
|
_avail(XrGlobalDimmerFrameEndInfoML, XR_TYPE_GLOBAL_DIMMER_FRAME_END_INFO_ML) \
|
||||||
_avail(XrSpatialAnchorPersistenceInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT) \
|
_avail(XrSpatialAnchorPersistenceInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_PERSISTENCE_INFO_MSFT) \
|
||||||
_avail(XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT) \
|
_avail(XrSpatialAnchorFromPersistedAnchorCreateInfoMSFT, XR_TYPE_SPATIAL_ANCHOR_FROM_PERSISTED_ANCHOR_CREATE_INFO_MSFT) \
|
||||||
_avail(XrSpaceQueryInfoFB, XR_TYPE_SPACE_QUERY_INFO_FB) \
|
_avail(XrSpaceQueryInfoFB, XR_TYPE_SPACE_QUERY_INFO_FB) \
|
||||||
|
@ -230,18 +238,63 @@ This file contains expansion macros (X Macros) for OpenXR structures.
|
||||||
_avail(XrSpaceEraseInfoFB, XR_TYPE_SPACE_ERASE_INFO_FB) \
|
_avail(XrSpaceEraseInfoFB, XR_TYPE_SPACE_ERASE_INFO_FB) \
|
||||||
_avail(XrEventDataSpaceSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB) \
|
_avail(XrEventDataSpaceSaveCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SAVE_COMPLETE_FB) \
|
||||||
_avail(XrEventDataSpaceEraseCompleteFB, XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB) \
|
_avail(XrEventDataSpaceEraseCompleteFB, XR_TYPE_EVENT_DATA_SPACE_ERASE_COMPLETE_FB) \
|
||||||
|
_avail(XrSpaceShareInfoFB, XR_TYPE_SPACE_SHARE_INFO_FB) \
|
||||||
|
_avail(XrEventDataSpaceShareCompleteFB, XR_TYPE_EVENT_DATA_SPACE_SHARE_COMPLETE_FB) \
|
||||||
_avail(XrCompositionLayerSpaceWarpInfoFB, XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB) \
|
_avail(XrCompositionLayerSpaceWarpInfoFB, XR_TYPE_COMPOSITION_LAYER_SPACE_WARP_INFO_FB) \
|
||||||
_avail(XrSystemSpaceWarpPropertiesFB, XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB) \
|
_avail(XrSystemSpaceWarpPropertiesFB, XR_TYPE_SYSTEM_SPACE_WARP_PROPERTIES_FB) \
|
||||||
|
_avail(XrHapticAmplitudeEnvelopeVibrationFB, XR_TYPE_HAPTIC_AMPLITUDE_ENVELOPE_VIBRATION_FB) \
|
||||||
_avail(XrSemanticLabelsFB, XR_TYPE_SEMANTIC_LABELS_FB) \
|
_avail(XrSemanticLabelsFB, XR_TYPE_SEMANTIC_LABELS_FB) \
|
||||||
_avail(XrRoomLayoutFB, XR_TYPE_ROOM_LAYOUT_FB) \
|
_avail(XrRoomLayoutFB, XR_TYPE_ROOM_LAYOUT_FB) \
|
||||||
_avail(XrBoundary2DFB, XR_TYPE_BOUNDARY_2D_FB) \
|
_avail(XrBoundary2DFB, XR_TYPE_BOUNDARY_2D_FB) \
|
||||||
|
_avail(XrSemanticLabelsSupportInfoFB, XR_TYPE_SEMANTIC_LABELS_SUPPORT_INFO_FB) \
|
||||||
_avail(XrDigitalLensControlALMALENCE, XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE) \
|
_avail(XrDigitalLensControlALMALENCE, XR_TYPE_DIGITAL_LENS_CONTROL_ALMALENCE) \
|
||||||
|
_avail(XrEventDataSceneCaptureCompleteFB, XR_TYPE_EVENT_DATA_SCENE_CAPTURE_COMPLETE_FB) \
|
||||||
|
_avail(XrSceneCaptureRequestInfoFB, XR_TYPE_SCENE_CAPTURE_REQUEST_INFO_FB) \
|
||||||
_avail(XrSpaceContainerFB, XR_TYPE_SPACE_CONTAINER_FB) \
|
_avail(XrSpaceContainerFB, XR_TYPE_SPACE_CONTAINER_FB) \
|
||||||
|
_avail(XrFoveationEyeTrackedProfileCreateInfoMETA, XR_TYPE_FOVEATION_EYE_TRACKED_PROFILE_CREATE_INFO_META) \
|
||||||
|
_avail(XrFoveationEyeTrackedStateMETA, XR_TYPE_FOVEATION_EYE_TRACKED_STATE_META) \
|
||||||
|
_avail(XrSystemFoveationEyeTrackedPropertiesMETA, XR_TYPE_SYSTEM_FOVEATION_EYE_TRACKED_PROPERTIES_META) \
|
||||||
|
_avail(XrSystemFaceTrackingPropertiesFB, XR_TYPE_SYSTEM_FACE_TRACKING_PROPERTIES_FB) \
|
||||||
|
_avail(XrFaceTrackerCreateInfoFB, XR_TYPE_FACE_TRACKER_CREATE_INFO_FB) \
|
||||||
|
_avail(XrFaceExpressionInfoFB, XR_TYPE_FACE_EXPRESSION_INFO_FB) \
|
||||||
|
_avail(XrFaceExpressionWeightsFB, XR_TYPE_FACE_EXPRESSION_WEIGHTS_FB) \
|
||||||
|
_avail(XrEyeTrackerCreateInfoFB, XR_TYPE_EYE_TRACKER_CREATE_INFO_FB) \
|
||||||
|
_avail(XrEyeGazesInfoFB, XR_TYPE_EYE_GAZES_INFO_FB) \
|
||||||
|
_avail(XrSystemEyeTrackingPropertiesFB, XR_TYPE_SYSTEM_EYE_TRACKING_PROPERTIES_FB) \
|
||||||
|
_avail(XrEyeGazesFB, XR_TYPE_EYE_GAZES_FB) \
|
||||||
_avail(XrPassthroughKeyboardHandsIntensityFB, XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB) \
|
_avail(XrPassthroughKeyboardHandsIntensityFB, XR_TYPE_PASSTHROUGH_KEYBOARD_HANDS_INTENSITY_FB) \
|
||||||
_avail(XrCompositionLayerSettingsFB, XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB) \
|
_avail(XrCompositionLayerSettingsFB, XR_TYPE_COMPOSITION_LAYER_SETTINGS_FB) \
|
||||||
|
_avail(XrHapticPcmVibrationFB, XR_TYPE_HAPTIC_PCM_VIBRATION_FB) \
|
||||||
|
_avail(XrDevicePcmSampleRateStateFB, XR_TYPE_DEVICE_PCM_SAMPLE_RATE_STATE_FB) \
|
||||||
|
_avail(XrCompositionLayerDepthTestFB, XR_TYPE_COMPOSITION_LAYER_DEPTH_TEST_FB) \
|
||||||
|
_avail(XrLocalDimmingFrameEndInfoMETA, XR_TYPE_LOCAL_DIMMING_FRAME_END_INFO_META) \
|
||||||
|
_avail(XrSystemVirtualKeyboardPropertiesMETA, XR_TYPE_SYSTEM_VIRTUAL_KEYBOARD_PROPERTIES_META) \
|
||||||
|
_avail(XrVirtualKeyboardCreateInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_CREATE_INFO_META) \
|
||||||
|
_avail(XrVirtualKeyboardSpaceCreateInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_SPACE_CREATE_INFO_META) \
|
||||||
|
_avail(XrVirtualKeyboardLocationInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_LOCATION_INFO_META) \
|
||||||
|
_avail(XrVirtualKeyboardModelVisibilitySetInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_MODEL_VISIBILITY_SET_INFO_META) \
|
||||||
|
_avail(XrVirtualKeyboardAnimationStateMETA, XR_TYPE_VIRTUAL_KEYBOARD_ANIMATION_STATE_META) \
|
||||||
|
_avail(XrVirtualKeyboardModelAnimationStatesMETA, XR_TYPE_VIRTUAL_KEYBOARD_MODEL_ANIMATION_STATES_META) \
|
||||||
|
_avail(XrVirtualKeyboardTextureDataMETA, XR_TYPE_VIRTUAL_KEYBOARD_TEXTURE_DATA_META) \
|
||||||
|
_avail(XrVirtualKeyboardInputInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_INPUT_INFO_META) \
|
||||||
|
_avail(XrVirtualKeyboardTextContextChangeInfoMETA, XR_TYPE_VIRTUAL_KEYBOARD_TEXT_CONTEXT_CHANGE_INFO_META) \
|
||||||
|
_avail(XrEventDataVirtualKeyboardCommitTextMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_COMMIT_TEXT_META) \
|
||||||
|
_avail(XrEventDataVirtualKeyboardBackspaceMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_BACKSPACE_META) \
|
||||||
|
_avail(XrEventDataVirtualKeyboardEnterMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_ENTER_META) \
|
||||||
|
_avail(XrEventDataVirtualKeyboardShownMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_SHOWN_META) \
|
||||||
|
_avail(XrEventDataVirtualKeyboardHiddenMETA, XR_TYPE_EVENT_DATA_VIRTUAL_KEYBOARD_HIDDEN_META) \
|
||||||
|
_avail(XrExternalCameraOCULUS, XR_TYPE_EXTERNAL_CAMERA_OCULUS) \
|
||||||
_avail(XrPerformanceMetricsStateMETA, XR_TYPE_PERFORMANCE_METRICS_STATE_META) \
|
_avail(XrPerformanceMetricsStateMETA, XR_TYPE_PERFORMANCE_METRICS_STATE_META) \
|
||||||
_avail(XrPerformanceMetricsCounterMETA, XR_TYPE_PERFORMANCE_METRICS_COUNTER_META) \
|
_avail(XrPerformanceMetricsCounterMETA, XR_TYPE_PERFORMANCE_METRICS_COUNTER_META) \
|
||||||
|
_avail(XrSpaceListSaveInfoFB, XR_TYPE_SPACE_LIST_SAVE_INFO_FB) \
|
||||||
|
_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(XrSystemHeadsetIdPropertiesMETA, XR_TYPE_SYSTEM_HEADSET_ID_PROPERTIES_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(XrPassthroughCreateInfoHTC, XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC) \
|
_avail(XrPassthroughCreateInfoHTC, XR_TYPE_PASSTHROUGH_CREATE_INFO_HTC) \
|
||||||
_avail(XrPassthroughColorHTC, XR_TYPE_PASSTHROUGH_COLOR_HTC) \
|
_avail(XrPassthroughColorHTC, XR_TYPE_PASSTHROUGH_COLOR_HTC) \
|
||||||
_avail(XrPassthroughMeshTransformInfoHTC, XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC) \
|
_avail(XrPassthroughMeshTransformInfoHTC, XR_TYPE_PASSTHROUGH_MESH_TRANSFORM_INFO_HTC) \
|
||||||
|
@ -250,6 +303,17 @@ This file contains expansion macros (X Macros) for OpenXR structures.
|
||||||
_avail(XrFoveationDynamicModeInfoHTC, XR_TYPE_FOVEATION_DYNAMIC_MODE_INFO_HTC) \
|
_avail(XrFoveationDynamicModeInfoHTC, XR_TYPE_FOVEATION_DYNAMIC_MODE_INFO_HTC) \
|
||||||
_avail(XrFoveationCustomModeInfoHTC, XR_TYPE_FOVEATION_CUSTOM_MODE_INFO_HTC) \
|
_avail(XrFoveationCustomModeInfoHTC, XR_TYPE_FOVEATION_CUSTOM_MODE_INFO_HTC) \
|
||||||
_avail(XrActiveActionSetPrioritiesEXT, XR_TYPE_ACTIVE_ACTION_SET_PRIORITIES_EXT) \
|
_avail(XrActiveActionSetPrioritiesEXT, XR_TYPE_ACTIVE_ACTION_SET_PRIORITIES_EXT) \
|
||||||
|
_avail(XrSystemForceFeedbackCurlPropertiesMNDX, XR_TYPE_SYSTEM_FORCE_FEEDBACK_CURL_PROPERTIES_MNDX) \
|
||||||
|
_avail(XrForceFeedbackCurlApplyLocationsMNDX, XR_TYPE_FORCE_FEEDBACK_CURL_APPLY_LOCATIONS_MNDX) \
|
||||||
|
_avail(XrHandTrackingDataSourceInfoEXT, XR_TYPE_HAND_TRACKING_DATA_SOURCE_INFO_EXT) \
|
||||||
|
_avail(XrHandTrackingDataSourceStateEXT, XR_TYPE_HAND_TRACKING_DATA_SOURCE_STATE_EXT) \
|
||||||
|
_avail(XrSystemPlaneDetectionPropertiesEXT, XR_TYPE_SYSTEM_PLANE_DETECTION_PROPERTIES_EXT) \
|
||||||
|
_avail(XrPlaneDetectorCreateInfoEXT, XR_TYPE_PLANE_DETECTOR_CREATE_INFO_EXT) \
|
||||||
|
_avail(XrPlaneDetectorBeginInfoEXT, XR_TYPE_PLANE_DETECTOR_BEGIN_INFO_EXT) \
|
||||||
|
_avail(XrPlaneDetectorGetInfoEXT, XR_TYPE_PLANE_DETECTOR_GET_INFO_EXT) \
|
||||||
|
_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) \
|
||||||
|
|
||||||
|
|
||||||
#if defined(XR_USE_GRAPHICS_API_D3D11)
|
#if defined(XR_USE_GRAPHICS_API_D3D11)
|
||||||
|
@ -410,6 +474,16 @@ This file contains expansion macros (X Macros) for OpenXR structures.
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(XR_USE_PLATFORM_ML)
|
||||||
|
#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ML(_avail, _unavail) \
|
||||||
|
_avail(XrCoordinateSpaceCreateInfoML, XR_TYPE_COORDINATE_SPACE_CREATE_INFO_ML) \
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_ML(_avail, _unavail) \
|
||||||
|
_unavail(XrCoordinateSpaceCreateInfoML, XR_TYPE_COORDINATE_SPACE_CREATE_INFO_ML) \
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(XR_USE_PLATFORM_WIN32)
|
#if defined(XR_USE_PLATFORM_WIN32)
|
||||||
#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_avail, _unavail) \
|
#define _impl_XR_LIST_ALL_STRUCTURE_TYPES_XR_USE_PLATFORM_WIN32(_avail, _unavail) \
|
||||||
_avail(XrHolographicWindowAttachmentMSFT, XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT) \
|
_avail(XrHolographicWindowAttachmentMSFT, XR_TYPE_HOLOGRAPHIC_WINDOW_ATTACHMENT_MSFT) \
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff --git a/thirdparty/openxr/src/common/platform_utils.hpp b/thirdparty/openxr/src/common/platform_utils.hpp
|
|
||||||
index 85d5cdab10..2d870cfea7 100644
|
|
||||||
--- a/thirdparty/openxr/src/common/platform_utils.hpp
|
|
||||||
+++ b/thirdparty/openxr/src/common/platform_utils.hpp
|
|
||||||
@@ -11,6 +11,7 @@
|
|
||||||
|
|
||||||
#include "xr_dependencies.h"
|
|
||||||
#include <string>
|
|
||||||
+#include <stdint.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
// OpenXR paths and registry key locations
|
|
|
@ -1,10 +0,0 @@
|
||||||
---
|
|
||||||
# Copyright (c) 2017-2022, The Khronos Group Inc.
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
|
||||||
# Use defaults from the Google style with the following exceptions:
|
|
||||||
BasedOnStyle: Google
|
|
||||||
IndentWidth: 4
|
|
||||||
ColumnLimit: 132
|
|
||||||
SortIncludes: false
|
|
||||||
...
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
// Copyright (c) 2019 Collabora, Ltd.
|
// Copyright (c) 2019 Collabora, Ltd.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017 The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017 Valve Corporation
|
// Copyright (c) 2017 Valve Corporation
|
||||||
// Copyright (c) 2017 LunarG, Inc.
|
// Copyright (c) 2017 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017 The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017 Valve Corporation
|
// Copyright (c) 2017 Valve Corporation
|
||||||
// Copyright (c) 2017 LunarG, Inc.
|
// Copyright (c) 2017 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
// Copyright (c) 2019 Collabora, Ltd.
|
// Copyright (c) 2019 Collabora, Ltd.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017 Valve Corporation
|
// Copyright (c) 2017 Valve Corporation
|
||||||
// Copyright (c) 2017 LunarG, Inc.
|
// Copyright (c) 2017 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
// Copyright (c) 2019 Collabora, Ltd.
|
// Copyright (c) 2019 Collabora, Ltd.
|
||||||
|
@ -132,6 +132,8 @@ XrSdkSessionLabel::XrSdkSessionLabel(const XrDebugUtilsLabelEXT& label_info, boo
|
||||||
: label_name(label_info.labelName), debug_utils_label(label_info), is_individual_label(individual) {
|
: label_name(label_info.labelName), debug_utils_label(label_info), is_individual_label(individual) {
|
||||||
// Update the c string pointer to the one we hold.
|
// Update the c string pointer to the one we hold.
|
||||||
debug_utils_label.labelName = label_name.c_str();
|
debug_utils_label.labelName = label_name.c_str();
|
||||||
|
// Zero out the next pointer to avoid a dangling pointer
|
||||||
|
debug_utils_label.next = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
XrSdkSessionLabelPtr XrSdkSessionLabel::make(const XrDebugUtilsLabelEXT& label_info, bool individual) {
|
XrSdkSessionLabelPtr XrSdkSessionLabel::make(const XrDebugUtilsLabelEXT& label_info, bool individual) {
|
||||||
|
@ -143,7 +145,7 @@ void DebugUtilsData::AddObjectName(uint64_t object_handle, XrObjectType object_t
|
||||||
}
|
}
|
||||||
|
|
||||||
// We always want to remove the old individual label before we do anything else.
|
// We always want to remove the old individual label before we do anything else.
|
||||||
// So, do that in it's own method
|
// So, do that in its own method
|
||||||
void DebugUtilsData::RemoveIndividualLabel(XrSdkSessionLabelList& label_vec) {
|
void DebugUtilsData::RemoveIndividualLabel(XrSdkSessionLabelList& label_vec) {
|
||||||
if (!label_vec.empty() && label_vec.back()->is_individual_label) {
|
if (!label_vec.empty() && label_vec.back()->is_individual_label) {
|
||||||
label_vec.pop_back();
|
label_vec.pop_back();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
// Copyright (c) 2019 Collabora, Ltd.
|
// Copyright (c) 2019 Collabora, Ltd.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
@ -37,6 +37,10 @@
|
||||||
#include "common_config.h"
|
#include "common_config.h"
|
||||||
#endif // OPENXR_HAVE_COMMON_CONFIG
|
#endif // OPENXR_HAVE_COMMON_CONFIG
|
||||||
|
|
||||||
|
// Consumers of this file must ensure this function is implemented. For example, the loader will implement this function so that it
|
||||||
|
// can route messages through the loader's logging system.
|
||||||
|
void LogPlatformUtilsError(const std::string& message);
|
||||||
|
|
||||||
// Environment variables
|
// Environment variables
|
||||||
#if defined(XR_OS_LINUX) || defined(XR_OS_APPLE)
|
#if defined(XR_OS_LINUX) || defined(XR_OS_APPLE)
|
||||||
|
|
||||||
|
@ -56,9 +60,11 @@ static inline char* ImplGetSecureEnv(const char* name) {
|
||||||
#elif defined(HAVE___SECURE_GETENV)
|
#elif defined(HAVE___SECURE_GETENV)
|
||||||
return __secure_getenv(name);
|
return __secure_getenv(name);
|
||||||
#else
|
#else
|
||||||
|
// clang-format off
|
||||||
#pragma message( \
|
#pragma message( \
|
||||||
"Warning: Falling back to non-secure getenv for environmental" \
|
"Warning: Falling back to non-secure getenv for environmental" \
|
||||||
"lookups! Consider updating to a different libc.")
|
"lookups! Consider updating to a different libc.")
|
||||||
|
// clang-format on
|
||||||
|
|
||||||
return ImplGetEnv(name);
|
return ImplGetEnv(name);
|
||||||
#endif
|
#endif
|
||||||
|
@ -79,6 +85,12 @@ static inline std::string PlatformUtilsGetEnv(const char* name) {
|
||||||
static inline std::string PlatformUtilsGetSecureEnv(const char* name) {
|
static inline std::string PlatformUtilsGetSecureEnv(const char* name) {
|
||||||
auto str = detail::ImplGetSecureEnv(name);
|
auto str = detail::ImplGetSecureEnv(name);
|
||||||
if (str == nullptr) {
|
if (str == nullptr) {
|
||||||
|
str = detail::ImplGetEnv(name);
|
||||||
|
if (str != nullptr && !std::string(str).empty()) {
|
||||||
|
LogPlatformUtilsError(std::string("!!! WARNING !!! Environment variable ") + name +
|
||||||
|
" is being ignored due to running with secure execution. The value '" + str +
|
||||||
|
"' will NOT be used.");
|
||||||
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
|
@ -131,12 +143,6 @@ static inline bool PlatformGetGlobalRuntimeFileName(uint16_t major_version, std:
|
||||||
|
|
||||||
#elif defined(XR_OS_WINDOWS)
|
#elif defined(XR_OS_WINDOWS)
|
||||||
|
|
||||||
#if !defined(NDEBUG)
|
|
||||||
inline void LogError(const std::string& error) { OutputDebugStringA(error.c_str()); }
|
|
||||||
#else
|
|
||||||
#define LogError(x)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline std::wstring utf8_to_wide(const std::string& utf8Text) {
|
inline std::wstring utf8_to_wide(const std::string& utf8Text) {
|
||||||
if (utf8Text.empty()) {
|
if (utf8Text.empty()) {
|
||||||
return {};
|
return {};
|
||||||
|
@ -145,7 +151,7 @@ inline std::wstring utf8_to_wide(const std::string& utf8Text) {
|
||||||
std::wstring wideText;
|
std::wstring wideText;
|
||||||
const int wideLength = ::MultiByteToWideChar(CP_UTF8, 0, utf8Text.data(), (int)utf8Text.size(), nullptr, 0);
|
const int wideLength = ::MultiByteToWideChar(CP_UTF8, 0, utf8Text.data(), (int)utf8Text.size(), nullptr, 0);
|
||||||
if (wideLength == 0) {
|
if (wideLength == 0) {
|
||||||
LogError("utf8_to_wide get size error: " + std::to_string(::GetLastError()));
|
LogPlatformUtilsError("utf8_to_wide get size error: " + std::to_string(::GetLastError()));
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,7 +160,7 @@ inline std::wstring utf8_to_wide(const std::string& utf8Text) {
|
||||||
wchar_t* wideString = const_cast<wchar_t*>(wideText.data()); // mutable data() only exists in c++17
|
wchar_t* wideString = const_cast<wchar_t*>(wideText.data()); // mutable data() only exists in c++17
|
||||||
const int length = ::MultiByteToWideChar(CP_UTF8, 0, utf8Text.data(), (int)utf8Text.size(), wideString, wideLength);
|
const int length = ::MultiByteToWideChar(CP_UTF8, 0, utf8Text.data(), (int)utf8Text.size(), wideString, wideLength);
|
||||||
if (length != wideLength) {
|
if (length != wideLength) {
|
||||||
LogError("utf8_to_wide convert string error: " + std::to_string(::GetLastError()));
|
LogPlatformUtilsError("utf8_to_wide convert string error: " + std::to_string(::GetLastError()));
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,7 +175,7 @@ inline std::string wide_to_utf8(const std::wstring& wideText) {
|
||||||
std::string narrowText;
|
std::string narrowText;
|
||||||
int narrowLength = ::WideCharToMultiByte(CP_UTF8, 0, wideText.data(), (int)wideText.size(), nullptr, 0, nullptr, nullptr);
|
int narrowLength = ::WideCharToMultiByte(CP_UTF8, 0, wideText.data(), (int)wideText.size(), nullptr, 0, nullptr, nullptr);
|
||||||
if (narrowLength == 0) {
|
if (narrowLength == 0) {
|
||||||
LogError("wide_to_utf8 get size error: " + std::to_string(::GetLastError()));
|
LogPlatformUtilsError("wide_to_utf8 get size error: " + std::to_string(::GetLastError()));
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,7 +185,7 @@ inline std::string wide_to_utf8(const std::wstring& wideText) {
|
||||||
const int length =
|
const int length =
|
||||||
::WideCharToMultiByte(CP_UTF8, 0, wideText.data(), (int)wideText.size(), narrowString, narrowLength, nullptr, nullptr);
|
::WideCharToMultiByte(CP_UTF8, 0, wideText.data(), (int)wideText.size(), narrowString, narrowLength, nullptr, nullptr);
|
||||||
if (length != narrowLength) {
|
if (length != narrowLength) {
|
||||||
LogError("wide_to_utf8 convert string error: " + std::to_string(::GetLastError()));
|
LogPlatformUtilsError("wide_to_utf8 convert string error: " + std::to_string(::GetLastError()));
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +251,7 @@ static inline std::string PlatformUtilsGetEnv(const char* name) {
|
||||||
// call if there was enough capacity. Else it returns the required capacity (including null terminator).
|
// call if there was enough capacity. Else it returns the required capacity (including null terminator).
|
||||||
const DWORD length = ::GetEnvironmentVariableW(wname.c_str(), wValueData, (DWORD)wValue.size());
|
const DWORD length = ::GetEnvironmentVariableW(wname.c_str(), wValueData, (DWORD)wValue.size());
|
||||||
if ((length == 0) || (length >= wValue.size())) { // If error or the variable increased length between calls...
|
if ((length == 0) || (length >= wValue.size())) { // If error or the variable increased length between calls...
|
||||||
LogError("GetEnvironmentVariable get value error: " + std::to_string(::GetLastError()));
|
LogPlatformUtilsError("GetEnvironmentVariable get value error: " + std::to_string(::GetLastError()));
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,13 +262,20 @@ static inline std::string PlatformUtilsGetEnv(const char* name) {
|
||||||
|
|
||||||
// Acts the same as PlatformUtilsGetEnv except returns an empty string if IsHighIntegrityLevel.
|
// Acts the same as PlatformUtilsGetEnv except returns an empty string if IsHighIntegrityLevel.
|
||||||
static inline std::string PlatformUtilsGetSecureEnv(const char* name) {
|
static inline std::string PlatformUtilsGetSecureEnv(const char* name) {
|
||||||
|
// No secure version for Windows so the below integrity check is needed.
|
||||||
|
const std::string envValue = PlatformUtilsGetEnv(name);
|
||||||
|
|
||||||
// Do not allow high integrity processes to act on data that can be controlled by medium integrity processes.
|
// Do not allow high integrity processes to act on data that can be controlled by medium integrity processes.
|
||||||
if (IsHighIntegrityLevel()) {
|
if (IsHighIntegrityLevel()) {
|
||||||
|
if (!envValue.empty()) {
|
||||||
|
LogPlatformUtilsError(std::string("!!! WARNING !!! Environment variable ") + name +
|
||||||
|
" is being ignored due to running from an elevated context. The value '" + envValue +
|
||||||
|
"' will NOT be used.");
|
||||||
|
}
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
// No secure version for Windows so the above integrity check is needed.
|
return envValue;
|
||||||
return PlatformUtilsGetEnv(name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sets an environment variable via UTF8 strings.
|
// Sets an environment variable via UTF8 strings.
|
||||||
|
@ -303,7 +316,7 @@ static inline bool PlatformUtilsSetEnv(const char* /* name */, const char* /* va
|
||||||
// Intended to be only used as a fallback on Android, with a more open, "native" technique used in most cases
|
// Intended to be only used as a fallback on Android, with a more open, "native" technique used in most cases
|
||||||
static inline bool PlatformGetGlobalRuntimeFileName(uint16_t major_version, std::string& file_name) {
|
static inline bool PlatformGetGlobalRuntimeFileName(uint16_t major_version, std::string& file_name) {
|
||||||
// Prefix for the runtime JSON file name
|
// Prefix for the runtime JSON file name
|
||||||
static const char* rt_dir_prefixes[] = {"/oem", "/vendor", "/system"};
|
static const char* rt_dir_prefixes[] = {"/product", "/odm", "/oem", "/vendor", "/system"};
|
||||||
static const std::string rt_filename = "/active_runtime.json";
|
static const std::string rt_filename = "/active_runtime.json";
|
||||||
static const std::string subdir = "/etc/openxr/";
|
static const std::string subdir = "/etc/openxr/";
|
||||||
for (const auto prefix : rt_dir_prefixes) {
|
for (const auto prefix : rt_dir_prefixes) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017 Valve Corporation
|
// Copyright (c) 2017 Valve Corporation
|
||||||
// Copyright (c) 2017 LunarG, Inc.
|
// Copyright (c) 2017 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
|
//
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifdef XR_USE_GRAPHICS_API_VULKAN
|
||||||
|
|
||||||
|
#include <vulkan/vulkan_core.h>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
|
/// Utility class for assigning debug names to Vulkan objects we create.
|
||||||
|
class VulkanDebugObjectNamer {
|
||||||
|
public:
|
||||||
|
/// Construct without initializing
|
||||||
|
VulkanDebugObjectNamer() = default;
|
||||||
|
|
||||||
|
/// Construct and initialize
|
||||||
|
VulkanDebugObjectNamer(VkInstance instance, VkDevice device) : m_vkDevice{device} {
|
||||||
|
vkSetDebugUtilsObjectNameEXT =
|
||||||
|
(PFN_vkSetDebugUtilsObjectNameEXT)vkGetInstanceProcAddr(instance, "vkSetDebugUtilsObjectNameEXT");
|
||||||
|
}
|
||||||
|
/// Copy constructor
|
||||||
|
VulkanDebugObjectNamer(const VulkanDebugObjectNamer&) = default;
|
||||||
|
/// Copy assignment operator
|
||||||
|
VulkanDebugObjectNamer& operator=(const VulkanDebugObjectNamer&) = default;
|
||||||
|
|
||||||
|
/// Destructor
|
||||||
|
~VulkanDebugObjectNamer() { Reset(); }
|
||||||
|
|
||||||
|
/// (Re-) Initialize the namer: takes a valid `VkInstance` and `VkDevice`
|
||||||
|
void Init(VkInstance instance, VkDevice device) {
|
||||||
|
Reset();
|
||||||
|
*this = VulkanDebugObjectNamer(instance, device);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The main operation of the namer: actually set an object name.
|
||||||
|
///
|
||||||
|
/// If the namer is not initialized, this exits silently.
|
||||||
|
VkResult SetName(VkObjectType objectType, uint64_t objectHandle, const char* pObjectName) const {
|
||||||
|
if (m_vkDevice == nullptr) {
|
||||||
|
return VK_SUCCESS;
|
||||||
|
}
|
||||||
|
if (vkSetDebugUtilsObjectNameEXT != nullptr) {
|
||||||
|
VkDebugUtilsObjectNameInfoEXT nameInfo{VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT, nullptr, objectType,
|
||||||
|
objectHandle, pObjectName};
|
||||||
|
return vkSetDebugUtilsObjectNameEXT(m_vkDevice, &nameInfo);
|
||||||
|
}
|
||||||
|
return VK_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// De-initialize the namer, forgetting the device and the function pointer loaded from the instance.
|
||||||
|
void Reset() {
|
||||||
|
vkSetDebugUtilsObjectNameEXT = nullptr;
|
||||||
|
m_vkDevice = VK_NULL_HANDLE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
VkDevice m_vkDevice{VK_NULL_HANDLE};
|
||||||
|
PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT{nullptr};
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2018-2022, The Khronos Group Inc.
|
// Copyright (c) 2018-2023, The Khronos Group Inc.
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
//
|
//
|
||||||
|
@ -46,18 +46,6 @@
|
||||||
#ifdef XR_USE_PLATFORM_XLIB
|
#ifdef XR_USE_PLATFORM_XLIB
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xutil.h>
|
#include <X11/Xutil.h>
|
||||||
|
|
||||||
#ifdef Success
|
|
||||||
#undef Success
|
|
||||||
#endif // Success
|
|
||||||
|
|
||||||
#ifdef Always
|
|
||||||
#undef Always
|
|
||||||
#endif // Always
|
|
||||||
|
|
||||||
#ifdef None
|
|
||||||
#undef None
|
|
||||||
#endif // None
|
|
||||||
#endif // XR_USE_PLATFORM_XLIB
|
#endif // XR_USE_PLATFORM_XLIB
|
||||||
|
|
||||||
#ifdef XR_USE_PLATFORM_XCB
|
#ifdef XR_USE_PLATFORM_XCB
|
||||||
|
@ -72,7 +60,7 @@
|
||||||
#include <xcb/glx.h>
|
#include <xcb/glx.h>
|
||||||
#endif // XR_USE_PLATFORM_XCB
|
#endif // XR_USE_PLATFORM_XCB
|
||||||
#ifdef XR_USE_PLATFORM_MACOS
|
#ifdef XR_USE_PLATFORM_MACOS
|
||||||
#include <CL/cl_gl_ext.h>
|
#include <OpenCL/cl_gl_ext.h>
|
||||||
#endif // XR_USE_PLATFORM_MACOS
|
#endif // XR_USE_PLATFORM_MACOS
|
||||||
#endif // XR_USE_GRAPHICS_API_OPENGL
|
#endif // XR_USE_GRAPHICS_API_OPENGL
|
||||||
|
|
||||||
|
@ -87,3 +75,19 @@
|
||||||
#ifdef XR_USE_PLATFORM_WAYLAND
|
#ifdef XR_USE_PLATFORM_WAYLAND
|
||||||
#include "wayland-client.h"
|
#include "wayland-client.h"
|
||||||
#endif // XR_USE_PLATFORM_WAYLAND
|
#endif // XR_USE_PLATFORM_WAYLAND
|
||||||
|
|
||||||
|
#ifdef XR_USE_GRAPHICS_API_OPENGL
|
||||||
|
#if defined(XR_USE_PLATFORM_XLIB) || defined(XR_USE_PLATFORM_XCB)
|
||||||
|
#ifdef Success
|
||||||
|
#undef Success
|
||||||
|
#endif // Success
|
||||||
|
|
||||||
|
#ifdef Always
|
||||||
|
#undef Always
|
||||||
|
#endif // Always
|
||||||
|
|
||||||
|
#ifdef None
|
||||||
|
#undef None
|
||||||
|
#endif // None
|
||||||
|
#endif // defined(XR_USE_PLATFORM_XLIB) || defined(XR_USE_PLATFORM_XCB)
|
||||||
|
#endif // XR_USE_GRAPHICS_API_OPENGL
|
||||||
|
|
|
@ -21,11 +21,6 @@
|
||||||
#ifndef XR_LINEAR_H_
|
#ifndef XR_LINEAR_H_
|
||||||
#define XR_LINEAR_H_
|
#define XR_LINEAR_H_
|
||||||
|
|
||||||
#if defined(OS_LINUX_XCB) || defined(OS_LINUX_XCB_GLX) || defined(OS_LINUX_WAYLAND)
|
|
||||||
#pragma GCC diagnostic ignored "-Wunused-function"
|
|
||||||
#pragma clang diagnostic ignored "-Wunused-function"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <openxr/openxr.h>
|
#include <openxr/openxr.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -51,6 +46,7 @@ XrVector2f
|
||||||
XrVector3f
|
XrVector3f
|
||||||
XrVector4f
|
XrVector4f
|
||||||
XrQuaternionf
|
XrQuaternionf
|
||||||
|
XrPosef
|
||||||
XrMatrix4x4f
|
XrMatrix4x4f
|
||||||
|
|
||||||
inline static void XrVector3f_Set(XrVector3f* v, const float value);
|
inline static void XrVector3f_Set(XrVector3f* v, const float value);
|
||||||
|
@ -64,8 +60,18 @@ inline static void XrVector3f_Scale(XrVector3f* result, const XrVector3f* a, con
|
||||||
inline static void XrVector3f_Normalize(XrVector3f* v);
|
inline static void XrVector3f_Normalize(XrVector3f* v);
|
||||||
inline static float XrVector3f_Length(const XrVector3f* v);
|
inline static float XrVector3f_Length(const XrVector3f* v);
|
||||||
|
|
||||||
|
inline static void XrQuaternionf_CreateIdentity(XrQuaternionf* q);
|
||||||
|
inline static void XrQuaternionf_CreateFromAxisAngle(XrQuaternionf* result, const XrVector3f* axis, const float angleInRadians);
|
||||||
inline static void XrQuaternionf_Lerp(XrQuaternionf* result, const XrQuaternionf* a, const XrQuaternionf* b, const float fraction);
|
inline static void XrQuaternionf_Lerp(XrQuaternionf* result, const XrQuaternionf* a, const XrQuaternionf* b, const float fraction);
|
||||||
inline static void XrQuaternionf_Multiply(XrQuaternionf* result, const XrQuaternionf* a, const XrQuaternionf* b;
|
inline static void XrQuaternionf_Multiply(XrQuaternionf* result, const XrQuaternionf* a, const XrQuaternionf* b);
|
||||||
|
inline static void XrQuaternionf_Invert(XrQuaternionf* result, const XrQuaternionf* q);
|
||||||
|
inline static void XrQuaternionf_Normalize(XrQuaternionf* q);
|
||||||
|
inline static void XrQuaternionf_RotateVector3f(XrVector3f* result, const XrQuaternionf* a, const XrVector3f* v);
|
||||||
|
|
||||||
|
inline static void XrPosef_CreateIdentity(XrPosef* result);
|
||||||
|
inline static void XrPosef_TransformVector3f(XrVector3f* result, const XrPosef* a, const XrVector3f* v);
|
||||||
|
inline static void XrPosef_Multiply(XrPosef* result, const XrPosef* a, const XrPosef* b);
|
||||||
|
inline static void XrPosef_Invert(XrPosef* result, const XrPosef* a);
|
||||||
|
|
||||||
inline static void XrMatrix4x4f_CreateIdentity(XrMatrix4x4f* result);
|
inline static void XrMatrix4x4f_CreateIdentity(XrMatrix4x4f* result);
|
||||||
inline static void XrMatrix4x4f_CreateTranslation(XrMatrix4x4f* result, const float x, const float y, const float z);
|
inline static void XrMatrix4x4f_CreateTranslation(XrMatrix4x4f* result, const float x, const float y, const float z);
|
||||||
|
@ -74,13 +80,13 @@ inline static void XrMatrix4x4f_CreateRotation(XrMatrix4x4f* result, const float
|
||||||
inline static void XrMatrix4x4f_CreateScale(XrMatrix4x4f* result, const float x, const float y, const float z);
|
inline static void XrMatrix4x4f_CreateScale(XrMatrix4x4f* result, const float x, const float y, const float z);
|
||||||
inline static void XrMatrix4x4f_CreateTranslationRotationScale(XrMatrix4x4f* result, const XrVector3f* translation,
|
inline static void XrMatrix4x4f_CreateTranslationRotationScale(XrMatrix4x4f* result, const XrVector3f* translation,
|
||||||
const XrQuaternionf* rotation, const XrVector3f* scale);
|
const XrQuaternionf* rotation, const XrVector3f* scale);
|
||||||
inline static void XrMatrix4x4f_CreateProjection(XrMatrix4x4f* result, const float tanAngleLeft, const float tanAngleRight,
|
inline static void XrMatrix4x4f_CreateFromRigidTransform(XrMatrix4x4f* result, const XrPosef* s);
|
||||||
const float tanAngleUp, float const tanAngleDown, const float nearZ,
|
inline static void XrMatrix4x4f_CreateProjection(XrMatrix4x4f* result, GraphicsAPI graphicsApi, const float tanAngleLeft,
|
||||||
const float farZ);
|
const float tanAngleRight, const float tanAngleUp, float const tanAngleDown,
|
||||||
inline static void XrMatrix4x4f_CreateProjectionFov(XrMatrix4x4f* result, const float fovDegreesLeft, const float fovDegreesRight,
|
const float nearZ, const float farZ);
|
||||||
const float fovDegreeUp, const float fovDegreesDown, const float nearZ,
|
inline static void XrMatrix4x4f_CreateProjectionFov(XrMatrix4x4f* result, GraphicsAPI graphicsApi, const XrFovf fov,
|
||||||
const float farZ);
|
const float nearZ, const float farZ);
|
||||||
inline static void XrMatrix4x4f_CreateFromQuaternion(XrMatrix4x4f* result, const XrQuaternionf* src);
|
inline static void XrMatrix4x4f_CreateFromQuaternion(XrMatrix4x4f* result, const XrQuaternionf* quat);
|
||||||
inline static void XrMatrix4x4f_CreateOffsetScaleForBounds(XrMatrix4x4f* result, const XrMatrix4x4f* matrix, const XrVector3f* mins,
|
inline static void XrMatrix4x4f_CreateOffsetScaleForBounds(XrMatrix4x4f* result, const XrMatrix4x4f* matrix, const XrVector3f* mins,
|
||||||
const XrVector3f* maxs);
|
const XrVector3f* maxs);
|
||||||
|
|
||||||
|
@ -207,6 +213,13 @@ inline static void XrVector3f_Normalize(XrVector3f* v) {
|
||||||
|
|
||||||
inline static float XrVector3f_Length(const XrVector3f* v) { return sqrtf(v->x * v->x + v->y * v->y + v->z * v->z); }
|
inline static float XrVector3f_Length(const XrVector3f* v) { return sqrtf(v->x * v->x + v->y * v->y + v->z * v->z); }
|
||||||
|
|
||||||
|
inline static void XrQuaternionf_CreateIdentity(XrQuaternionf* q) {
|
||||||
|
q->x = 0.0f;
|
||||||
|
q->y = 0.0f;
|
||||||
|
q->z = 0.0f;
|
||||||
|
q->w = 1.0f;
|
||||||
|
}
|
||||||
|
|
||||||
inline static void XrQuaternionf_CreateFromAxisAngle(XrQuaternionf* result, const XrVector3f* axis, const float angleInRadians) {
|
inline static void XrQuaternionf_CreateFromAxisAngle(XrQuaternionf* result, const XrVector3f* axis, const float angleInRadians) {
|
||||||
float s = sinf(angleInRadians / 2.0f);
|
float s = sinf(angleInRadians / 2.0f);
|
||||||
float lengthRcp = XrRcpSqrt(axis->x * axis->x + axis->y * axis->y + axis->z * axis->z);
|
float lengthRcp = XrRcpSqrt(axis->x * axis->x + axis->y * axis->y + axis->z * axis->z);
|
||||||
|
@ -238,6 +251,58 @@ inline static void XrQuaternionf_Multiply(XrQuaternionf* result, const XrQuatern
|
||||||
result->w = (b->w * a->w) - (b->x * a->x) - (b->y * a->y) - (b->z * a->z);
|
result->w = (b->w * a->w) - (b->x * a->x) - (b->y * a->y) - (b->z * a->z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline static void XrQuaternionf_Invert(XrQuaternionf* result, const XrQuaternionf* q) {
|
||||||
|
result->x = -q->x;
|
||||||
|
result->y = -q->y;
|
||||||
|
result->z = -q->z;
|
||||||
|
result->w = q->w;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static void XrQuaternionf_Normalize(XrQuaternionf* q) {
|
||||||
|
const float lengthRcp = XrRcpSqrt(q->x * q->x + q->y * q->y + q->z * q->z + q->w * q->w);
|
||||||
|
q->x *= lengthRcp;
|
||||||
|
q->y *= lengthRcp;
|
||||||
|
q->z *= lengthRcp;
|
||||||
|
q->w *= lengthRcp;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static void XrQuaternionf_RotateVector3f(XrVector3f* result, const XrQuaternionf* a, const XrVector3f* v) {
|
||||||
|
XrQuaternionf q = {v->x, v->y, v->z, 0.0f};
|
||||||
|
XrQuaternionf aq;
|
||||||
|
XrQuaternionf_Multiply(&aq, &q, a);
|
||||||
|
XrQuaternionf aInv;
|
||||||
|
XrQuaternionf_Invert(&aInv, a);
|
||||||
|
XrQuaternionf aqaInv;
|
||||||
|
XrQuaternionf_Multiply(&aqaInv, &aInv, &aq);
|
||||||
|
|
||||||
|
result->x = aqaInv.x;
|
||||||
|
result->y = aqaInv.y;
|
||||||
|
result->z = aqaInv.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static void XrPosef_CreateIdentity(XrPosef* result) {
|
||||||
|
XrQuaternionf_CreateIdentity(&result->orientation);
|
||||||
|
XrVector3f_Set(&result->position, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static void XrPosef_TransformVector3f(XrVector3f* result, const XrPosef* a, const XrVector3f* v) {
|
||||||
|
XrVector3f r0;
|
||||||
|
XrQuaternionf_RotateVector3f(&r0, &a->orientation, v);
|
||||||
|
XrVector3f_Add(result, &r0, &a->position);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static void XrPosef_Multiply(XrPosef* result, const XrPosef* a, const XrPosef* b) {
|
||||||
|
XrQuaternionf_Multiply(&result->orientation, &b->orientation, &a->orientation);
|
||||||
|
XrPosef_TransformVector3f(&result->position, a, &b->position);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static void XrPosef_Invert(XrPosef* result, const XrPosef* a) {
|
||||||
|
XrQuaternionf_Invert(&result->orientation, &a->orientation);
|
||||||
|
XrVector3f aPosNeg;
|
||||||
|
XrVector3f_Scale(&aPosNeg, &a->position, -1.0f);
|
||||||
|
XrQuaternionf_RotateVector3f(&result->position, &result->orientation, &aPosNeg);
|
||||||
|
}
|
||||||
|
|
||||||
// Use left-multiplication to accumulate transformations.
|
// Use left-multiplication to accumulate transformations.
|
||||||
inline static void XrMatrix4x4f_Multiply(XrMatrix4x4f* result, const XrMatrix4x4f* a, const XrMatrix4x4f* b) {
|
inline static void XrMatrix4x4f_Multiply(XrMatrix4x4f* result, const XrMatrix4x4f* a, const XrMatrix4x4f* b) {
|
||||||
result->m[0] = a->m[0] * b->m[0] + a->m[4] * b->m[1] + a->m[8] * b->m[2] + a->m[12] * b->m[3];
|
result->m[0] = a->m[0] * b->m[0] + a->m[4] * b->m[1] + a->m[8] * b->m[2] + a->m[12] * b->m[3];
|
||||||
|
@ -379,23 +444,31 @@ inline static void XrMatrix4x4f_CreateTranslation(XrMatrix4x4f* result, const fl
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates a rotation matrix.
|
// Creates a rotation matrix.
|
||||||
// If -Z=forward, +Y=up, +X=right, then degreesX=pitch, degreesY=yaw, degreesZ=roll.
|
// If -Z=forward, +Y=up, +X=right, then radiansX=pitch, radiansY=yaw, radiansZ=roll.
|
||||||
inline static void XrMatrix4x4f_CreateRotation(XrMatrix4x4f* result, const float degreesX, const float degreesY,
|
inline static void XrMatrix4x4f_CreateRotationRadians(XrMatrix4x4f* result, const float radiansX, const float radiansY,
|
||||||
const float degreesZ) {
|
const float radiansZ) {
|
||||||
const float sinX = sinf(degreesX * (MATH_PI / 180.0f));
|
const float sinX = sinf(radiansX);
|
||||||
const float cosX = cosf(degreesX * (MATH_PI / 180.0f));
|
const float cosX = cosf(radiansX);
|
||||||
const XrMatrix4x4f rotationX = {{1, 0, 0, 0, 0, cosX, sinX, 0, 0, -sinX, cosX, 0, 0, 0, 0, 1}};
|
const XrMatrix4x4f rotationX = {{1, 0, 0, 0, 0, cosX, sinX, 0, 0, -sinX, cosX, 0, 0, 0, 0, 1}};
|
||||||
const float sinY = sinf(degreesY * (MATH_PI / 180.0f));
|
const float sinY = sinf(radiansY);
|
||||||
const float cosY = cosf(degreesY * (MATH_PI / 180.0f));
|
const float cosY = cosf(radiansY);
|
||||||
const XrMatrix4x4f rotationY = {{cosY, 0, -sinY, 0, 0, 1, 0, 0, sinY, 0, cosY, 0, 0, 0, 0, 1}};
|
const XrMatrix4x4f rotationY = {{cosY, 0, -sinY, 0, 0, 1, 0, 0, sinY, 0, cosY, 0, 0, 0, 0, 1}};
|
||||||
const float sinZ = sinf(degreesZ * (MATH_PI / 180.0f));
|
const float sinZ = sinf(radiansZ);
|
||||||
const float cosZ = cosf(degreesZ * (MATH_PI / 180.0f));
|
const float cosZ = cosf(radiansZ);
|
||||||
const XrMatrix4x4f rotationZ = {{cosZ, sinZ, 0, 0, -sinZ, cosZ, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}};
|
const XrMatrix4x4f rotationZ = {{cosZ, sinZ, 0, 0, -sinZ, cosZ, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}};
|
||||||
XrMatrix4x4f rotationXY;
|
XrMatrix4x4f rotationXY;
|
||||||
XrMatrix4x4f_Multiply(&rotationXY, &rotationY, &rotationX);
|
XrMatrix4x4f_Multiply(&rotationXY, &rotationY, &rotationX);
|
||||||
XrMatrix4x4f_Multiply(result, &rotationZ, &rotationXY);
|
XrMatrix4x4f_Multiply(result, &rotationZ, &rotationXY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Creates a rotation matrix.
|
||||||
|
// If -Z=forward, +Y=up, +X=right, then degreesX=pitch, degreesY=yaw, degreesZ=roll.
|
||||||
|
inline static void XrMatrix4x4f_CreateRotation(XrMatrix4x4f* result, const float degreesX, const float degreesY,
|
||||||
|
const float degreesZ) {
|
||||||
|
XrMatrix4x4f_CreateRotationRadians(result, degreesX * (MATH_PI / 180.0f), degreesY * (MATH_PI / 180.0f),
|
||||||
|
degreesZ * (MATH_PI / 180.0f));
|
||||||
|
}
|
||||||
|
|
||||||
// Creates a scale matrix.
|
// Creates a scale matrix.
|
||||||
inline static void XrMatrix4x4f_CreateScale(XrMatrix4x4f* result, const float x, const float y, const float z) {
|
inline static void XrMatrix4x4f_CreateScale(XrMatrix4x4f* result, const float x, const float y, const float z) {
|
||||||
result->m[0] = x;
|
result->m[0] = x;
|
||||||
|
@ -471,6 +544,11 @@ inline static void XrMatrix4x4f_CreateTranslationRotationScale(XrMatrix4x4f* res
|
||||||
XrMatrix4x4f_Multiply(result, &translationMatrix, &combinedMatrix);
|
XrMatrix4x4f_Multiply(result, &translationMatrix, &combinedMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline static void XrMatrix4x4f_CreateFromRigidTransform(XrMatrix4x4f* result, const XrPosef* s) {
|
||||||
|
const XrVector3f identityScale = {1.0f, 1.0f, 1.0f};
|
||||||
|
XrMatrix4x4f_CreateTranslationRotationScale(result, &s->position, &s->orientation, &identityScale);
|
||||||
|
}
|
||||||
|
|
||||||
// Creates a projection matrix based on the specified dimensions.
|
// Creates a projection matrix based on the specified dimensions.
|
||||||
// The projection matrix transforms -Z=forward, +Y=up, +X=right to the appropriate clip space for the graphics API.
|
// The projection matrix transforms -Z=forward, +Y=up, +X=right to the appropriate clip space for the graphics API.
|
||||||
// The far plane is placed at infinity if farZ <= nearZ.
|
// The far plane is placed at infinity if farZ <= nearZ.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2020-2022, The Khronos Group Inc.
|
// Copyright (c) 2020-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2020-2021, Collabora, Ltd.
|
// Copyright (c) 2020-2021, Collabora, Ltd.
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
@ -19,10 +19,10 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <android/log.h>
|
#include <android/log.h>
|
||||||
|
|
||||||
#define ALOGE(...) __android_log_print(ANDROID_LOG_ERROR, "openxr_loader", __VA_ARGS__)
|
#define ALOGE(...) __android_log_print(ANDROID_LOG_ERROR, "OpenXR-Loader", __VA_ARGS__)
|
||||||
#define ALOGW(...) __android_log_print(ANDROID_LOG_WARN, "openxr_loader", __VA_ARGS__)
|
#define ALOGW(...) __android_log_print(ANDROID_LOG_WARN, "OpenXR-Loader", __VA_ARGS__)
|
||||||
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "openxr_loader", __VA_ARGS__)
|
#define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "OpenXR-Loader", __VA_ARGS__)
|
||||||
#define ALOGI(...) __android_log_print(ANDROID_LOG_INFO, "openxr_loader", __VA_ARGS__)
|
#define ALOGI(...) __android_log_print(ANDROID_LOG_INFO, "OpenXR-Loader", __VA_ARGS__)
|
||||||
|
|
||||||
namespace openxr_android {
|
namespace openxr_android {
|
||||||
using wrap::android::content::ContentUris;
|
using wrap::android::content::ContentUris;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2020-2022, The Khronos Group Inc.
|
// Copyright (c) 2020-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2020-2021, Collabora, Ltd.
|
// Copyright (c) 2020-2021, Collabora, Ltd.
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
@ -82,6 +82,12 @@ XrResult ApiLayerInterface::GetApiLayerProperties(const std::string& openxr_comm
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check for potential overflow before static_cast<uint32_t>
|
||||||
|
if (manifest_files.size() >= UINT32_MAX) {
|
||||||
|
LoaderLogger::LogErrorMessage(openxr_command, "ApiLayerInterface::GetApiLayerProperties - too many API layers found");
|
||||||
|
return XR_ERROR_RUNTIME_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
manifest_count = static_cast<uint32_t>(manifest_files.size());
|
manifest_count = static_cast<uint32_t>(manifest_files.size());
|
||||||
if (nullptr == outgoing_count) {
|
if (nullptr == outgoing_count) {
|
||||||
LoaderLogger::LogErrorMessage("xrEnumerateInstanceExtensionProperties",
|
LoaderLogger::LogErrorMessage("xrEnumerateInstanceExtensionProperties",
|
||||||
|
@ -131,8 +137,8 @@ XrResult ApiLayerInterface::GetInstanceExtensionProperties(const std::string& op
|
||||||
}
|
}
|
||||||
|
|
||||||
bool found = false;
|
bool found = false;
|
||||||
auto num_files = static_cast<uint32_t>(manifest_files.size());
|
size_t num_files = manifest_files.size();
|
||||||
for (uint32_t man_file = 0; man_file < num_files; ++man_file) {
|
for (size_t man_file = 0; man_file < num_files; ++man_file) {
|
||||||
// If a layer with the provided name exists, get it's instance extension information.
|
// If a layer with the provided name exists, get it's instance extension information.
|
||||||
if (manifest_files[man_file]->LayerName() == layer_name) {
|
if (manifest_files[man_file]->LayerName() == layer_name) {
|
||||||
manifest_files[man_file]->GetInstanceExtensionProperties(extension_properties);
|
manifest_files[man_file]->GetInstanceExtensionProperties(extension_properties);
|
||||||
|
@ -172,8 +178,8 @@ XrResult ApiLayerInterface::GetInstanceExtensionProperties(const std::string& op
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grab the layer instance extensions information
|
// Grab the layer instance extensions information
|
||||||
auto num_files = static_cast<uint32_t>(manifest_files.size());
|
size_t num_files = manifest_files.size();
|
||||||
for (uint32_t man_file = 0; man_file < num_files; ++man_file) {
|
for (size_t man_file = 0; man_file < num_files; ++man_file) {
|
||||||
manifest_files[man_file]->GetInstanceExtensionProperties(extension_properties);
|
manifest_files[man_file]->GetInstanceExtensionProperties(extension_properties);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2019-2022, The Khronos Group Inc.
|
// Copyright (c) 2019-2023, The Khronos Group Inc.
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
@ -200,8 +200,8 @@ XrResult LoaderInstance::CreateInstance(PFN_xrGetInstanceProcAddr get_instance_p
|
||||||
if (!api_layer_interfaces.empty()) {
|
if (!api_layer_interfaces.empty()) {
|
||||||
// Initialize an array of ApiLayerNextInfo structs
|
// Initialize an array of ApiLayerNextInfo structs
|
||||||
std::unique_ptr<XrApiLayerNextInfo[]> next_info_list(new XrApiLayerNextInfo[api_layer_interfaces.size()]);
|
std::unique_ptr<XrApiLayerNextInfo[]> next_info_list(new XrApiLayerNextInfo[api_layer_interfaces.size()]);
|
||||||
auto ni_index = static_cast<uint32_t>(api_layer_interfaces.size() - 1);
|
size_t ni_index = api_layer_interfaces.size() - 1;
|
||||||
for (uint32_t i = 0; i <= ni_index; i++) {
|
for (size_t i = 0; i <= ni_index; i++) {
|
||||||
next_info_list[i].structType = XR_LOADER_INTERFACE_STRUCT_API_LAYER_NEXT_INFO;
|
next_info_list[i].structType = XR_LOADER_INTERFACE_STRUCT_API_LAYER_NEXT_INFO;
|
||||||
next_info_list[i].structVersion = XR_API_LAYER_NEXT_INFO_STRUCT_VERSION;
|
next_info_list[i].structVersion = XR_API_LAYER_NEXT_INFO_STRUCT_VERSION;
|
||||||
next_info_list[i].structSize = sizeof(XrApiLayerNextInfo);
|
next_info_list[i].structSize = sizeof(XrApiLayerNextInfo);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
@ -26,6 +26,9 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
// For routing platform_utils.hpp messages into the LoaderLogger.
|
||||||
|
void LogPlatformUtilsError(const std::string& message) { LoaderLogger::LogErrorMessage("platform_utils", message); }
|
||||||
|
|
||||||
bool LoaderLogRecorder::LogDebugUtilsMessage(XrDebugUtilsMessageSeverityFlagsEXT /*message_severity*/,
|
bool LoaderLogRecorder::LogDebugUtilsMessage(XrDebugUtilsMessageSeverityFlagsEXT /*message_severity*/,
|
||||||
XrDebugUtilsMessageTypeFlagsEXT /*message_type*/,
|
XrDebugUtilsMessageTypeFlagsEXT /*message_type*/,
|
||||||
const XrDebugUtilsMessengerCallbackDataEXT* /*callback_data*/) {
|
const XrDebugUtilsMessengerCallbackDataEXT* /*callback_data*/) {
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
@ -160,16 +160,16 @@ bool DebugUtilsLogRecorder::LogMessage(XrLoaderLogMessageSeverityFlagBits messag
|
||||||
XrDebugUtilsMessageTypeFlagsEXT utils_type = LoaderLogMessageTypesToDebugUtilsMessageTypes(message_type);
|
XrDebugUtilsMessageTypeFlagsEXT utils_type = LoaderLogMessageTypesToDebugUtilsMessageTypes(message_type);
|
||||||
|
|
||||||
// Convert the loader log message into the debug utils log message information
|
// Convert the loader log message into the debug utils log message information
|
||||||
XrDebugUtilsMessengerCallbackDataEXT utils_callback_data = {};
|
XrDebugUtilsMessengerCallbackDataEXT utils_callback_data{};
|
||||||
utils_callback_data.type = XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT;
|
utils_callback_data.type = XR_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT;
|
||||||
utils_callback_data.messageId = callback_data->message_id;
|
utils_callback_data.messageId = callback_data->message_id;
|
||||||
utils_callback_data.functionName = callback_data->command_name;
|
utils_callback_data.functionName = callback_data->command_name;
|
||||||
utils_callback_data.message = callback_data->message;
|
utils_callback_data.message = callback_data->message;
|
||||||
std::vector<XrDebugUtilsObjectNameInfoEXT> utils_objects;
|
|
||||||
utils_objects.resize(callback_data->object_count);
|
XrDebugUtilsObjectNameInfoEXT example_utils_info{};
|
||||||
|
example_utils_info.type = XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
||||||
|
std::vector<XrDebugUtilsObjectNameInfoEXT> utils_objects(callback_data->object_count, example_utils_info);
|
||||||
for (uint8_t object = 0; object < callback_data->object_count; ++object) {
|
for (uint8_t object = 0; object < callback_data->object_count; ++object) {
|
||||||
utils_objects[object].type = XR_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT;
|
|
||||||
utils_objects[object].next = nullptr;
|
|
||||||
utils_objects[object].objectHandle = callback_data->objects[object].handle;
|
utils_objects[object].objectHandle = callback_data->objects[object].handle;
|
||||||
utils_objects[object].objectType = callback_data->objects[object].type;
|
utils_objects[object].objectType = callback_data->objects[object].type;
|
||||||
utils_objects[object].objectName = callback_data->objects[object].name.c_str();
|
utils_objects[object].objectName = callback_data->objects[object].name.c_str();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
@ -27,13 +27,13 @@
|
||||||
#include <openxr/openxr.h>
|
#include <openxr/openxr.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <cstdio>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
@ -233,6 +233,12 @@ static void ReadDataFilesInSearchPaths(const std::string &override_env_var, cons
|
||||||
relative_home_path += relative_path;
|
relative_home_path += relative_path;
|
||||||
CopyIncludedPaths(true, home, relative_home_path, search_path);
|
CopyIncludedPaths(true, home, relative_home_path, search_path);
|
||||||
}
|
}
|
||||||
|
#elif defined(XR_OS_ANDROID)
|
||||||
|
CopyIncludedPaths(true, "/product/etc", relative_path, search_path);
|
||||||
|
CopyIncludedPaths(true, "/odm/etc", relative_path, search_path);
|
||||||
|
CopyIncludedPaths(true, "/oem/etc", relative_path, search_path);
|
||||||
|
CopyIncludedPaths(true, "/vendor/etc", relative_path, search_path);
|
||||||
|
CopyIncludedPaths(true, "/system/etc", relative_path, search_path);
|
||||||
#else
|
#else
|
||||||
(void)relative_path;
|
(void)relative_path;
|
||||||
#endif
|
#endif
|
||||||
|
@ -447,9 +453,8 @@ static void GetExtensionProperties(const std::vector<ExtensionListing> &extensio
|
||||||
if (it != props.end()) {
|
if (it != props.end()) {
|
||||||
it->extensionVersion = std::max(it->extensionVersion, ext.extension_version);
|
it->extensionVersion = std::max(it->extensionVersion, ext.extension_version);
|
||||||
} else {
|
} else {
|
||||||
XrExtensionProperties prop = {};
|
XrExtensionProperties prop{};
|
||||||
prop.type = XR_TYPE_EXTENSION_PROPERTIES;
|
prop.type = XR_TYPE_EXTENSION_PROPERTIES;
|
||||||
prop.next = nullptr;
|
|
||||||
strncpy(prop.extensionName, ext.name.c_str(), XR_MAX_EXTENSION_NAME_SIZE - 1);
|
strncpy(prop.extensionName, ext.name.c_str(), XR_MAX_EXTENSION_NAME_SIZE - 1);
|
||||||
prop.extensionName[XR_MAX_EXTENSION_NAME_SIZE - 1] = '\0';
|
prop.extensionName[XR_MAX_EXTENSION_NAME_SIZE - 1] = '\0';
|
||||||
prop.extensionVersion = ext.extension_version;
|
prop.extensionVersion = ext.extension_version;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017 The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017 Valve Corporation
|
// Copyright (c) 2017 Valve Corporation
|
||||||
// Copyright (c) 2017 LunarG, Inc.
|
// Copyright (c) 2017 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
@ -430,12 +430,10 @@ void RuntimeInterface::GetInstanceExtensionProperties(std::vector<XrExtensionPro
|
||||||
// Get the count from the runtime
|
// Get the count from the runtime
|
||||||
rt_xrEnumerateInstanceExtensionProperties(nullptr, count, &count_output, nullptr);
|
rt_xrEnumerateInstanceExtensionProperties(nullptr, count, &count_output, nullptr);
|
||||||
if (count_output > 0) {
|
if (count_output > 0) {
|
||||||
runtime_extension_properties.resize(count_output);
|
XrExtensionProperties example_properties{};
|
||||||
|
example_properties.type = XR_TYPE_EXTENSION_PROPERTIES;
|
||||||
|
runtime_extension_properties.resize(count_output, example_properties);
|
||||||
count = count_output;
|
count = count_output;
|
||||||
for (XrExtensionProperties& ext_prop : runtime_extension_properties) {
|
|
||||||
ext_prop.type = XR_TYPE_EXTENSION_PROPERTIES;
|
|
||||||
ext_prop.next = nullptr;
|
|
||||||
}
|
|
||||||
rt_xrEnumerateInstanceExtensionProperties(nullptr, count, &count_output, runtime_extension_properties.data());
|
rt_xrEnumerateInstanceExtensionProperties(nullptr, count, &count_output, runtime_extension_properties.data());
|
||||||
}
|
}
|
||||||
size_t ext_count = runtime_extension_properties.size();
|
size_t ext_count = runtime_extension_properties.size();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
@ -6,7 +6,7 @@
|
||||||
// See loader_source_generator.py for modifications
|
// See loader_source_generator.py for modifications
|
||||||
// ************************************************************
|
// ************************************************************
|
||||||
|
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
@ -6,7 +6,7 @@
|
||||||
// See loader_source_generator.py for modifications
|
// See loader_source_generator.py for modifications
|
||||||
// ************************************************************
|
// ************************************************************
|
||||||
|
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
@ -6,7 +6,7 @@
|
||||||
// See utility_source_generator.py for modifications
|
// See utility_source_generator.py for modifications
|
||||||
// ************************************************************
|
// ************************************************************
|
||||||
|
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
@ -27,6 +27,7 @@
|
||||||
// Author: Mark Young <marky@lunarg.com>
|
// Author: Mark Young <marky@lunarg.com>
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#include <time.h>
|
||||||
#include "xr_generated_dispatch_table.h"
|
#include "xr_generated_dispatch_table.h"
|
||||||
#include "xr_dependencies.h"
|
#include "xr_dependencies.h"
|
||||||
#include <openxr/openxr.h>
|
#include <openxr/openxr.h>
|
||||||
|
@ -236,6 +237,12 @@ void GeneratedXrPopulateDispatchTable(struct XrGeneratedDispatchTable *table,
|
||||||
(get_inst_proc_addr(instance, "xrUpdateSwapchainFB", (PFN_xrVoidFunction*)&table->UpdateSwapchainFB));
|
(get_inst_proc_addr(instance, "xrUpdateSwapchainFB", (PFN_xrVoidFunction*)&table->UpdateSwapchainFB));
|
||||||
(get_inst_proc_addr(instance, "xrGetSwapchainStateFB", (PFN_xrVoidFunction*)&table->GetSwapchainStateFB));
|
(get_inst_proc_addr(instance, "xrGetSwapchainStateFB", (PFN_xrVoidFunction*)&table->GetSwapchainStateFB));
|
||||||
|
|
||||||
|
// ---- XR_FB_body_tracking extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrCreateBodyTrackerFB", (PFN_xrVoidFunction*)&table->CreateBodyTrackerFB));
|
||||||
|
(get_inst_proc_addr(instance, "xrDestroyBodyTrackerFB", (PFN_xrVoidFunction*)&table->DestroyBodyTrackerFB));
|
||||||
|
(get_inst_proc_addr(instance, "xrLocateBodyJointsFB", (PFN_xrVoidFunction*)&table->LocateBodyJointsFB));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetBodySkeletonFB", (PFN_xrVoidFunction*)&table->GetBodySkeletonFB));
|
||||||
|
|
||||||
// ---- XR_MSFT_scene_understanding extension commands
|
// ---- XR_MSFT_scene_understanding extension commands
|
||||||
(get_inst_proc_addr(instance, "xrEnumerateSceneComputeFeaturesMSFT", (PFN_xrVoidFunction*)&table->EnumerateSceneComputeFeaturesMSFT));
|
(get_inst_proc_addr(instance, "xrEnumerateSceneComputeFeaturesMSFT", (PFN_xrVoidFunction*)&table->EnumerateSceneComputeFeaturesMSFT));
|
||||||
(get_inst_proc_addr(instance, "xrCreateSceneObserverMSFT", (PFN_xrVoidFunction*)&table->CreateSceneObserverMSFT));
|
(get_inst_proc_addr(instance, "xrCreateSceneObserverMSFT", (PFN_xrVoidFunction*)&table->CreateSceneObserverMSFT));
|
||||||
|
@ -329,6 +336,11 @@ void GeneratedXrPopulateDispatchTable(struct XrGeneratedDispatchTable *table,
|
||||||
// ---- XR_VARJO_view_offset extension commands
|
// ---- XR_VARJO_view_offset extension commands
|
||||||
(get_inst_proc_addr(instance, "xrSetViewOffsetVARJO", (PFN_xrVoidFunction*)&table->SetViewOffsetVARJO));
|
(get_inst_proc_addr(instance, "xrSetViewOffsetVARJO", (PFN_xrVoidFunction*)&table->SetViewOffsetVARJO));
|
||||||
|
|
||||||
|
// ---- XR_ML_compat extension commands
|
||||||
|
#if defined(XR_USE_PLATFORM_ML)
|
||||||
|
(get_inst_proc_addr(instance, "xrCreateSpaceFromCoordinateFrameUIDML", (PFN_xrVoidFunction*)&table->CreateSpaceFromCoordinateFrameUIDML));
|
||||||
|
#endif // defined(XR_USE_PLATFORM_ML)
|
||||||
|
|
||||||
// ---- XR_MSFT_spatial_anchor_persistence extension commands
|
// ---- XR_MSFT_spatial_anchor_persistence extension commands
|
||||||
(get_inst_proc_addr(instance, "xrCreateSpatialAnchorStoreConnectionMSFT", (PFN_xrVoidFunction*)&table->CreateSpatialAnchorStoreConnectionMSFT));
|
(get_inst_proc_addr(instance, "xrCreateSpatialAnchorStoreConnectionMSFT", (PFN_xrVoidFunction*)&table->CreateSpatialAnchorStoreConnectionMSFT));
|
||||||
(get_inst_proc_addr(instance, "xrDestroySpatialAnchorStoreConnectionMSFT", (PFN_xrVoidFunction*)&table->DestroySpatialAnchorStoreConnectionMSFT));
|
(get_inst_proc_addr(instance, "xrDestroySpatialAnchorStoreConnectionMSFT", (PFN_xrVoidFunction*)&table->DestroySpatialAnchorStoreConnectionMSFT));
|
||||||
|
@ -354,6 +366,9 @@ void GeneratedXrPopulateDispatchTable(struct XrGeneratedDispatchTable *table,
|
||||||
(get_inst_proc_addr(instance, "xrGetAudioInputDeviceGuidOculus", (PFN_xrVoidFunction*)&table->GetAudioInputDeviceGuidOculus));
|
(get_inst_proc_addr(instance, "xrGetAudioInputDeviceGuidOculus", (PFN_xrVoidFunction*)&table->GetAudioInputDeviceGuidOculus));
|
||||||
#endif // defined(XR_USE_PLATFORM_WIN32)
|
#endif // defined(XR_USE_PLATFORM_WIN32)
|
||||||
|
|
||||||
|
// ---- XR_FB_spatial_entity_sharing extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrShareSpacesFB", (PFN_xrVoidFunction*)&table->ShareSpacesFB));
|
||||||
|
|
||||||
// ---- XR_FB_scene extension commands
|
// ---- XR_FB_scene extension commands
|
||||||
(get_inst_proc_addr(instance, "xrGetSpaceBoundingBox2DFB", (PFN_xrVoidFunction*)&table->GetSpaceBoundingBox2DFB));
|
(get_inst_proc_addr(instance, "xrGetSpaceBoundingBox2DFB", (PFN_xrVoidFunction*)&table->GetSpaceBoundingBox2DFB));
|
||||||
(get_inst_proc_addr(instance, "xrGetSpaceBoundingBox3DFB", (PFN_xrVoidFunction*)&table->GetSpaceBoundingBox3DFB));
|
(get_inst_proc_addr(instance, "xrGetSpaceBoundingBox3DFB", (PFN_xrVoidFunction*)&table->GetSpaceBoundingBox3DFB));
|
||||||
|
@ -364,24 +379,86 @@ void GeneratedXrPopulateDispatchTable(struct XrGeneratedDispatchTable *table,
|
||||||
// ---- XR_ALMALENCE_digital_lens_control extension commands
|
// ---- XR_ALMALENCE_digital_lens_control extension commands
|
||||||
(get_inst_proc_addr(instance, "xrSetDigitalLensControlALMALENCE", (PFN_xrVoidFunction*)&table->SetDigitalLensControlALMALENCE));
|
(get_inst_proc_addr(instance, "xrSetDigitalLensControlALMALENCE", (PFN_xrVoidFunction*)&table->SetDigitalLensControlALMALENCE));
|
||||||
|
|
||||||
|
// ---- XR_FB_scene_capture extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrRequestSceneCaptureFB", (PFN_xrVoidFunction*)&table->RequestSceneCaptureFB));
|
||||||
|
|
||||||
// ---- XR_FB_spatial_entity_container extension commands
|
// ---- XR_FB_spatial_entity_container extension commands
|
||||||
(get_inst_proc_addr(instance, "xrGetSpaceContainerFB", (PFN_xrVoidFunction*)&table->GetSpaceContainerFB));
|
(get_inst_proc_addr(instance, "xrGetSpaceContainerFB", (PFN_xrVoidFunction*)&table->GetSpaceContainerFB));
|
||||||
|
|
||||||
|
// ---- XR_META_foveation_eye_tracked extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrGetFoveationEyeTrackedStateMETA", (PFN_xrVoidFunction*)&table->GetFoveationEyeTrackedStateMETA));
|
||||||
|
|
||||||
|
// ---- XR_FB_face_tracking extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrCreateFaceTrackerFB", (PFN_xrVoidFunction*)&table->CreateFaceTrackerFB));
|
||||||
|
(get_inst_proc_addr(instance, "xrDestroyFaceTrackerFB", (PFN_xrVoidFunction*)&table->DestroyFaceTrackerFB));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetFaceExpressionWeightsFB", (PFN_xrVoidFunction*)&table->GetFaceExpressionWeightsFB));
|
||||||
|
|
||||||
|
// ---- XR_FB_eye_tracking_social extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrCreateEyeTrackerFB", (PFN_xrVoidFunction*)&table->CreateEyeTrackerFB));
|
||||||
|
(get_inst_proc_addr(instance, "xrDestroyEyeTrackerFB", (PFN_xrVoidFunction*)&table->DestroyEyeTrackerFB));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetEyeGazesFB", (PFN_xrVoidFunction*)&table->GetEyeGazesFB));
|
||||||
|
|
||||||
// ---- XR_FB_passthrough_keyboard_hands extension commands
|
// ---- XR_FB_passthrough_keyboard_hands extension commands
|
||||||
(get_inst_proc_addr(instance, "xrPassthroughLayerSetKeyboardHandsIntensityFB", (PFN_xrVoidFunction*)&table->PassthroughLayerSetKeyboardHandsIntensityFB));
|
(get_inst_proc_addr(instance, "xrPassthroughLayerSetKeyboardHandsIntensityFB", (PFN_xrVoidFunction*)&table->PassthroughLayerSetKeyboardHandsIntensityFB));
|
||||||
|
|
||||||
|
// ---- XR_FB_haptic_pcm extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrGetDeviceSampleRateFB", (PFN_xrVoidFunction*)&table->GetDeviceSampleRateFB));
|
||||||
|
|
||||||
|
// ---- XR_META_virtual_keyboard extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrCreateVirtualKeyboardMETA", (PFN_xrVoidFunction*)&table->CreateVirtualKeyboardMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrDestroyVirtualKeyboardMETA", (PFN_xrVoidFunction*)&table->DestroyVirtualKeyboardMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrCreateVirtualKeyboardSpaceMETA", (PFN_xrVoidFunction*)&table->CreateVirtualKeyboardSpaceMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrSuggestVirtualKeyboardLocationMETA", (PFN_xrVoidFunction*)&table->SuggestVirtualKeyboardLocationMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetVirtualKeyboardScaleMETA", (PFN_xrVoidFunction*)&table->GetVirtualKeyboardScaleMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrSetVirtualKeyboardModelVisibilityMETA", (PFN_xrVoidFunction*)&table->SetVirtualKeyboardModelVisibilityMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetVirtualKeyboardModelAnimationStatesMETA", (PFN_xrVoidFunction*)&table->GetVirtualKeyboardModelAnimationStatesMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetVirtualKeyboardDirtyTexturesMETA", (PFN_xrVoidFunction*)&table->GetVirtualKeyboardDirtyTexturesMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetVirtualKeyboardTextureDataMETA", (PFN_xrVoidFunction*)&table->GetVirtualKeyboardTextureDataMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrSendVirtualKeyboardInputMETA", (PFN_xrVoidFunction*)&table->SendVirtualKeyboardInputMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrChangeVirtualKeyboardTextContextMETA", (PFN_xrVoidFunction*)&table->ChangeVirtualKeyboardTextContextMETA));
|
||||||
|
|
||||||
|
// ---- XR_OCULUS_external_camera extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrEnumerateExternalCamerasOCULUS", (PFN_xrVoidFunction*)&table->EnumerateExternalCamerasOCULUS));
|
||||||
|
|
||||||
// ---- XR_META_performance_metrics extension commands
|
// ---- XR_META_performance_metrics extension commands
|
||||||
(get_inst_proc_addr(instance, "xrEnumeratePerformanceMetricsCounterPathsMETA", (PFN_xrVoidFunction*)&table->EnumeratePerformanceMetricsCounterPathsMETA));
|
(get_inst_proc_addr(instance, "xrEnumeratePerformanceMetricsCounterPathsMETA", (PFN_xrVoidFunction*)&table->EnumeratePerformanceMetricsCounterPathsMETA));
|
||||||
(get_inst_proc_addr(instance, "xrSetPerformanceMetricsStateMETA", (PFN_xrVoidFunction*)&table->SetPerformanceMetricsStateMETA));
|
(get_inst_proc_addr(instance, "xrSetPerformanceMetricsStateMETA", (PFN_xrVoidFunction*)&table->SetPerformanceMetricsStateMETA));
|
||||||
(get_inst_proc_addr(instance, "xrGetPerformanceMetricsStateMETA", (PFN_xrVoidFunction*)&table->GetPerformanceMetricsStateMETA));
|
(get_inst_proc_addr(instance, "xrGetPerformanceMetricsStateMETA", (PFN_xrVoidFunction*)&table->GetPerformanceMetricsStateMETA));
|
||||||
(get_inst_proc_addr(instance, "xrQueryPerformanceMetricsCounterMETA", (PFN_xrVoidFunction*)&table->QueryPerformanceMetricsCounterMETA));
|
(get_inst_proc_addr(instance, "xrQueryPerformanceMetricsCounterMETA", (PFN_xrVoidFunction*)&table->QueryPerformanceMetricsCounterMETA));
|
||||||
|
|
||||||
|
// ---- XR_FB_spatial_entity_storage_batch extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrSaveSpaceListFB", (PFN_xrVoidFunction*)&table->SaveSpaceListFB));
|
||||||
|
|
||||||
|
// ---- XR_FB_spatial_entity_user extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrCreateSpaceUserFB", (PFN_xrVoidFunction*)&table->CreateSpaceUserFB));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetSpaceUserIdFB", (PFN_xrVoidFunction*)&table->GetSpaceUserIdFB));
|
||||||
|
(get_inst_proc_addr(instance, "xrDestroySpaceUserFB", (PFN_xrVoidFunction*)&table->DestroySpaceUserFB));
|
||||||
|
|
||||||
|
// ---- XR_META_passthrough_color_lut extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrCreatePassthroughColorLutMETA", (PFN_xrVoidFunction*)&table->CreatePassthroughColorLutMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrDestroyPassthroughColorLutMETA", (PFN_xrVoidFunction*)&table->DestroyPassthroughColorLutMETA));
|
||||||
|
(get_inst_proc_addr(instance, "xrUpdatePassthroughColorLutMETA", (PFN_xrVoidFunction*)&table->UpdatePassthroughColorLutMETA));
|
||||||
|
|
||||||
|
// ---- XR_QCOM_tracking_optimization_settings extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrSetTrackingOptimizationSettingsHintQCOM", (PFN_xrVoidFunction*)&table->SetTrackingOptimizationSettingsHintQCOM));
|
||||||
|
|
||||||
// ---- XR_HTC_passthrough extension commands
|
// ---- XR_HTC_passthrough extension commands
|
||||||
(get_inst_proc_addr(instance, "xrCreatePassthroughHTC", (PFN_xrVoidFunction*)&table->CreatePassthroughHTC));
|
(get_inst_proc_addr(instance, "xrCreatePassthroughHTC", (PFN_xrVoidFunction*)&table->CreatePassthroughHTC));
|
||||||
(get_inst_proc_addr(instance, "xrDestroyPassthroughHTC", (PFN_xrVoidFunction*)&table->DestroyPassthroughHTC));
|
(get_inst_proc_addr(instance, "xrDestroyPassthroughHTC", (PFN_xrVoidFunction*)&table->DestroyPassthroughHTC));
|
||||||
|
|
||||||
// ---- XR_HTC_foveation extension commands
|
// ---- XR_HTC_foveation extension commands
|
||||||
(get_inst_proc_addr(instance, "xrApplyFoveationHTC", (PFN_xrVoidFunction*)&table->ApplyFoveationHTC));
|
(get_inst_proc_addr(instance, "xrApplyFoveationHTC", (PFN_xrVoidFunction*)&table->ApplyFoveationHTC));
|
||||||
|
|
||||||
|
// ---- XR_MNDX_force_feedback_curl extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrApplyForceFeedbackCurlMNDX", (PFN_xrVoidFunction*)&table->ApplyForceFeedbackCurlMNDX));
|
||||||
|
|
||||||
|
// ---- XR_EXT_plane_detection extension commands
|
||||||
|
(get_inst_proc_addr(instance, "xrCreatePlaneDetectorEXT", (PFN_xrVoidFunction*)&table->CreatePlaneDetectorEXT));
|
||||||
|
(get_inst_proc_addr(instance, "xrDestroyPlaneDetectorEXT", (PFN_xrVoidFunction*)&table->DestroyPlaneDetectorEXT));
|
||||||
|
(get_inst_proc_addr(instance, "xrBeginPlaneDetectionEXT", (PFN_xrVoidFunction*)&table->BeginPlaneDetectionEXT));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetPlaneDetectionStateEXT", (PFN_xrVoidFunction*)&table->GetPlaneDetectionStateEXT));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetPlaneDetectionsEXT", (PFN_xrVoidFunction*)&table->GetPlaneDetectionsEXT));
|
||||||
|
(get_inst_proc_addr(instance, "xrGetPlanePolygonBufferEXT", (PFN_xrVoidFunction*)&table->GetPlanePolygonBufferEXT));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
@ -6,7 +6,7 @@
|
||||||
// See utility_source_generator.py for modifications
|
// See utility_source_generator.py for modifications
|
||||||
// ************************************************************
|
// ************************************************************
|
||||||
|
|
||||||
// Copyright (c) 2017-2022, The Khronos Group Inc.
|
// Copyright (c) 2017-2023, The Khronos Group Inc.
|
||||||
// Copyright (c) 2017-2019 Valve Corporation
|
// Copyright (c) 2017-2019 Valve Corporation
|
||||||
// Copyright (c) 2017-2019 LunarG, Inc.
|
// Copyright (c) 2017-2019 LunarG, Inc.
|
||||||
//
|
//
|
||||||
|
@ -239,6 +239,12 @@ struct XrGeneratedDispatchTable {
|
||||||
PFN_xrUpdateSwapchainFB UpdateSwapchainFB;
|
PFN_xrUpdateSwapchainFB UpdateSwapchainFB;
|
||||||
PFN_xrGetSwapchainStateFB GetSwapchainStateFB;
|
PFN_xrGetSwapchainStateFB GetSwapchainStateFB;
|
||||||
|
|
||||||
|
// ---- XR_FB_body_tracking extension commands
|
||||||
|
PFN_xrCreateBodyTrackerFB CreateBodyTrackerFB;
|
||||||
|
PFN_xrDestroyBodyTrackerFB DestroyBodyTrackerFB;
|
||||||
|
PFN_xrLocateBodyJointsFB LocateBodyJointsFB;
|
||||||
|
PFN_xrGetBodySkeletonFB GetBodySkeletonFB;
|
||||||
|
|
||||||
// ---- XR_MSFT_scene_understanding extension commands
|
// ---- XR_MSFT_scene_understanding extension commands
|
||||||
PFN_xrEnumerateSceneComputeFeaturesMSFT EnumerateSceneComputeFeaturesMSFT;
|
PFN_xrEnumerateSceneComputeFeaturesMSFT EnumerateSceneComputeFeaturesMSFT;
|
||||||
PFN_xrCreateSceneObserverMSFT CreateSceneObserverMSFT;
|
PFN_xrCreateSceneObserverMSFT CreateSceneObserverMSFT;
|
||||||
|
@ -332,6 +338,11 @@ struct XrGeneratedDispatchTable {
|
||||||
// ---- XR_VARJO_view_offset extension commands
|
// ---- XR_VARJO_view_offset extension commands
|
||||||
PFN_xrSetViewOffsetVARJO SetViewOffsetVARJO;
|
PFN_xrSetViewOffsetVARJO SetViewOffsetVARJO;
|
||||||
|
|
||||||
|
// ---- XR_ML_compat extension commands
|
||||||
|
#if defined(XR_USE_PLATFORM_ML)
|
||||||
|
PFN_xrCreateSpaceFromCoordinateFrameUIDML CreateSpaceFromCoordinateFrameUIDML;
|
||||||
|
#endif // defined(XR_USE_PLATFORM_ML)
|
||||||
|
|
||||||
// ---- XR_MSFT_spatial_anchor_persistence extension commands
|
// ---- XR_MSFT_spatial_anchor_persistence extension commands
|
||||||
PFN_xrCreateSpatialAnchorStoreConnectionMSFT CreateSpatialAnchorStoreConnectionMSFT;
|
PFN_xrCreateSpatialAnchorStoreConnectionMSFT CreateSpatialAnchorStoreConnectionMSFT;
|
||||||
PFN_xrDestroySpatialAnchorStoreConnectionMSFT DestroySpatialAnchorStoreConnectionMSFT;
|
PFN_xrDestroySpatialAnchorStoreConnectionMSFT DestroySpatialAnchorStoreConnectionMSFT;
|
||||||
|
@ -357,6 +368,9 @@ struct XrGeneratedDispatchTable {
|
||||||
PFN_xrGetAudioInputDeviceGuidOculus GetAudioInputDeviceGuidOculus;
|
PFN_xrGetAudioInputDeviceGuidOculus GetAudioInputDeviceGuidOculus;
|
||||||
#endif // defined(XR_USE_PLATFORM_WIN32)
|
#endif // defined(XR_USE_PLATFORM_WIN32)
|
||||||
|
|
||||||
|
// ---- XR_FB_spatial_entity_sharing extension commands
|
||||||
|
PFN_xrShareSpacesFB ShareSpacesFB;
|
||||||
|
|
||||||
// ---- XR_FB_scene extension commands
|
// ---- XR_FB_scene extension commands
|
||||||
PFN_xrGetSpaceBoundingBox2DFB GetSpaceBoundingBox2DFB;
|
PFN_xrGetSpaceBoundingBox2DFB GetSpaceBoundingBox2DFB;
|
||||||
PFN_xrGetSpaceBoundingBox3DFB GetSpaceBoundingBox3DFB;
|
PFN_xrGetSpaceBoundingBox3DFB GetSpaceBoundingBox3DFB;
|
||||||
|
@ -367,24 +381,86 @@ struct XrGeneratedDispatchTable {
|
||||||
// ---- XR_ALMALENCE_digital_lens_control extension commands
|
// ---- XR_ALMALENCE_digital_lens_control extension commands
|
||||||
PFN_xrSetDigitalLensControlALMALENCE SetDigitalLensControlALMALENCE;
|
PFN_xrSetDigitalLensControlALMALENCE SetDigitalLensControlALMALENCE;
|
||||||
|
|
||||||
|
// ---- XR_FB_scene_capture extension commands
|
||||||
|
PFN_xrRequestSceneCaptureFB RequestSceneCaptureFB;
|
||||||
|
|
||||||
// ---- XR_FB_spatial_entity_container extension commands
|
// ---- XR_FB_spatial_entity_container extension commands
|
||||||
PFN_xrGetSpaceContainerFB GetSpaceContainerFB;
|
PFN_xrGetSpaceContainerFB GetSpaceContainerFB;
|
||||||
|
|
||||||
|
// ---- XR_META_foveation_eye_tracked extension commands
|
||||||
|
PFN_xrGetFoveationEyeTrackedStateMETA GetFoveationEyeTrackedStateMETA;
|
||||||
|
|
||||||
|
// ---- XR_FB_face_tracking extension commands
|
||||||
|
PFN_xrCreateFaceTrackerFB CreateFaceTrackerFB;
|
||||||
|
PFN_xrDestroyFaceTrackerFB DestroyFaceTrackerFB;
|
||||||
|
PFN_xrGetFaceExpressionWeightsFB GetFaceExpressionWeightsFB;
|
||||||
|
|
||||||
|
// ---- XR_FB_eye_tracking_social extension commands
|
||||||
|
PFN_xrCreateEyeTrackerFB CreateEyeTrackerFB;
|
||||||
|
PFN_xrDestroyEyeTrackerFB DestroyEyeTrackerFB;
|
||||||
|
PFN_xrGetEyeGazesFB GetEyeGazesFB;
|
||||||
|
|
||||||
// ---- XR_FB_passthrough_keyboard_hands extension commands
|
// ---- XR_FB_passthrough_keyboard_hands extension commands
|
||||||
PFN_xrPassthroughLayerSetKeyboardHandsIntensityFB PassthroughLayerSetKeyboardHandsIntensityFB;
|
PFN_xrPassthroughLayerSetKeyboardHandsIntensityFB PassthroughLayerSetKeyboardHandsIntensityFB;
|
||||||
|
|
||||||
|
// ---- XR_FB_haptic_pcm extension commands
|
||||||
|
PFN_xrGetDeviceSampleRateFB GetDeviceSampleRateFB;
|
||||||
|
|
||||||
|
// ---- XR_META_virtual_keyboard extension commands
|
||||||
|
PFN_xrCreateVirtualKeyboardMETA CreateVirtualKeyboardMETA;
|
||||||
|
PFN_xrDestroyVirtualKeyboardMETA DestroyVirtualKeyboardMETA;
|
||||||
|
PFN_xrCreateVirtualKeyboardSpaceMETA CreateVirtualKeyboardSpaceMETA;
|
||||||
|
PFN_xrSuggestVirtualKeyboardLocationMETA SuggestVirtualKeyboardLocationMETA;
|
||||||
|
PFN_xrGetVirtualKeyboardScaleMETA GetVirtualKeyboardScaleMETA;
|
||||||
|
PFN_xrSetVirtualKeyboardModelVisibilityMETA SetVirtualKeyboardModelVisibilityMETA;
|
||||||
|
PFN_xrGetVirtualKeyboardModelAnimationStatesMETA GetVirtualKeyboardModelAnimationStatesMETA;
|
||||||
|
PFN_xrGetVirtualKeyboardDirtyTexturesMETA GetVirtualKeyboardDirtyTexturesMETA;
|
||||||
|
PFN_xrGetVirtualKeyboardTextureDataMETA GetVirtualKeyboardTextureDataMETA;
|
||||||
|
PFN_xrSendVirtualKeyboardInputMETA SendVirtualKeyboardInputMETA;
|
||||||
|
PFN_xrChangeVirtualKeyboardTextContextMETA ChangeVirtualKeyboardTextContextMETA;
|
||||||
|
|
||||||
|
// ---- XR_OCULUS_external_camera extension commands
|
||||||
|
PFN_xrEnumerateExternalCamerasOCULUS EnumerateExternalCamerasOCULUS;
|
||||||
|
|
||||||
// ---- XR_META_performance_metrics extension commands
|
// ---- XR_META_performance_metrics extension commands
|
||||||
PFN_xrEnumeratePerformanceMetricsCounterPathsMETA EnumeratePerformanceMetricsCounterPathsMETA;
|
PFN_xrEnumeratePerformanceMetricsCounterPathsMETA EnumeratePerformanceMetricsCounterPathsMETA;
|
||||||
PFN_xrSetPerformanceMetricsStateMETA SetPerformanceMetricsStateMETA;
|
PFN_xrSetPerformanceMetricsStateMETA SetPerformanceMetricsStateMETA;
|
||||||
PFN_xrGetPerformanceMetricsStateMETA GetPerformanceMetricsStateMETA;
|
PFN_xrGetPerformanceMetricsStateMETA GetPerformanceMetricsStateMETA;
|
||||||
PFN_xrQueryPerformanceMetricsCounterMETA QueryPerformanceMetricsCounterMETA;
|
PFN_xrQueryPerformanceMetricsCounterMETA QueryPerformanceMetricsCounterMETA;
|
||||||
|
|
||||||
|
// ---- XR_FB_spatial_entity_storage_batch extension commands
|
||||||
|
PFN_xrSaveSpaceListFB SaveSpaceListFB;
|
||||||
|
|
||||||
|
// ---- XR_FB_spatial_entity_user extension commands
|
||||||
|
PFN_xrCreateSpaceUserFB CreateSpaceUserFB;
|
||||||
|
PFN_xrGetSpaceUserIdFB GetSpaceUserIdFB;
|
||||||
|
PFN_xrDestroySpaceUserFB DestroySpaceUserFB;
|
||||||
|
|
||||||
|
// ---- XR_META_passthrough_color_lut extension commands
|
||||||
|
PFN_xrCreatePassthroughColorLutMETA CreatePassthroughColorLutMETA;
|
||||||
|
PFN_xrDestroyPassthroughColorLutMETA DestroyPassthroughColorLutMETA;
|
||||||
|
PFN_xrUpdatePassthroughColorLutMETA UpdatePassthroughColorLutMETA;
|
||||||
|
|
||||||
|
// ---- XR_QCOM_tracking_optimization_settings extension commands
|
||||||
|
PFN_xrSetTrackingOptimizationSettingsHintQCOM SetTrackingOptimizationSettingsHintQCOM;
|
||||||
|
|
||||||
// ---- XR_HTC_passthrough extension commands
|
// ---- XR_HTC_passthrough extension commands
|
||||||
PFN_xrCreatePassthroughHTC CreatePassthroughHTC;
|
PFN_xrCreatePassthroughHTC CreatePassthroughHTC;
|
||||||
PFN_xrDestroyPassthroughHTC DestroyPassthroughHTC;
|
PFN_xrDestroyPassthroughHTC DestroyPassthroughHTC;
|
||||||
|
|
||||||
// ---- XR_HTC_foveation extension commands
|
// ---- XR_HTC_foveation extension commands
|
||||||
PFN_xrApplyFoveationHTC ApplyFoveationHTC;
|
PFN_xrApplyFoveationHTC ApplyFoveationHTC;
|
||||||
|
|
||||||
|
// ---- XR_MNDX_force_feedback_curl extension commands
|
||||||
|
PFN_xrApplyForceFeedbackCurlMNDX ApplyForceFeedbackCurlMNDX;
|
||||||
|
|
||||||
|
// ---- XR_EXT_plane_detection extension commands
|
||||||
|
PFN_xrCreatePlaneDetectorEXT CreatePlaneDetectorEXT;
|
||||||
|
PFN_xrDestroyPlaneDetectorEXT DestroyPlaneDetectorEXT;
|
||||||
|
PFN_xrBeginPlaneDetectionEXT BeginPlaneDetectionEXT;
|
||||||
|
PFN_xrGetPlaneDetectionStateEXT GetPlaneDetectionStateEXT;
|
||||||
|
PFN_xrGetPlaneDetectionsEXT GetPlaneDetectionsEXT;
|
||||||
|
PFN_xrGetPlanePolygonBufferEXT GetPlanePolygonBufferEXT;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue