Skip to content

Latest commit

 

History

History
2563 lines (2390 loc) · 156 KB

CHANGELOG.SDK.md

File metadata and controls

2563 lines (2390 loc) · 156 KB

Changelog for OpenXR-SDK-Source and OpenXR-SDK Repo

Update log for the OpenXR-SDK-Source and OpenXR-SDK repo on GitHub. Updates are in reverse chronological order starting with the latest public release.

Note that only changes relating to the loader and some of the build changes will affect the OpenXR-SDK repository. Changes mentioned in this changelog related to hello_xr, API layers, and the loader tests do not apply to the OpenXR-SDK repository.

This summarizes the periodic public updates, not individual commits. Updates on GitHub are generally done as single large patches at the release point, collecting together the resolution of many Khronos internal issues, along with any public pull requests that have been accepted. In this repository in particular, since it is primarily software, pull requests may be integrated as they are accepted even between periodic updates.

OpenXR SDK 1.1.42 (2024-10-25)

This release updates a vendor extension with renamed enumerants, adds architecture support for loong64, and delivers substantial improvements and fixes to the XML registry, particularly the description of interaction profile

  • Registry
    • Fix: Update schema to reflect that XrPathString_t should allow dash in interaction profile paths. (internal MR 3493)
    • Fix: XR_VARJO_xr4_controller_interaction did not properly define its interaction profile in XML. (internal MR 3493, internal MR 3548)
    • Fix: Correct XML description of OpenXR 1.1 related additions to the promoted Meta Touch Plus, Touch Pro, and Touch (Rift CV1) controller interaction profiles. (internal MR 3513, internal issue 2350, internal issue 2375)
    • Fix: Add missing XML description of EXT_hand_interaction additions to several interaction profiles, and add comments to clarify where profile additions should be located. (internal MR 3517, internal MR 3541, internal MR 3552)
    • Fix: Corrections to the Schema chapter of the style guide. (internal MR 3521)
    • Improvement: Small consistency clean-up. (internal MR 3512)
    • Improvement: Clean up .rnc schema to improve readability. (internal MR 3521)
    • Scripts: Improve update_version.py used in release process. (internal MR 3543)
    • Update: Change naming convention in XR_HTC_facial_expression: rename XR_LIP_EXPRESSION_MOUTH_SMILE_RIGHT_HTC to XR_LIP_EXPRESSION_MOUTH_RAISER_RIGHT_HTC, XR_LIP_EXPRESSION_MOUTH_SMILE_LEFT_HTC to XR_LIP_EXPRESSION_MOUTH_RAISER_LEFT_HTC, XR_LIP_EXPRESSION_MOUTH_SAD_RIGHT_HTC to XR_LIP_EXPRESSION_MOUTH_STRETCHER_RIGHT_HTC and XR_LIP_EXPRESSION_MOUTH_SAD_LEFT_HTC to XR_LIP_EXPRESSION_MOUTH_STRETCHER_LEFT_HTC, providing the old names as compatibility aliases. (internal MR 3408)
  • SDK
    • Loader: Fix build error on loong64, and add loong64 in the architecture table in the loader documentation. (OpenXR-SDK-Source PR 479)

OpenXR SDK 1.1.41 (2024-09-25)

This release features several new vendor extensions, as well as some small improvements and fixes to the software.

  • Registry
    • Change: Allow structs that can extend multiple other structs in the RelaxNG schema, as already permitted by the Vulkan schema. (internal MR 2869)
    • New vendor extension: XR_HTC_body_tracking (internal MR 2549)
    • New vendor extension: XR_ML_spatial_anchors (internal MR 2803)
    • New vendor extension: XR_ML_spatial_anchors_storage (internal MR 2804)
    • New vendor extension: XR_ML_system_notifications (internal MR 2946)
    • New vendor extension: XR_ML_world_mesh_detection (internal MR 2950)
    • New vendor extension: XR_ML_view_configuration_depth_range_change (internal MR 3036)
  • SDK
    • Fix: Do not enforce overly-strict requirements on structs using *BaseHeader types in the code generation scripts, fixing a build-time warning for the layers. (internal MR 3434)
    • Improvement: Migrate CMake build system away from using find_package(PythonInterpreter), deprecated since CMake 3.12. Use find_package(Python3 COMPONENTS Interpreter) instead. (OpenXR-SDK-Source PR 486, internal MR 3472)
    • Validation layer: Improvement: Clean up generate_vuid_database script, used to analyze the validation layer. (internal MR 2895)
    • ci: Remove now-redundant gradle-wrapper-validation job from GitHub Actions (OpenXR-SDK-Source PR 500)
    • ci: Add GitHub Action for macOS building (OpenXR-SDK-Source PR 501)
    • doc: Add command to build OpenXR targets on macOS (OpenXR-SDK-Source PR 501)
    • hello_xr: Addition: Log Vulkan extensions requested by runtime and by app, visible when running with --verbose. (OpenXR-SDK-Source PR 403)

OpenXR SDK 1.1.40 (2024-08-22)

This release features a new ratified graphics API binding extension, XR_KHR_metal_enable, including support in hello_xr. The loader test has had substantial improvements as well. There are also an assortment of smaller fixes and improvements.

  • Registry
    • Add: New ratified Khronos extension: XR_KHR_metal_enable. (internal MR 2721)
    • Chore: Reserve 15 extension id numbers for ByteDance. (internal MR 3409)
    • Fix: Clarified that views in XR_VARJO_quad_views needs to have identical poses for each eye. (internal MR 3396)
    • Fix: Add missing interaction profile extensions for OpenXR 1.1 promoted Meta interaction profiles. (internal MR 3398)
    • Fix: Correctly mark the Magic Leap home button as a system button in the XML. (internal MR 3405)
    • Fix: Add XR_ERROR_VALIDATION_FAILURE to all functions from XR_EXT_conformance_automation. (internal MR 3417)
  • SDK
    • API dump layer: Improvement: Move a non-generated function out of the Python- generated source file. (internal MR 3336)
    • API dump layer: Improvement: Clean up usage of RAII mutex lock guards. (internal MR 3336)
    • Layers and loader: Improvement: Disambiguate XrGeneratedDispatchTable between loader and API layers. (internal MR 3406)
    • Loader test: Improvement: Migrate to use Catch2 (matching the CTS) instead of an ad-hoc test framework. (internal MR 3337)
    • hello_xr: Add: Metal graphics plugin (use -g Metal) for running it on macOS with XR_KHR_metal_enable extension. (internal MR 3009, internal MR 3456)
    • hello_xr: Improvement: Use XrMatrix4x4f_CreateFromRigidTransform in place of XrMatrix4x4f_CreateTranslationRotationScale for known rigid transforms. (internal MR 3349)

