Skip to content

Commit 6aa66b5

Browse files
committed
OpenXR SDK 1.1.52 (2025-09-19)
This release contains a new ratified Khronos extension, a new vendor extension, fixes for issues in the XML registry, and API layer improvements. - SDK - Improvement: Adjust the enabled clang-tidy checks after resolving some minor identified warnings. (internal MR 3898) - Layers: Fix: Skip checking members other than type and next on structs marked returnedonly="true" in core validation layer. (internal MR 3973) - Layers: Fix: Rename KHR_best_practices_validation -> KHRONOS_best_practices_validation (internal MR 3984) - Loader: Improvement: Further clean up defines related to XR_KHR_loader_init. (internal MR 3937, internal MR 3948) - Registry - New ratified Khronos extension: XR_KHR_generic_controller (internal MR 3018) - Update: Ratified XR_EXT_debug_utils (internal MR 3899) - Update: Ratified XR_EXT_render_model (internal MR 3900) - Update: Ratified XR_EXT_interaction_render_model (internal MR 3901) - New vendor extension: XR_META_spatial_entity_discovery. (internal MR 2880, internal MR 4001) - Change: Revert XrTrackablePlaneANDROID::vertexCountOutput to a pointer, and increment extension version number. (internal MR 3998) - Chore: Reserve numbers for extensions. (internal MR 4004) - Fix: Add XML for missing grip_surface paths for “/interaction_profiles/ext/hand_interaction_ext”. Note that these paths were already listed in the spec prose. Update XR_EXT_hand_interaction extension version to 2 for clarity. (internal MR 3963) - Fix: Mark a few structure members that are bitmasks as optional, to match prose and/or usage intent. (internal MR 3973) - Fix: Mark XrCompositionLayerPassthroughFB.space as optional to match spec prose. (internal MR 3973) - Fix: Add XML for missing palm_ext/pose and grip_surface/pose paths for “/interaction_profiles/logitech/mx_ink_stylus_logitech”. Note that these paths were already listed in the spec prose. (internal MR 3996) GitOrigin-RevId: eb32eb01dc51e194ed0e4d2626a5cd8b78cb2c9b
1 parent 8e88ff2 commit 6aa66b5

File tree

22 files changed

+351
-149
lines changed

22 files changed

+351
-149
lines changed

.appveyor.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#
33
# SPDX-License-Identifier: Apache-2.0
44

5-
version: 1.1.51.{build}
5+
version: 1.1.52.{build}
66
image: Visual Studio 2017
77

88

CHANGELOG.SDK.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,57 @@ along with any public pull requests that have been accepted.
2121
In this repository in particular, since it is primarily software,
2222
pull requests may be integrated as they are accepted even between periodic updates.
2323