Note: There is no 1.1.39 release: it was skipped to keep the monthly patch version increment cadence given the lack of a release in July.

OpenXR SDK 1.1.38 (2024-06-09)

This is a fairly small release, with one new extension and a handful of fixes.

  • Registry
    • Addition: New multi-vendor extension: XR_EXT_composition_layer_inverted_alpha (internal MR 3085, internal MR 3385)
    • Chore: Reserve an extension for Logitech. (internal MR 3384)
    • Chore: Register author tag for Deep Mirror. (OpenXR-Docs PR 171)
    • Fix: XrCompositionLayerPassthroughFB has a "parentstruct" of XrCompositionLayerBaseHeader (it is based on this type), rather than "structextends" (in the next chain). Bump extension revision. (internal MR 3305)
    • Fix: XR_EXT_plane_detection: Fix extents description and plane axis to match CTS and implementations. (internal MR 3374, internal issue 2281)
    • Fix: Correct typo in XR_FB_keyboard_tracking flag description. (internal MR 3393)
  • SDK
    • No significant changes

OpenXR SDK 1.1.37 (2024-05-23)

This release primarily adds new defines for easier use of both OpenXR 1.0 and 1.1 with up-to-date headers, some documentation improvements, and improvements for Android, including support for using the "API Dump" and "Validation" API layers in your own APK during the development process.

OpenXR SDK 1.1.36 (2024-04-15)

This is a substantial update to the OpenXR specification. The OpenXR loader in this release supports both OpenXR 1.0 and 1.1, and sample applications such as hello_xr continue to only require OpenXR 1.0. The schema associated with the xr.xml description of OpenXR has received a small but breaking change, so software that parses it may need an update accordingly. Additionally, the protocol for the OpenXR loader on Android to communicate with system or installable runtime brokers has been extended for improvfed backward- and forward-compatibility; see the changes to the loader design document for more information.

  • Registry
    • New ratified Khronos extension: XR_KHR_locate_spaces (internal MR 2272, internal issue 1706)
    • New ratified Khronos extension: XR_KHR_maintenance1 (internal MR 3053)
    • New ratified OpenXR version: XR_VERSION_1_1 - OpenXR 1.1. (internal MR 3053)
    • New multi-vendor extension: XR_EXT_future (internal MR 2610)
    • New vendor extension: XR_META_environment_depth (internal MR 2771, internal MR 3271)
    • Mark XR_OCULUS_android_session_state_enable as deprecated. (internal MR 3255)
    • Update the XML schema to change how dependencies are described (replacing requiresCore and requires attributes of extension, and feature and extension attributes of require, with a new depends attribute.). This is a breaking change of the XML schema, though in an infrequently processed attribute. This corresponds to the change made in Vulkan 1.3.241. (internal MR 3260)
  • SDK
    • API dump layer: Handle opaque futures defined by XR_EXT_future. (internal MR 2610)
    • API dump layer: Zero initialize out-param in calls to xrResultToString and xrStructureTypeToString. (internal MR 3284)
    • Android loader: Build using NDK 23.2. (internal MR 2992)
    • Android loader: Allow the loader to check multiple records from the broker, for backward- and forward-compatibility (internal MR 3269, internal issue 2226)
    • Loader: Improve error logging in the case that the Windows registry ActiveRuntime path cannot be parsed or found. (internal MR 3015, internal issue 2125)
    • Loader: Remove path separator parsing from Windows registry ActiveRuntime path to fix bug. (internal MR 3015)
    • Loader: Fix build issue for ARMv6 architectures, and note architecture naming quirk of Raspberry Pi OS in the architecture table in the loader documentation. (OpenXR-SDK-Source PR 464, OpenXR-SDK-Source issue 463)
    • Reduce duplication of environment variable getters and setters. (internal MR 3039)
    • Updates to scripts and software to handle aliases and promoted functionality in XR_KHR_maintenance1 and XR_VERSION_1_1 (internal MR 3053)
    • hello_xr: Fix Windows mirror window acquire, wait, present loop. (internal MR 3289)
    • hello_xr and other samples: Update Android compile SDK version (to 33), NDK version (to 23.2), and build tools version (to 34.0.0). (internal MR 2992)
    • hello_xr and runtime list: Request an OpenXR 1.0 instance by default. (internal MR 3320)
    • loader_test: Build fixes to allow loader_test to compile / run on Android. (internal MR 3153)

OpenXR SDK 1.0.34 (2024-02-16)

This release features a number of new multi-vendor and vendor extensions, additional functionality in the reflection header, as well as compatibility improvements for the loader on Android.

  • Registry
  • SDK
    • API Layers: Add version-script for linking API Layers on Linux and Android. (internal MR 3112)
    • Fix typo in gfxwrapper_opengl that did not affect the use in this repository directly, but may affect downstream users of this code. (internal MR 3215)
    • Loader: fix to Android Loader so that the /<path_to_apk>/my_apk_file.apk!/libs/libstuff.so will not get blocked (internal MR 3054)
    • Loader: Add missing ifdef guards for XR_KHR_LOADER_INIT_SUPPORT. (internal MR 3152, internal MR 3159)
    • Loader: Fix crash in case of calling xrEnumerateInstanceExtensionProperties before calling xrInitializeLoaderKHR on Android. (internal MR 3159)
    • Loader design: Add a note about environment variables being ignored when run on Windows as admin. (internal MR 3214)
    • openxr_reflection.h: Add macros to list functions provided by each feature / extension. (internal MR 3129)
    • external: Update Jinja2 Python module shipped with repository (for source code generation) to 2.11.3. (internal MR 3221, internal MR 3237)

OpenXR SDK 1.0.33 (2024-01-03)

This release primarily adds new ratified functionality describing the loader interaction with runtimes and API layers. Corresponding definitions are now in the official openxr_loader_negotiation.h generated header, rather than the loader_interfaces.h header previously shipped only with the OpenXR-SDK-Source repository. This change only affects vendors of runtimes and API layers as well as contributors to the OpenXR loader: applications do not directly use this API, the loader uses it on their behalf. A number of other small fixes are also included.

  • Registry
    • Extension reservation: Update author ID and reserve extensions for Varjo. (internal MR 3083)
    • Extension reservation: Reserve 10 extension ids each for ANDROIDX & ANDROIDSYS. (internal MR 3086)
    • Khronos ratified addition: Specify the existing loader negotiation functions (without modification) in the XML, moving from loader_interfaces.h to a new generated header openxr_loader_negotiation.h. (internal MR 2807, internal issue 1953)
    • XR_KHR_android_thread_settings: Fix the description of XrAndroidThreadTypeKHR enum values - they were swapped relative to their implicit meaning from their name. (internal MR 3077)
    • XR_MNDX_egl_enable: Update version to 2 to reflect function pointer type change released in 1.0.29. (OpenXR-Docs PR 159)
  • SDK
    • Loader: Fix loader build on Universal Windows Platform: build-system-only change. (Included in SDK hotfix 1.0.32.1.) (internal MR 3071)
    • Loader: Correctly destroy the LoaderInstance when loader is done. (internal MR 3041)
    • Remove obsolete loader_interfaces.h header, migrating uses (in loader and layers) to use the newly specified and ratified openxr_loader_negotiation.h, and adjust scripts for the addition of the loader negotiation APIs. (internal MR 2807, internal issue 1953, internal MR 3122)
  • Misc
    • Update/correct names.
    • Ship a .mailmap file in the public repositories, maintained separately from the larger one used in the private monorepo, to correct names/emails and unify contributor identities.
    • Update Khronos Group copyright dates.

OpenXR SDK 1.0.32 (2023-11-29)

This release contains a number of vendor extensions, plus a new ratified revision to the XR_KHR_loader_init extension that specifies forwarding the init calls to API layers. Vendors of API layers, primarily on Android, must verify they can handle being passed XR_NULL_HANDLE for the instance parameter of xrGetInstanceProcAddr, to avoid bugs when using the updated loader. This release also contains a number of build system cleanups and fixes. Users of the Android Gradle Plugin and our official loader AAR file can now use the OpenXR::headers target just like on desktop: there is now metadata for the "prefab" tool to generate for CMake both this header/include-only target and the normal OpenXR::openxr_loader imported library target. The shipped AAR is much smaller due to stripping debug data from the binaries, which helps in case application build systems do not automatically strip native binaries. A bug in the loader Android manifest as shipped in 1.0.31 has also been fixed.

OpenXR SDK 1.0.31 (2023-10-18)

This release features two new vendor extensions and minor extension XML revisions, in addition to compatibility and logging improvements in the software.

OpenXR SDK 1.0.30 (2023-09-20)

This release is primarily a quality improvement release, fixing a range of issues in the registry and SDK, including fixing a loader bug related to layers, in addition to a new vendor extension and an updated vendor extension.

OpenXR SDK 1.0.29 (2023-08-25)

This release contains several fixes to the specification registry, improvements to the loader, layers, and loader test, as well as enhancements to the loader documentation/specification to support architecture and ABI specific active runtime manifest names on Linux and Android.

OpenXR SDK 1.0.28 (2023-07-10)

This release contains improved compatibility and code quality fixes for the loader, support for loading certain API layers on Android-based devices, and a number of other improvements, in addition to the new extensions. Additionally, the loader documentation now describes how OpenXR handles compatibility with Android API levels of 30 and above: runtimes may need to update accordingly to support this compatibility solution.

OpenXR SDK 1.0.27 (2023-03-21)

This release contains a large list of improvements, including interaction profile definitions in machine-readable format in the XML, consistent tool-based formatting of the XML, a new list_json tool to ease updates to OpenXR-Inventory, and a wide variety of new vendor and multi-vendor extensions, in addition to a collection of smaller improvements.

OpenXR SDK 1.0.26 (2022-11-18)

This release contains new reflection headers, fixes and improvements to the loader and hello_xr (especially on Android), some spec clarifications, improvements to tooling, and a variety of new vendor and multi-vendor extensions.

OpenXR SDK 1.0.25 (2022-09-02)

This release contains a few specification clarifications and consistency improvements, as well as some new vendor extensions. The OpenXR loader for Android now supports API layers packaged in the application APK, which is important for running the conformance tests, and which may also be used for running with the validation layer enabled during application development, for example. The loader design doc has been updated accordingly. The spec generation toolchain scripts have been synchronized with Vulkan. Hello_XR now models the recommended approach for selecting an environment blend mode, among other fixes.

  • Registry
    • Add new XR_ML_ml2_controller_interaction vendor extension. (internal MR 2344)
    • Clarification: Note that all specialized swapchain image structures are "returnedonly", which removes some unneeded generated implicit valid usage. (internal MR 2303)
    • Clarification: Note that all event structs are "returnedonly", which removes some unneeded generated implicit valid usage. (internal MR 2305)
    • Register author ID for Oppo. (OpenXR-Docs PR 129)
    • Register author ID for Fred Emmott. (OpenXR-Docs PR 131)
    • Register author ID for Acer. (OpenXR-Docs PR 132)
    • Reserve extension numbers for anticipated cross-vendor and Khronos extensions. (internal MR 2337, internal MR 2338, internal MR 2389)
    • Reserve a vendor extension for Huawei. (internal MR 2356)
    • Reserve vendor extensions for MNDX. (OpenXR-Docs PR 133)
    • Update XR_MSFT_scene_understanding and XR_MSFT_scene_understanding_serialization vendor extensions to list error codes that may be returned by functions. (internal MR 2316)
    • XR_FB_color_space: Mark XrSystemColorSpacePropertiesFB as "returned-only" for consistency and to correct the implicit valid usage. (internal MR 2304)
    • XR_FB_display_refresh_rate: Mark XrEventDataDisplayRefreshRateChangedFB as "returned only" for consistency. (internal MR 2308)
    • XR_FB_hand_tracking_mesh: Fix two-call-idiom markup for XrHandTrackingMeshFB, affecting implicit valid usage, and increment the revision. (internal MR 2311)
    • XR_FB_passthrough: Add XrSystemPassthroughProperties2FB and XR_PASSTHROUGH_LAYER_DEPTH_BIT_FB, update spec version to 3. (internal MR 2333)
    • XR_FB_render_model: Mark XrRenderModelCapabilitiesRequestFB as "returned- only" for consistency and to correct the implicit valid usage. (internal MR 2309)
  • SDK