24+
## OpenXR SDK 1.1.52 (2025-09-19)
25+
26+
This release contains a new ratified Khronos extension, a new vendor extension,
27+
fixes for issues in the XML registry, and API layer improvements.
28+
29+
- SDK
30+
- Improvement: Adjust the enabled clang-tidy checks after resolving some minor
31+
identified warnings.
32+
([internal MR 3898](https://gitlab.khronos.org/openxr/openxr/merge_requests/3898))
33+
- Layers: Fix: Skip checking members other than `type` and `next` on structs
34+
marked `returnedonly="true"` in core validation layer.
35+
([internal MR 3973](https://gitlab.khronos.org/openxr/openxr/merge_requests/3973))
36+
- Layers: Fix: Rename `KHR_best_practices_validation` ->
37+
`KHRONOS_best_practices_validation`
38+
([internal MR 3984](https://gitlab.khronos.org/openxr/openxr/merge_requests/3984))
39+
- Loader: Improvement: Further clean up defines related to XR_KHR_loader_init.
40+
([internal MR 3937](https://gitlab.khronos.org/openxr/openxr/merge_requests/3937),
41+
[internal MR 3948](https://gitlab.khronos.org/openxr/openxr/merge_requests/3948))
42+
- Registry
43+
- New ratified Khronos extension: `XR_KHR_generic_controller`
44+
([internal MR 3018](https://gitlab.khronos.org/openxr/openxr/merge_requests/3018))
45+
- Update: Ratified `XR_EXT_debug_utils`
46+
([internal MR 3899](https://gitlab.khronos.org/openxr/openxr/merge_requests/3899))
47+
- Update: Ratified `XR_EXT_render_model`
48+
([internal MR 3900](https://gitlab.khronos.org/openxr/openxr/merge_requests/3900))
49+
- Update: Ratified `XR_EXT_interaction_render_model`
50+
([internal MR 3901](https://gitlab.khronos.org/openxr/openxr/merge_requests/3901))
51+
- New vendor extension: `XR_META_spatial_entity_discovery`.
52+
([internal MR 2880](https://gitlab.khronos.org/openxr/openxr/merge_requests/2880),
53+
[internal MR 4001](https://gitlab.khronos.org/openxr/openxr/merge_requests/4001))
54+
- Change: Revert `XrTrackablePlaneANDROID::vertexCountOutput` to a pointer, and
55+
increment extension version number.
56+
([internal MR 3998](https://gitlab.khronos.org/openxr/openxr/merge_requests/3998))
57+
- Chore: Reserve numbers for extensions.
58+
([internal MR 4004](https://gitlab.khronos.org/openxr/openxr/merge_requests/4004))
59+
- Fix: Add XML for missing `grip_surface` paths for
60+
"/interaction_profiles/ext/hand_interaction_ext". Note that these paths were
61+
already listed in the spec prose. Update `XR_EXT_hand_interaction` extension
62+
version to `2` for clarity.
63+
([internal MR 3963](https://gitlab.khronos.org/openxr/openxr/merge_requests/3963))
64+
- Fix: Mark a few structure members that are bitmasks as optional, to match prose
65+
and/or usage intent.
66+
([internal MR 3973](https://gitlab.khronos.org/openxr/openxr/merge_requests/3973))
67+
- Fix: Mark `XrCompositionLayerPassthroughFB.space` as optional to match spec
68+
prose.
69+
([internal MR 3973](https://gitlab.khronos.org/openxr/openxr/merge_requests/3973))
70+
- Fix: Add XML for missing `palm_ext/pose` and `grip_surface/pose` paths for
71+
"/interaction_profiles/logitech/mx_ink_stylus_logitech". Note that these paths
72+
were already listed in the spec prose.
73+
([internal MR 3996](https://gitlab.khronos.org/openxr/openxr/merge_requests/3996))
74+
2475
## OpenXR SDK 1.1.51 (2025-08-28)
2576

2677
This release adds a new API layer to assist developers in making an OpenXR

specification/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ endif
3939
VERSIONS := XR_VERSION_1_0 XR_VERSION_1_1 XR_LOADER_VERSION_1_0
4040
VERSIONOPTIONS := $(foreach version,$(VERSIONS),-feature $(version))
4141

42-
SPECREVISION = 1.1.51
42+
SPECREVISION = 1.1.52
4343
REVISION_COMPONENTS = $(subst ., ,$(SPECREVISION))
4444
MAJORMINORVER = $(word 1,$(REVISION_COMPONENTS)).$(word 2,$(REVISION_COMPONENTS))
4545

specification/registry/xr.xml

Lines changed: 217 additions & 51 deletions
Large diffs are not rendered by default.

src/api_layers/best_practices/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ configure_file(
2323

2424
gen_xr_layer_json(
2525
"${CMAKE_CURRENT_BINARY_DIR}/../XrApiLayer_best_practices_validation.json"
26-
KHR_best_practices_validation
26+
KHRONOS_best_practices_validation
2727
"$<TARGET_FILE_NAME:XrApiLayer_best_practices_validation>"
2828
1
2929
"API Layer to modify runtime behavior in conformant but perhaps unexpected ways"

src/api_layers/best_practices/best_practices_validation.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,6 @@ XRAPI_ATTR XrResult XRAPI_CALL BestPracticesLayerXrLocateViews(XrSession session
385385
XRAPI_ATTR XrResult XRAPI_CALL BestPracticesValidationLayerXrGetInstanceProcAddr(XrInstance instance, const char *name,
386386
PFN_xrVoidFunction *function) {
387387
try {
388-
std::string func_name = name;
389388
*function = BestPracticesLayerInnerGetInstanceProcAddr(name);
390389

391390
if (*function != nullptr) {
@@ -417,7 +416,7 @@ XRAPI_ATTR XrResult XRAPI_CALL BestPracticesXrCreateApiLayerInstance(const XrIns
417416
XR_LOADER_INTERFACE_STRUCT_API_LAYER_NEXT_INFO != apiLayerInfo->nextInfo->structType ||
418417
XR_API_LAYER_NEXT_INFO_STRUCT_VERSION > apiLayerInfo->nextInfo->structVersion ||
419418
sizeof(XrApiLayerNextInfo) > apiLayerInfo->nextInfo->structSize ||
420-
0 != strcmp("XR_APILAYER_KHR_best_practices_validation", apiLayerInfo->nextInfo->layerName) ||
419+
0 != strcmp("XR_APILAYER_KHRONOS_best_practices_validation", apiLayerInfo->nextInfo->layerName) ||
421420
nullptr == apiLayerInfo->nextInfo->nextGetInstanceProcAddr ||
422421
nullptr == apiLayerInfo->nextInfo->nextCreateApiLayerInstance) {
423422
return XR_ERROR_INITIALIZATION_FAILED;

src/common/hex_and_handles.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@ inline std::string to_hex(const uint8_t* const data, size_t bytes) {
3737

3838
template <typename T>
3939
inline std::string to_hex(const T& data) {
40-
return to_hex(reinterpret_cast<const uint8_t* const>(&data), sizeof(data));
40+
return to_hex(reinterpret_cast<const uint8_t* const>(&data), sizeof(T));
41+
}
42+
43+
template <typename T>
44+
inline std::string to_hex(T* const data) {
45+
return to_hex(reinterpret_cast<const uint8_t* const>(&data), sizeof(T*));
4146
}
4247

4348
#if XR_PTR_SIZE == 8

src/loader/CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,9 +97,6 @@ set_target_properties(
9797
openxr_loader PROPERTIES DEBUG_POSTFIX "${OPENXR_DEBUG_POSTFIX}"
9898
)
9999

100-
# All platforms can now do something with the XR_KHR_loader_init extension.
101-
target_compile_definitions(openxr_loader PRIVATE XR_KHR_LOADER_INIT_SUPPORT=1)
102-
103100
# TODO remove once we get rid of add_definitions()
104101
if(Vulkan_FOUND)
105102
target_include_directories(openxr_loader PRIVATE ${Vulkan_INCLUDE_DIR})

src/loader/api_layer_interface.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ XrResult ApiLayerInterface::LoadApiLayers(const std::string& openxr_command, uin
288288
LoaderLogger::LogWarningMessage(openxr_command, warning_message);
289289
continue;
290290
}
291-
#ifdef XR_HAS_REQUIRED_PLATFORM_LOADER_INIT_STRUCT // _platform_info is only available on some platforms.
291+
#if defined(XR_HAS_REQUIRED_PLATFORM_LOADER_INIT_STRUCT) // Cannot proceed without mandatory xrInitializeLoaderKHR call.
292292
if (!LoaderInitData::instance().initialized()) {
293293
LoaderLogger::LogErrorMessage(openxr_command, "ApiLayerInterface::LoadApiLayers skipping manifest file " +
294294
manifest_file->Filename() +

src/loader/loader_core.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ inline bool IsMissingNullTerminator(const char (&str)[max_length]) {
7575
}
7676

7777
// ---- Core 1.0 manual loader trampoline functions
78-
#ifdef XR_KHR_LOADER_INIT_SUPPORT // platforms that support XR_KHR_loader_init.
7978
static XRAPI_ATTR XrResult XRAPI_CALL LoaderXrInitializeLoaderKHR(const XrLoaderInitInfoBaseHeaderKHR *);
8079

8180
static XRAPI_ATTR XrResult XRAPI_CALL LoaderXrInitializeLoaderKHR(const XrLoaderInitInfoBaseHeaderKHR *loaderInitInfo)
@@ -84,7 +83,6 @@ static XRAPI_ATTR XrResult XRAPI_CALL LoaderXrInitializeLoaderKHR(const XrLoader
8483
return InitializeLoaderInitData(loaderInitInfo);
8584
}
8685
XRLOADER_ABI_CATCH_FALLBACK
87-
#endif
8886

8987
static XRAPI_ATTR XrResult XRAPI_CALL LoaderXrEnumerateApiLayerProperties(uint32_t propertyCapacityInput,
9088
uint32_t *propertyCountOutput,
@@ -761,12 +759,8 @@ XRAPI_ATTR XrResult XRAPI_CALL LoaderXrGetInstanceProcAddr(XrInstance instance,
761759
*function = reinterpret_cast<PFN_xrVoidFunction>(LoaderXrGetInstanceProcAddr);
762760
return XR_SUCCESS;
763761
} else if (strcmp(name, "xrInitializeLoaderKHR") == 0) {
764-
#ifdef XR_KHR_LOADER_INIT_SUPPORT
765762
*function = reinterpret_cast<PFN_xrVoidFunction>(LoaderXrInitializeLoaderKHR);
766763
return XR_SUCCESS;
767-
#else
768-
return XR_ERROR_FUNCTION_UNSUPPORTED;
769-
#endif
770764
} else if (strcmp(name, "xrEnumerateApiLayerProperties") == 0) {
771765
*function = reinterpret_cast<PFN_xrVoidFunction>(LoaderXrEnumerateApiLayerProperties);
772766
return XR_SUCCESS;
@@ -845,3 +839,7 @@ LOADER_EXPORT XRAPI_ATTR XrResult XRAPI_CALL xrGetInstanceProcAddr(XrInstance in
845839
PFN_xrVoidFunction *function) {
846840
return LoaderXrGetInstanceProcAddr(instance, name, function);
847841
}
842+
843+
LOADER_EXPORT XRAPI_ATTR XrResult XRAPI_CALL xrInitializeLoaderKHR(const XrLoaderInitInfoBaseHeaderKHR *loaderInitInfo) {
844+
return LoaderXrInitializeLoaderKHR(loaderInitInfo);
845+
}

0 commit comments

Comments
 (0)