OpenXR SDK 1.0.24 (2022-06-23)

OpenXR SDK 1.0.23 (2022-05-27)

This release primarily features a large number of new vendor and multi-vendor extensions, as well as some updates to existing extensions. Some improvements and fixes were made in SDK as well.

  • Registry
    • Add new XR_ULTRALEAP_hand_tracking_forearm vendor extension. (internal MR 2154)
    • Add new XR_EXT_dpad_binding multi-vendor extension. (internal MR 2159)
    • Add "externally synchronized" markup for xrBeginFrame and xrEndFrame so they get the matching box and their session parameters are included in the list of externally-synchronized parameters in the "Threading" section. (internal MR 2179, OpenXR-Docs issue 23, internal issue 1216)
    • Add new XR_FB_spatial_entity vendor extension. (internal MR 2194)
    • Add new XR_FB_spatial_entity_storage vendor extension. (internal MR 2194)
    • Add new XR_FB_spatial_entity_query vendor extension. (internal MR 2194)
    • Add new XR_FB_composition_layer_settings vendor extension. (internal MR 2221)
    • Add new XR_FB_spatial_entity_container vendor extension. (internal MR 2236)
    • Add new XR_HTC_vive_wrist_tracker_interaction vendor extension. (internal MR 2252)
    • Add XR_HTC_hand_interaction extension. (internal MR 2254)
    • Add new XR_VARJO_view_offset vendor extension. (internal MR 2255)
    • Add new XR_META_performance_metrics vendor extension. (internal MR 2256)
    • Add new XR_META_vulkan_swapchain_create_info vendor extension. (internal MR 2257)
    • Change the XML type of XR_MIN_COMPOSITION_LAYERS_SUPPORTED so it outputs an includable snippet for the spec text. (internal MR 2201, internal issue 1652, OpenXR-Docs issue 117)
    • Fix registry consistency script and codegen scripts to allow extension of KHR and EXT enumerations with vendor-specific members. (internal MR 2213, internal MR 2243)
    • Fix warning print statement arguments in header generation/validation script. (internal MR 2244)
    • Reserve the extension number for multi-vendor hand interaction profile extension. (internal MR 2206)
    • Reserve vendor extensions 304-317 for Qualcomm (internal MR 2258)
    • Reserve vendor extensions 318-370 for HTC. (internal MR 2266)
    • KHR_composition_layer_depth: Update spec version to 6 for updated spec text. (internal MR 2207, internal issue 1651)
    • XR_EXT_eye_gaze_interaction: Update the spec version for spec text change. (internal MR 2227)
    • XR_EXT_uuid: Add enum tags to XR_UUID_SIZE_EXT to ensure it is defined before XrUuidEXT in generated header (internal MR 2234, internal issue 1673)
    • XR_FB_hand_aim_tracking, XR_FB_hand_tracking_capsule, XR_FB_hand_tracking_mesh: Fix documentation to specify correct next chain usage. (internal MR 2229)
    • XR_FB_hand_tracking_capsules: Update XrHandCapsuleFB and XrHandTrackingCapsulesStateFB to use XR_HAND_TRACKING_CAPSULE_POINT_COUNT_FB and XR_HAND_TRACKING_CAPSULE_COUNT_FB enums when defining arrays so they match the usual practice for vendor extensions (internal MR 2216)
    • XR_FB_passthrough_keyboard_hands: Add XR_PASSTHROUGH_LAYER_PURPOSE_TRACKED_KEYBOARD_MASKED_HANDS_FB, update spec version to 2. (internal MR 2270)
    • XR_FB_passthrough: add XrPassthroughBrightnessContrastSaturationFB, update spec version to 2 (internal MR 2222)
    • XR_FB_render_model: Add capability support levels, bump spec version to 2. (internal MR 2264)
    • XR_FB_space_warp: Add XR_COMPOSITION_LAYER_SPACE_WARP_INFO_FRAME_SKIP_BIT_FB into XrCompositionLayerSpaceWarpInfoFlagBitsFB, update spec version to 2. (internal MR 2193)
    • XR_HTC_vive_focus3_controller_interaction: Support component path "/input/squeeze/value", update spec version to 2. (internal MR 2253)
    • XR_KHR_D3D11_enable and XR_KHR_D3D12_enable: Update to describe error conditions for XR_ERROR_GRAPHICS_DEVICE_INVALID. (internal MR 2176, internal issue 1617)
    • XR_MSFT_spatial_graph_bridge: Update to revision 2. (internal MR 2182)
  • SDK

OpenXR SDK 1.0.22 (2022-01-12)

This release features a number of new extensions, as well as some software updates and fixes, especially for Android. If you are using the bundled jsoncpp, this is also a security release as the bundled jsoncpp was upgraded to incorporate security improvements from upstream.

OpenXR SDK 1.0.21 (2022-01-10)

This release was withdrawn due to a typo noticed after initial publication. All changes are now listed under 1.0.22.

OpenXR SDK 1.0.20 (2021-10-04)

This release includes a proposed cross-vendor OpenXR loader for Android, Android build system for hello_xr, and a number of new vendor extensions.

OpenXR SDK 1.0.19 (2021-08-24)

This release features a number of new or updated vendor extensions, as well as some minor cleanups and bug fixes in the SDK.

OpenXR SDK 1.0.18 (2021-07-30)

This release mostly adds new extensions. It also includes some fixes to the included layers, as well as text in the loader documentation describing how runtimes can register themselves for manual selection. This is not used by the loader itself and does not require any changes to the loader, but it may be useful to developer-focused supporting software.

  • Registry
    • Add ratified XR_KHR_swapchain_usage_input_attachment_bit Khronos extension. (Promotion of XR_MND_swapchain_usage_input_attachment_bit, which is now deprecated.) (internal MR 2045)
    • Add new XR_FB_foveation, XR_FB_foveation_configuration, and XR_FB_foveation_vulkan vendor extensions. (internal MR 2050)
    • Add additional extension dependencies to XR_FB_swapchain_update_state. (internal MR 2072, internal issue 1572)
    • Add new XR_FB_composition_layer_secure_content vendor extension. (internal MR 2075)
    • Add new XR_FB_composition_layer_alpha_blend vendor extension. (internal MR 2078)
    • Add new XR_FB_composition_layer_image_layout vendor extension. (internal MR 2090)
    • Add new XR_MSFT_spatial_anchor_persistence vendor extension. (internal MR 2093)
    • Add some simple Schematron rules and a script to check the XML registry against them. (internal MR 2103)
    • Register author ID and Reserve vendor extensions for Unity. (internal MR 2105)
    • Reserve extension ID range 187-196 for LIV Inc. (internal MR 2102)
  • SDK
    • Describe how runtimes may register themselves at installation time for manual selection. (internal MR 2081, internal MR 2109, internal issue 1574)
    • Include sRGB in list of supported swapchain texture formats for the HelloXR OpenGLES plugin. (internal MR 2066)
    • layers: Refactor generated xrGetInstanceProcAddr implementations to avoid deeply-nested if ... else blocks. (Some compilers have limits we were nearing or hitting.) (internal MR 2050)
    • validation layer: Set default logging mode to stdout ("text") instead of none. (OpenXR-SDK-Source PR 262)
    • validation layer: Fix invalid struct type error message to show the expected type instead of the actual type. (OpenXR-SDK-Source PR 263)

OpenXR SDK 1.0.17 (2021-06-08)

This release features an important fix to the loader for an invalid-iterator bug introduced in 1.0.16. All developers shipping the loader are strongly encouraged to upgrade. It also includes a variety of new vendor extensions.

OpenXR SDK 1.0.16 (2021-05-11)

This release contains an update to define a new error code, XR_ERROR_RUNTIME_UNAVAILABLE, now returned by the loader at xrCreateInstance and xrEnumerateInstanceProperties when it cannot find or load a runtime for some reason. This should be more clear for developers when encountering it, as well as helpful when troubleshooting errors hit by users. (The previously-returned error was typically XR_ERROR_INSTANCE_LOST, which is confusing when returned when trying to create an instance.) This release also includes a new multi-vendor extension, a new vendor extension, and improved concurrency handling in the loader, among smaller fixes.

OpenXR SDK 1.0.15 (2021-04-13)

The main SDK change in this release is that the OpenXR headers no longer expose extension function prototypes because extension functions are not exported by the loader. This should prevent some confusion during development without affecting code that correctly compiles and links with older SDKs. Code that was compiled but not linked (for instance, the automated tests of example source in the specification) and that would not have successfully linked may have their defects highlighted by this change, however. If you need those prototypes still available, there is a preprocessor define that can re-enable them. The function pointer definitions are always available.

In addition to that header change, this release contains three new vendor extensions plus an assortment of SDK fixes.

OpenXR SDK 1.0.14 (2021-01-27)

This release contains a collection of fixes and improvements, including one new vendor extension. Notably, we have relicensed all files that become part of the loader, so the loader may be "Apache-2.0 OR MIT" for downstream license compatibility.

OpenXR SDK 1.0.13 (2020-11-24)

The SDK in this release features some fixes to the loader's layer parsing: upgrading is recommended. The hello_xr example has also been improved. The registry for this release features a new ratified Khronos extension which will serve as the basis of other extensions, as well as a number of new vendor extensions.

OpenXR SDK 1.0.12 (2020-09-25)

This release features a number of new ratified KHR extensions, as well as a new vendor extension.

OpenXR SDK 1.0.11 (2020-08-14)

This release is mainly for SDK improvements, with only small changes to the docs. A new error code is provided for xrCreateSession for developers convenience.

  • Registry
  • SDK
    • Improve language usage in code and comments to be more respectful. (internal MR 1881)
    • Loader: Correct type of "extension_version" in API layer manifest files to string, while maintaining backwards compatibility. Remove undocumented and unused "device_extensions" and "entrypoints" keys. (internal MR 1867, internal issue 1411)
    • Replace usage of std::filesystem::canonical with PathCchCanonicalize on Windows platform to work around bug on UWP platforms. This also replaces PathCanonicalize with PathCchCanonicalize and adds the appropriate library for linking in. (OpenXR-SDK-Source/#198)
    • Support for building more projects when targeting UWP, and support for all architectures when targeting Win32. (OpenXR-SDK-Source/#199)
    • hello_xr: fix Vulkan image layout transitions. (internal MR 1876)
    • validation: Enable three additional checks (on optional arrays with non- optional counts) that were missing because of a script error. (internal MR 1881)

OpenXR SDK 1.0.10 (2020-07-28)

Note the relicensing of the registry XML file and some include files provided by or generated by this repository (first item in each changelog section). Each file's header, or an adjacent file with .license appended to the filename, is the best reference for its license terms. We are currently working on ensuring all files have an SPDX license identifier tag either in them or in an adjacent file. This is still in progress but mostly complete.

  • Registry
    • Relicense registry XML from MIT-like "Khronos Free Use License for Software and Documentation" to, at your option, either the Apache License, Version 2.0, found at http://www.apache.org/licenses/LICENSE-2.0, or the MIT License, found at http://opensource.org/licenses/MIT, for broader license compatibility with downstream projects. (SPDX License Identifier expression "Apache-2.0 OR MIT") (internal MR 1814, OpenXR-Docs/#3, internal issue 958)
    • Add XR_MSFT_holographic_window_attachment vendor extension. (internal MR 1833)
    • Add XR_EXT_hp_mixed_reality_controller multi-vendor extension. (internal MR 1834)
    • Add XR_EXT_samsung_odyssey_controller multi-vendor extension. (internal MR 1835)
    • Add XR_VALVE_analog_threshold vendor extension. (internal MR 1859)
    • Add XR_MND_swapchain_usage_input_attachment_bit vendor extension. (internal MR 1865)
    • Reserve extension numbers 71 to 78 for Facebook extensions. (internal MR 1839)
    • Reserve extension numbers 79 to 88 for Valve extensions. (internal MR 1842)
    • Reserve extension numbers 89 to 92 for Khronos extensions. (internal MR 1844)
    • Reserve extension numbers 93 to 94 for EXT_unbounded_reference_space and EXT_spatial_anchor. (internal MR 1854)
    • XR_EPIC_view_configuration_fov: Fix recommendedFov incorrectly being named recommendedMutableFov. This is a source-incompatible change to a vendor extension. (internal MR 1812)
    • schema: Adjust to permit bitmask expansion in extensions, already supported by toolchain thanks to Vulkan. (internal MR 1865)
    • scripts: Teach xml-consistency to handle bitmask values defined in extensions. (internal MR 1865)
  • SDK
    • Relicense generated headers openxr.h, openxr_platform.h, openxr_reflection.h, and static header openxr_platform_defines.h from the Apache License, version 2.0, to, at your option, either the Apache License, Version 2.0, found at http://www.apache.org/licenses/LICENSE-2.0, or the MIT License, found at http://opensource.org/licenses/MIT, for broader license compatibility with downstream projects. (SPDX License Identifier expression "Apache-2.0 OR MIT") (internal MR 1814, OpenXR-Docs/#3, internal issue 958)
    • Loader: Fix loading relative runtime libraries on Linux. (internal MR 1817)
    • Loader: Fix error on xrCreateInstance when explicitly trying to enable an implicit API layer. (internal MR 1858)
    • Modify Azure DevOps build pipeline to automatically generate a NuGet package. (OpenXR-SDK-Source/#196)
    • Partially revert build system changes related to detecting Direct3D, to fix builds. (internal MR 1802)
    • Portability fixes, including checking for timespec_get before enabling XR_USE_TIMESPEC. (internal MR 1804)
    • cmake: export OpenXRConfig.cmake during install. Two targets can be imported by another CMake application: OpenXR::openxr_loader and OpenXR::headers. (OpenXR-SDK-Source/#191, OpenXR-SDK-Source/#185)
    • hello_xr: Fix disparity between swapchain and render pass sample count in Vulkan in the case where implementation recommends a value higher than one. (internal MR 1794)
    • hello_xr: Fix build on a minimal Linux install by ensuring we check for all dependencies we use. We had missed checking for xcb_glx. (internal MR 1799, internal issue 1360)
    • hello_xr: Fix a Vulkan crash on Windows related to the mirror window. (internal MR 1823)
    • hello_xr: Use more proper linear formats (internal MR 1840)
    • hello_xr: Enable use of glslangValidator to compile shaders if shaderc is not available. (internal MR 1857)
    • hello_xr: Fix verbose per-layer information. (internal MR 1866)
    • hello_xr: Add Valve Index Controller bindings. Also use trigger value instead of squeeze click for grab action on Vive Wand controller. (OpenXR-SDK-Source/#163)
    • openxr_reflection: Add XR_LIST_STRUCT_ expansion macros for structure types, as well as XR_LIST_STRUCTURE_TYPES macro associating types with XrStructureType values. (internal MR 1495)
    • openxr_reflection: Adds XR_LIST_EXTENSIONS() macro, which will call your supplied macro name with the name and extension number of all known extensions. (internal MR 1864)

OpenXR SDK 1.0.9 (2020-05-29)

OpenXR SDK 1.0.8 (2020-03-27)

Patch release for the 1.0 series.

  • Registry
  • SDK
    • Add SPDX license identifier tags to nearly all (code) files, including generated files. (internal MR 1686)
    • Fix build system behavior with MSVC building in Release mode: only attempt to copy PDB files if they exist. (internal MR 1701)

OpenXR SDK 1.0.7 (2020-03-20)

Patch release for the 1.0 series.

Note: Changelogs are now being assembled with the help of the Proclamation tool, so the format has changed somewhat.

  • Registry
    • Introduce XR_MSFT_hand_interaction extension for hand interaction profile. (internal MR 1601)
    • Introduce XR_EPIC_view_configuration_fov extension for system field-of-view queries. (internal MR 1170)
    • Indicate that xrBeginFrame returns XR_ERROR_CALL_ORDER_INVALID when not paired with a corresponding xrWaitFrame call. (internal MR 1673)
    • Update the version number of XR_KHR_D3D12_enable extension. (internal MR 1681)
    • Introduce XR_EXTX_overlay extension for Overlay sessions (which can provide overlay composition layers). (internal MR 1665)
  • SDK

OpenXR 1.0.6 release (24-January-2020)

Patch release for the 1.0 series.

This release contains, among other things, a substantial simplification and cleanup of the loader, which should fix a number of issues and also make it forward compatible with extensions newer than the loader itself. As a part of this change, the loader itself now only supports a single XrInstance active at a time per process. If you attempt to create a new instance while an existing one remains (such as in the case of application code leaking an XrInstance handle), the loader will now return XR_ERROR_LIMIT_REACHED.

GitHub Pull Requests

These had been integrated into the public repo incrementally.

  • hello_xr
    • Initialize hand_scale to 1.0 #157
    • Fix Vulkan CHECK_CBSTATE build under newer MSVC #154
    • Initialize hand_scale to 1.0 to still show controller cubes even if grabAction not available on startup. #157
  • Loader
    • Single instance loader refactor with forward compatibility #146 (and internal MRs 1599, 1621)
    • Fix bug in loading API layers that could result in not loading an available and enabled layer #155
  • Build
    • Clean up linking, build loader and layers with all available platform/presentation support, fix pkg-config file, rename runtime_list test executable to openxr_runtime_list #149

Internal issues

  • Registry
    • Fix typo in visibility mesh enum comment.
    • Add XR_EXT_win32_appcontainer_compatible extension.
  • Scripts
    • Fix comment typos.
    • Sync scripts with Vulkan. (internal MR 1625)
  • Loader
    • Allow use of / in paths in FileSysUtils on Windows.
  • Build
    • Improve messages
  • hello_xr
    • Add D3D12 graphics plugin (internal MR 1616)
    • Fix comment typo.

OpenXR 1.0.5 release (6-December-2019)

Patch release for the 1.0 series.

This release primarily contains extension reservations and small specification clarifications/fixes.

GitHub Pull Requests

These had been integrated into the public repo incrementally.

  • Loader tests
    • #147 - Small bugfix and output extension

Internal issues

  • Registry
    • Reserve Microsoft extension numbers (Internal MR 1613)

OpenXR 1.0.4 release (21-November-2019)

Patch release for the 1.0 series.

This release includes some fixes, extensions, and a small build system change: the build system is now configured to use C++14. No code changes in the loader or layers have yet taken place that require C++14. Please file an issue in OpenXR-SDK-Source if there is some deployment platform where you would be unable to use a loader making use of C++14 features.

GitHub Pull Requests

These had been integrated into the public repo incrementally.

  • General, Build, Other
    • #141 - Support system libs better (permit system jsoncpp, etc. for easier packaging)
  • hello_xr
    • #144 - Fix hello_xr when running under Linux OpenGL X11
  • Registry

Internal issues

  • General, Build, Other
    • Switch C++ standard version to C++14 (internal MR 1602)
    • Remove unused/unneeded files (internal MR 1609)
  • Loader
    • Fix typo in parameter/member names (internal MR 1607, internal issue 1233)
    • Fix deprecated usage of JsonCpp (internal MR 1604, internal issue 1212)
  • hello_xr
    • Resolve misleading use of xrLocateViews before xrWaitFrame in helloXR and spec (internal MR 1584, internal issue 1227, public issue #134)
  • Registry
    • Add XR_EXT_conformance_automation extension, for use only by conformance testing (internal MR 1577, 1608)

OpenXR 1.0.3 release (7-October-2019)

Patch release for the 1.0 series.

Note that this release includes changes to adjust the symbol exports from dynamic library versions of the loader to align with the specification. Only core symbols are currently exported. All extension symbols must be retrieved using xrGetInstanceProcAddr.

GitHub Pull Requests

These had been integrated into the public repo incrementally.

  • General, Build, Other
    • #139 - Write output atomically at the end of generator scripts
    • #119 - Loader test updates.
    • #116 - Static analysis cleanups.
  • Loader
    • #140 - Permit broader valid usage re: layers
    • #133 - Remove shwapi dependency
    • #132 - Fix directory searching for layers
    • #130 - Fix exporting of symbols on Windows.
    • #129 - Remove debug ext only when added by loader - fixes usage of debug ext on runtimes that do not provide it themselves.
    • #125 - Include a OutputDebugString logger for Win32
  • Layers
    • #138 - Don't validate output enum buffer values
    • #137 - Fix incorrect filenames in the generated API layer JSON

Internal issues

  • General, Build, Other
    • Fix warnings in MSVC static code analysis mode (internal MR 1574)
    • Validation layer improvements and fixes (internal MR 1568)
    • Update vendored jsoncpp to 1.9.1 (internal MR 1523)
  • Loader
    • Add ability to quiet the loader's default output (internal MR 1576)
    • Fix conformance of loader in xrEnumerateApiLayerProperties/xrEnumerateInstanceExtensionProperties
  • hello_xr
    • Simplify action usage in hello_xr (internal MR 1553)
  • Registry
    • Add XR_EXT_view_configuration_depth_range extension (internal MR 1502, internal issue 1201)
    • Reserve a Monado extension (internal MR 1541)

OpenXR 1.0.2 release (27-August-2019)

Patch release for the 1.0 series.

Note that the loader on Windows has a security fix: All developers incorporating the OpenXR loader should update immediately.

GitHub Pull Requests

These had been integrated into the public repo incrementally.

  • General, Build, Other
    • #112 - Update active runtime search documentation
    • #106 - List app changes
    • #114 - Support for building WindowsStore loader and layers, and simplified filename
    • #96 - Misc cleanup: build simplification, install hello_xr, allow building as subproject, fix null deref in validation layer.
  • Loader
    • #102 - Default to catching exceptions, since not being able to catch (and having a non-throwing standard library) is less common
    • #109 - Factor out some debug-utils related code from the loader, and migrate validation layer to that shared code.
    • #108 - Update json_stream initialization to improve compatibility
    • #118 - Fix logic error in Linux active runtime search
    • #115, #117 - Simplification and refactoring.
  • Layers
    • #111 - Some fixes to Validation Layer (as found applying to the UE4 OpenXR plugin)
    • #110 - Fix cleaning up session labels in validation layer
  • From OpenXR-Docs:
    • #26 - Proposal for unbounded space and spatial anchor extensions (vendor extensions)

Internal issues

  • General, Build, Other
    • Allow project to be included in a parent project. (Internal MR 1512)
  • hello_xr
    • Fix OpenGL version number to be XrVersion. (Internal MR 1515)
    • Make D3D11 debug device handling more friendly. (Internal MR 1504)
  • Registry
    • Fix error in extension-added function. (Internal MR 1510)
    • Add Oculus Android extension. (Internal MR 1518)
    • Reserve additional extension number for Oculus. (Internal MR 1517)
  • Loader
    • Security fix: Do not use HKEY_CURRENT_USER or environment variables when the process is running higher than medium-integrity on Windows. (Internal issue 1205, internal MR 1511)
    • Small updates to the loader documentation.

New extension

  • XR_OCULUS_android_session_state_enable

OpenXR 1.0.1 release (2-August-2019)

Patch release for the 1.0 series.

GitHub Pull Requests

These had been integrated into the public repo incrementally.

  • General, Build, Other
    • #87 - Fix makefiles
    • #88 - Remove unneeded generation (corresponds to issue #74, internal issue 1139, internal MR 1491)
    • #101 - Fix install of header and loader.
  • Loader
    • #91 - Fix a loader bug which prevented Layers from not implementing all XR functions
    • #95 - Guard config includes/defines (relates to #81, #92)
    • #97 - Remove a constant static std::vector, use a std::array instead.
  • Layers
    • #84 - Fix Linux warning for apidump
  • From OpenXR-Docs:
    • #26 - Proposal for unbounded space and spatial anchor extensions (vendor extensions)

Internal issues

  • General, Build, Other
    • Makefile cleanups (internal MR 1469, 1489)
    • Add release scripts (internal MR 1496)
  • Registry
    • Reserve Oculus extension numbers (internal MR 1493)
    • Add Monado headless (vendor extension) (internal MR 1482)
  • Loader
    • Remove unnecessary #ifdef _WIN32 in loader. (internal MR 1487)

New extensions

  • XR_MND_headless
  • XR_MSFT_spatial_anchor
  • XR_MSFT_unbounded_reference_space

OpenXR 1.0.0 release (29-July-2019)

Incorporates spec changes from OpenXR 1.0, all public pull requests incorporated in the 0.90 series, and additional fixes and improvements not previously published.

Change log for OpenXR 0.90 provisional spec updates post-0.90.1

GitHub Pull Requests

These had been integrated into the public repo incrementally.

  • General, Build, Other
    • #40 - Update BUILDING.md with some Linux pre-requisites
    • #43 - Make manifest file more compatible
    • #44 - Remove pkg-config dependency from xlib backend
    • #46 - Support building with "embedded" Python
    • #48 - Install layers and pkg-config file on Linux
    • #66 - Install the layers libraries on Linux
    • #71 - Validation layer: fix logic error
  • hello_xr
    • #49 - Fix hello_xr to properly use two call idiom
  • Loader
    • #38 - Remove dead file-locking code
    • #51 - Idiomatic Linux active_runtime.json search logic
    • #55, #58, #68 - Purge std::map bracket operations that might do inadvertent insertions
    • #56 - Make filesystem_util.cc #define UNICODE-compatible
    • #57 - Make it possible to bypass macro that checks which filesystem to use
    • #60 - Fix build error with shlwapi function
    • #62 - Don't limit contents of XristanceCreateInfo next chain
    • #65 - Fix minor substr error
    • #69 - Simplify loader
    • #70, #76 - Make loader exception free
    • #72 - filesystem: fix theoretical bug on Linux
    • #73 - Loader proper UNICODE support
    • #75 - Clang tidy
    • #80 - Switchable exceptions
    • #82 - Add folder properties to all CMake targets.

Change log for OpenXR 0.90.1 provisional spec update (8-May-2019)

No API changes, and only minimal consistency changes to the spec/registry. Mostly an update for tooling, layers, loader, and sample code. Header version has been bumped to 43, but no symbols that should have actually been in use have changed.

GitHub Pull Requests

These had been integrated into the public repo incrementally.

  • General, Build, Other
    • #8, #11, #12 - Improve BUILDING and README
    • #9 - Make Vulkan SDK dependency optional
    • #17 - Add install target to CMake files
    • #17 - API dump layer, build: timespec extension fixes
    • #19 - build: fix CMAKE_PRESENTATION_BACKEND default on linux
    • #34 - list: Fix list test output
  • validation layer
    • #18, #22, #23 - Fix build and execution
    • #24 - Fix crash and refactor
  • hello_xr
    • #13 - Do not query GL context API version before creating context
    • #26 - Fix a warning
  • Loader
    • #3 - Don't cross 32/64 registry silos
    • #14 - Initialize XrExtensionProperties array parameter for rt_xrEnumerateInstanceExtensionProperties
    • #20 - Fix Linux manifest file search
    • #30 - Add default implementations of API functions to dispatch chains
    • #32 - Avoid crash when evaluating layer disable environment vars
    • #35 - Add 'unknown' strings to loader's *ToString fallback functions
    • #36 - Allow null instance in xrGetInstanceProcAddr() for certain entry points
    • #39 - Default to static loader only on Windows

Internal Issues

  • General, Build, Other
    • Unify (for the most part) the OpenXR and Vulkan generator scripts. (internal MR 1166)
    • List instance extensions in the "list" test. (internal MR 1169)
    • Avoid dllexport for all apps compiled with openxr_platform_defines.h (internal MR 1187)
    • Don't offer BUILD_SPECIFICATION unless the spec makefile is there. (internal MR 1179)
    • Add simple input example to hello_xr. (internal MR 1178)
    • Add a clang-format script for ease of development.
  • API Registry and Headers
    • Remove impossible and undocumented error codes. (internal MR 1185 and 1189)
    • Mark layers in XrFrameEndInfo as optional. (internal MR 1151, internal issue 899)
    • Remove unused windows types from openxr_platform.h (internal MR 1197)
    • Make openxr_platform.h include openxr.h on which it depends. (internal MR 1140, internal issue 918)
    • Remove unused, undocumented defines. (internal MR 1238, internal issue 1012)
  • Loader
    • Fix loader regkey search logic so 64bit application loads 64bit regkey value. (internal MR 1180)
    • Modify loader to be friendly to UWP (Universal Windows Platform) build target. (internal MR 1198)

OpenXR 0.90.0 - Initial public provisional release at GDC