Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
(Redirected from OpenXR 1.1)

OpenXR is an open, royalty-free standard for access to virtual reality, augmented reality and mixed reality platforms and devices. It is developed by a working group managed by the Khronos Group consortium. The standard defines an application programming interface between an application and an XR runtime, which can handle tracking, input and display composition. OpenXR is an interface specification; individual vendors and open-source projects supply its implementations.[1][2]

A common API lets applications and game engines reuse XR integration code across supported systems. Portability still depends on the requested API version, graphics interface and optional features supported by the application and runtime. A runtime, an engine plug-in and the OpenXR specification have different roles.[3][4]

Reviewed 12 October 2026. Specification history, application/runtime architecture, core and extension boundaries, and the dated implementation, engine and browser examples were checked against the cited primary sources. The research example was checked against its original text. About review dates.

History

OpenXR was announced by the Khronos Group on February 27, 2017, during GDC 2017. Its initial working-group description addressed fragmentation between incompatible XR interfaces and proposed both an application interface and a device layer. That proposal is historical context: the published API specifies the application/runtime boundary, while a runtime may optionally provide its own device plug-ins.[5][6][2]

Date Milestone
March 18, 2019 OpenXR 0.90 provisional specification released for developer and implementer feedback.[1]
July 29, 2019 OpenXR 1.0 released at SIGGRAPH 2019.[7]
July 28, 2020 Khronos announced its OpenXR 1.0 Adopters Program, conformant Microsoft and Oculus implementations, and cross-vendor hand and eye tracking extensions.[8]
April 15, 2024 OpenXR 1.1 released, incorporating selected extension functionality into the core API.[9]
September 1, 2026 Specification release 1.1.63 added spatial container and spatial image tracking extensions, among other changes. This is a specification publication, not a requirement that every runtime implement those extensions.[10]

Architecture

OpenXR uses an application, loader, optional API layers and a runtime. These components have separate responsibilities.[3]

Component Role
Application Uses OpenXR directly or through an engine integration.
Loader Finds the runtime and API layers, loads them and dispatches API calls.
API layer An optional library that can intercept calls for validation, tracing or other added behavior.
Runtime Implements the API for an XR system and its supported devices.

Runtime selection

Multiple runtimes can be installed on a desktop system, with one active runtime selected for an OpenXR instance. SteamVR is one option on Windows; the loader does not designate it as the universal Windows runtime. On Windows, an ActiveRuntime registry value identifies a runtime's JSON manifest. On Linux, the loader uses an active-runtime manifest in its configuration search paths. The desktop XR_RUNTIME_JSON environment variable can override normal discovery for development.[3]

Runtime software may expose a selection setting. For example, VRED's 2023.4 documentation describes separate runtime controls in SteamVR, the Oculus application, Varjo Base and Vive Console. These are alternative implementations of the same application interface.[11]

Instances, systems and sessions

An application creates an XrInstance, obtains an XrSystemId for a requested form factor, and creates an XrSession for that system. For a session that renders graphics, the application supplies a supported graphics binding. Bindings connect OpenXR to APIs such as Direct3D, OpenGL and Vulkan; the available combination depends on the platform and runtime.[12][13]

Applications poll runtime events and respond to session state changes. READY permits beginning a session; STOPPING requests ending it. Other states distinguish synchronization, visibility and input focus. A visible application can lack focus when system UI covers it, so display visibility and availability of input are separate conditions.[12][2]

Spaces and tracking

An XrSpace is a frame of reference. The application locates one space relative to another at a specified time, rather than assuming that every pose uses one permanent global origin. Core reference spaces include:[2]

Space Meaning
VIEW Follows the viewer's view origin.
LOCAL A gravity-aligned, world-locked origin chosen by the runtime.
STAGE An optional rectangular floor space whose bounds can be queried when defined.
LOCAL_FLOOR OpenXR 1.1 floor-relative space, aligned horizontally with LOCAL and using a runtime estimate of floor height.[14]

LOCAL_FLOOR is required in OpenXR 1.1, including on systems without STAGE. Its floor estimate does not establish a cleared or walkable play area.[14] Applications also need to inspect pose validity and tracking flags; a returned pose can be inferred during tracking loss rather than actively tracked.[2]

Rendering and frame timing

An application queries the runtime's view configurations and recommended view dimensions, creates OpenXR swapchains with supported formats, and renders into their images. Swapchain image use follows acquisition, waiting and release. The application submits composition layers, while the runtime composes the output. Environment blend modes determine how that output relates to the external environment.[15]

The main frame sequence is xrWaitFrame, xrBeginFrame and xrEndFrame. The wait call controls pacing and supplies a predicted display timestamp; the begin call precedes the frame's GPU rendering work; the end call submits its layers. Engines can pipeline work, subject to the API's call-order and synchronization rules. The predicted timestamp is not an explicit frame identifier.[16]

The shouldRender flag tells the application whether to render and submit layers for a frame. When it is false during a running session, the frame loop continues while unnecessary rendering can be skipped. View location queries and submitted projection-layer data must refer consistently to the intended display time.[15][16]

Input and haptics

OpenXR input uses semantic actions, such as selecting an object, rather than requiring application logic to query a particular button. Actions belong to action sets, which can represent contexts such as gameplay or a menu. Input action types include boolean, scalar, two-dimensional vector and pose values; vibration output actions request controller haptics.[17]

The application suggests bindings between its actions and controls described by interaction profiles. The runtime can map those suggestions to available devices and user preferences. The current interaction profile therefore describes the mapping presented to the application and need not identify the exact physical controller. Khronos recommends testing profiles for which bindings are supplied and avoiding brittle hardware-identification branches.[18]

xrSyncActions updates action state for the active sets. Pose actions use action spaces, and applications check whether an action is active and whether its pose is valid before using it.[17]

Extensions and portability

An application enumerates available extensions with xrEnumerateInstanceExtensionProperties and enables the ones it uses during instance creation. Requesting an unavailable extension can cause creation to fail. Merely compiling against a header that declares an extension does not enable it.[3]

Extension prefixes describe authorship and process. KHR identifies Khronos working-group extensions; EXT identifies multi-vendor extensions, which may be ratified; other registered prefixes identify vendor extensions. An experimental or provisional designation has weaker compatibility expectations and can change incompatibly. An extension appearing in the registry does not establish its availability on every runtime.[19]

OpenXR 1.1 core additions

OpenXR 1.1 incorporated selected functionality previously exposed through extensions:[9]

Addition Function
Local Floor A recenterable reference space with estimated floor height.
Stereo with foveated inset A view configuration supporting peripheral views and higher-detail inset views for foveated rendering.
Grip Surface A standard pose for anchoring content relative to a hand, whether directly tracked or inferred from a controller.
XrUuid A common universally unique identifier data type.
xrLocateSpaces Locates multiple spaces in one call.

These additions do not make articulated hand tracking a core requirement. Individual hand-joint locations use XR_EXT_hand_tracking; eye gaze input uses XR_EXT_eye_gaze_interaction. Applications inspect the relevant system capability and tracking state. Grip Surface is a pose definition, not a full hand skeleton.[2][9]

Spatial extensions

The June 2025 spatial extensions defined a shared framework for spatial entities, plane and marker tracking, spatial anchors and persistence. Its base extension is XR_EXT_spatial_entity. These interfaces remain extensions with platform-dependent availability.[10] Specification 1.1.63 added XR_EXT_spatial_container, XR_EXT_spatial_container_self_rendering and XR_EXT_spatial_image_tracking. Publishing these interfaces does not automatically enable them in an installed runtime or engine integration.[10]

Conformance and application testing

The Khronos Group maintains a list of conformant products with their API versions and tested configurations. Its conformance tests and Adopters Program assess implementations; optional extensions and graphics bindings still differ between them.[20][8] An engine's OpenXR support also has its own feature and platform limits. Unity's versioned documentation, for example, separates headset/controller support from vendor-specific features and states that it cannot test or guarantee every hardware/software combination.[4]

Implementations

OpenXR implementations include commercial platforms and open-source runtimes. The examples below distinguish historical adoption from version-specific availability. The official conformance list records particular submissions; it is not a guarantee of ongoing support for every device listed there.[20]

Runtime or platform Verified scope
Monado Open-source runtime associated with Collabora. Its 21.0.0 release was announced in February 2021; that release's official conformance applied to a simulated device, not automatically to every physical device supported by its drivers.[21]
SteamVR Valve announced full OpenXR 1.0 support in SteamVR 1.16.8 on Windows on February 25, 2021, including Vulkan, OpenGL, Direct3D 11 and Direct3D 12 conformance tests.[22]
Oculus/Meta PC and Quest runtimes Historical Oculus documentation records PC and mobile implementations and a v19 OpenXR 1.0 support update. Khronos lists version-specific Quest and PC submissions.[23][20]
HTC VIVE Khronos records submissions for HTC Vive Cosmos, HTC Vive Focus 3 and HTC Vive XR Elite. HTC documents OpenXR SDK integrations for standalone and PC VR, with device-specific features.[20][24]
Magic Leap 2 Its developer documentation describes native, Unity and Unreal OpenXR development starting with OS 1.5.0, while warning that older SDK features do not all map directly to the OpenXR integration.[25]
Microsoft HoloLens 2 and Windows Mixed Reality Microsoft's historical implementation supports these platforms. Desktop Windows Mixed Reality was removed in Windows 11 version 24H2. Microsoft states that existing devices can continue with Steam through November 2026 on Windows 11 version 23H2, with updates and support ending after that month. This lifecycle statement concerns desktop Windows Mixed Reality, not the OpenXR standard as a whole.[13][26]
Snapdragon Spaces Qualcomm's XR platform is based on OpenXR. This identifies a platform implementation, not a runtime supplied by every Snapdragon-based device.[27]
Varjo Varjo supplies an OpenXR integration and SDK, with separate documentation for graphics, input and mixed reality.[28]
Android XR Google's July 2026 documentation describes OpenXR 1.1 and selected vendor extensions for XR headsets and wired XR glasses. Its Android XR emulator does not support OpenXR applications.[29]

Game and rendering engine support

Engine integration makes the native API available through an engine's own rendering and interaction systems. Support for a particular extension must exist in the runtime and in the engine integration used by the application.[4][30]

Engine or library Integration and history
Unreal Engine Unreal Engine 4.23 included OpenXR 1.0; Microsoft's documentation identifies its support as a preview. Later engine integrations are among those identified by Khronos in its April 2024 OpenXR 1.1 announcement.[31][13][9]
Blender Blender 2.83 LTS, released June 3, 2020, introduced OpenXR-powered VR scene inspection. This initial feature allowed viewing scenes in VR.[32]
Unity Unity provides OpenXR through its XR plug-in architecture. The 1.16.1 package documentation specifies Unity 2022.3 LTS or later and describes runtime selection, interaction profiles, project validation and additional platform feature plug-ins.[4]
Godot OpenXR has been built into the engine since Godot 4.0. Its XR team's separate OpenXR Vendors plug-in exposes selected vendor extensions; the July 2025 v4 announcement explains explicit feature enablement.[30]
Autodesk VRED VRED 2023.4 introduced an OpenXR display mode for VR devices and hand-tracking-to-controller-input simulation. Its initial implementation had explicit extension limits.[11]
StereoKit An open-source XR library for C# and C/C++ applications built around OpenXR.[33]
NVIDIA Omniverse NVIDIA documents omni.kit.xr.system.openxr as an XR system plug-in. The cited Spatial Extensions guide is scoped to Kit 109.0.3 or later and CloudXR 6.[34]
UNIGINE SDK 2.19, released August 16, 2024, added baseline VR support through OpenXR; the release announcement distinguishes that baseline from further extension work.[35]

Browser support

Browser applications use the separate WebXR API. Chromium's OpenXR integration translates WebXR requests into native OpenXR calls and translates the results back into browser interfaces. Web pages therefore do not directly use the complete native OpenXR API.[36][37]

Khronos recorded Chromium 81's OpenXR backend for Google Chrome and Microsoft Edge in July 2020.[8] The Chromium source documentation checked in October 2026 has a narrower platform matrix: OpenXR VR is enabled by default on Windows only for runtimes supporting XR_EXT_win32_appcontainer_compatible; OpenXR is enabled by default on Android XR devices but disabled by default on general Android. Its Windows AR integration is not enabled by default. These are Chromium implementation settings, not guarantees for every browser build or every OpenXR device.[38]

Web applications query navigator.xr.isSessionSupported() and request an XR session through the browser. Session access is subject to the browser's supported features and user consent.[36]

Development tools and research

Khronos publishes specification text and API reference pages through its registry. The registry distinguishes the specification containing all published extensions from the version containing ratified extensions. Headers and published documentation are separate from a runtime installed on a device.[39] The OpenXR-SDK-Source repository contains loader and API-layer sources and the hello_xr sample; the smaller OpenXR-SDK supplies headers and loader sources with generated files already included.[40]

In November 2025, Khronos announced a Best Practices Validation Layer that warns about frame-timing and composition patterns that can behave inconsistently between runtimes, including some technically valid patterns. It is intended for development and debugging rather than production deployment. Validation warnings supplement application testing across target systems.[41]

OpenXR also provides an application boundary for experimental XR systems. The 2021 ILLIXR research paper describes integrating its modular research runtime with Monado to support pose queries and frame submissions. The authors explicitly state that their integration did not implement every OpenXR feature. This illustrates the difference between research use of an OpenXR interface and formal conformance of a complete product.[42]

Roadmap

The standard evolves through extensions and core revisions. OpenXR 1.1 incorporated selected extensions into the core API in 2024; the spatial interfaces followed as extensions in 2025 and 2026. Runtime and engine release notes determine when an application can use a published interface.[9][10][4]

External links

References

  1. ↑ 1.0 1.1 "Khronos Releases OpenXR 0.90 Provisional Specification for High-performance Access to AR and VR Platforms and Devices". The Khronos Group. 2019-03-18. https://www.khronos.org/news/press/khronos-releases-openxr-0.90-provisional-specification-for-high-performance-access-ar-vr-platforms-and-devices. Retrieved 2026-10-12.
  2. ↑ 2.0 2.1 2.2 2.3 2.4 2.5 "The OpenXR 1.1.63 Specification (with all registered extensions)". Khronos OpenXR Registry. https://registry.khronos.org/OpenXR/specs/1.1/html/xrspec.html. Retrieved 2026-10-12.
  3. ↑ 3.0 3.1 3.2 3.3 "OpenXR Loader - Design and Operation". Khronos OpenXR Registry. https://registry.khronos.org/OpenXR/specs/1.1/loader.html. Retrieved 2026-10-12.
  4. ↑ 4.0 4.1 4.2 4.3 4.4 "OpenXR Plugin 1.16.1". Unity Documentation. https://docs.unity3d.com/Packages/[email protected]/manual/index.html. Retrieved 2026-10-12.
  5. ↑ "Khronos Reveals API Updates & New Working Groups at GDC". The Khronos Group. 2017-02-27. https://www.khronos.org/news/press/khronos-reveals-api-updates-new-workgroups-at-gdc. Retrieved 2026-10-12.
  6. ↑ "The OpenXR Working Group is Here!". The Khronos Group. 2017-02-27. https://www.khronos.org/blog/the-openxr-working-group-is-here. Retrieved 2026-10-12.
  7. ↑ "Khronos Releases OpenXR 1.0 Specification Establishing a Foundation for the AR and VR Ecosystem". The Khronos Group. 2019-07-29. https://www.khronos.org/news/press/khronos-releases-openxr-1.0-specification-establishing-a-foundation-for-the-ar-and-vr-ecosystem. Retrieved 2026-10-12.
  8. ↑ 8.0 8.1 8.2 "Multiple Conformant OpenXR Implementations Ship Bringing to Life the Dream of Portable XR Applications". The Khronos Group. 2020-07-28. https://www.khronos.org/news/press/multiple-conformant-openxr-implementations-ship-bringing-to-life-the-dream-of-portable-xr-applications. Retrieved 2026-10-12.
  9. ↑ 9.0 9.1 9.2 9.3 9.4 "Khronos Releases OpenXR 1.1 to Further Streamline Cross-Platform XR Development". The Khronos Group. 2024-04-15. https://www.khronos.org/news/press/khronos-releases-openxr-1.1-to-further-streamline-cross-platform-xr-development. Retrieved 2026-10-12.
  10. ↑ 10.0 10.1 10.2 10.3 "Changelog for OpenXR-Docs and OpenXR-Registry Repos". KhronosGroup/OpenXR-Docs. 2026-09-01. https://github.com/KhronosGroup/OpenXR-Docs/blob/main/CHANGELOG.Docs.md. Retrieved 2026-10-12.
  11. ↑ 11.0 11.1 "OpenXR (2023.4)". Autodesk VRED Help. https://help.autodesk.com/view/VREDPRODUCTS/2024/ENU/?guid=openxr-vred-20234. Retrieved 2026-10-12.
  12. ↑ 12.0 12.1 "2 OpenXR Setup". OpenXR Tutorial. https://openxr-tutorial.com/android/vulkan/2-setup.html. Retrieved 2026-10-12.
  13. ↑ 13.0 13.1 13.2 "OpenXR". Microsoft Learn. 2023-02-01. https://learn.microsoft.com/en-us/windows/mixed-reality/develop/native/openxr. Retrieved 2026-10-12.
  14. ↑ 14.0 14.1 "Stepping Up: The Floor Is Yours with promotion of the XR_EXT_local_floor extension to OpenXR 1.1 Core". The Khronos Group. 2024-04-15. https://www.khronos.org/blog/stepping-up-the-floor-is-yours-with-promotion-of-the-xr-ext-local-floor-extension-to-openxr-1.1-core. Retrieved 2026-10-12.
  15. ↑ 15.0 15.1 "3 Graphics". OpenXR Tutorial. https://openxr-tutorial.com/android/vulkan/3-graphics.html. Retrieved 2026-10-12.
  16. ↑ 16.0 16.1 "Frame Submission". KhronosGroup/OpenXR-Guide. https://github.com/KhronosGroup/OpenXR-Guide/blob/main/chapters/frame_submission.md. Retrieved 2026-10-12.
  17. ↑ 17.0 17.1 "4 Interactions". OpenXR Tutorial. https://openxr-tutorial.com/android/vulkan/4-actions.html. Retrieved 2026-10-12.
  18. ↑ "Working group goals for Application Developers". KhronosGroup/OpenXR-Guide. https://github.com/KhronosGroup/OpenXR-Guide/blob/main/chapters/goals_design_philosophy.md. Retrieved 2026-10-12.
  19. ↑ "OpenXR Working Group Extension Processes". Khronos OpenXR Registry. https://registry.khronos.org/OpenXR/specs/1.1/extprocess.html. Retrieved 2026-10-12.
  20. ↑ 20.0 20.1 20.2 20.3 "OpenXR Conformant Products". The Khronos Group. https://www.khronos.org/conformance/adopters/conformant-products/openxr. Retrieved 2026-10-12.
  21. ↑ "Monado 21.0.0, an officially conformant OpenXR implementation!". Collabora. 2021-02-15. https://www.collabora.com/news-and-blog/news-and-events/monado-2100-officially-conformant-openxr-implementation.html. Retrieved 2026-10-12.
  22. ↑ "Introducing SteamVR 1.16". Valve / Steam Community. 2021-02-25. https://steamcommunity.com/games/250820/announcements/detail/3044967019267211915. Retrieved 2026-10-12.
  23. ↑ "OpenXR for Oculus". Meta Horizon OS Developers. 2020-07-27. https://developers.meta.com/horizon/blog/openxr-for-oculus/. Retrieved 2026-10-12.
  24. ↑ "OpenXR". VIVE Developer Resources. https://developer.vive.com/resources/openxr/. Retrieved 2026-10-12.
  25. ↑ "OpenXR Overview". Magic Leap Developer Documentation. 2025-11-11. https://developer-docs.magicleap.cloud/docs/guides/openxr/openxr-overview/. Retrieved 2026-10-12.
  26. ↑ "Features and functionality removed in Windows client". Microsoft Learn. https://learn.microsoft.com/en-us/windows/whats-new/removed-features. Retrieved 2026-10-12.
  27. ↑ "Spatial Computing Platform". Snapdragon Spaces. https://spaces.qualcomm.com/platform/. Retrieved 2026-10-12.
  28. ↑ "OpenXR". Varjo for developers. https://developer.varjo.com/docs/openxr/openxr. Retrieved 2026-10-12.
  29. ↑ "Develop with OpenXR". Android Developers. 2026-07-30. https://developer.android.com/develop/xr/openxr. Retrieved 2026-10-12.
  30. ↑ 30.0 30.1 "Godot OpenXR Vendors Plugin v4". Godot Engine. 2025-07-22. https://godotengine.org/article/godot-openxr-vendors-plugin-400/. Retrieved 2026-10-12.
  31. ↑ "Unreal Engine 4.23 released!". Unreal Engine. 2019-09-04. https://www.unrealengine.com/en-US/blog/unreal-engine-4-23-released. Retrieved 2026-10-12.
  32. ↑ "2.83 LTS". Blender. 2020-06-03. https://www.blender.org/download/releases/2-83/. Retrieved 2026-10-12.
  33. ↑ "StereoKit". StereoKit Documentation. https://stereokit.net/. Retrieved 2026-10-12.
  34. ↑ "Omniverse Spatial Core Concepts: XRCore, Profiles, Coordinate Systems, and Frame Scheduling". NVIDIA Omniverse Documentation. https://docs.omniverse.nvidia.com/xr/omniverse-spatial-docs/latest/development/core-concepts.html. Retrieved 2026-10-12.
  35. ↑ "UNIGINE SDK 2.19 Release". UNIGINE. 2024-08-16. https://unigine.com/news/2024/unigine-sdk-2-19-release. Retrieved 2026-10-12.
  36. ↑ 36.0 36.1 "WebXR Device API". W3C Immersive Web Working Group. https://immersive-web.github.io/webxr/. Retrieved 2026-10-12.
  37. ↑ "OpenXR: Chromium integration". Chromium Source. https://chromium.googlesource.com/chromium/src/+/HEAD/device/vr/openxr/README.md. Retrieved 2026-10-12.
  38. ↑ "VR: Chromium XR platform support". Chromium Source. https://chromium.googlesource.com/chromium/src/+/HEAD/device/vr/README.md. Retrieved 2026-10-12.
  39. ↑ "Khronos OpenXR Registry". The Khronos Group. https://registry.khronos.org/OpenXR/. Retrieved 2026-10-12.
  40. ↑ "OpenXR Software Development Kit (SDK) Sources Project". KhronosGroup/OpenXR-SDK-Source. https://github.com/KhronosGroup/OpenXR-SDK-Source. Retrieved 2026-10-12.
  41. ↑ "New OpenXR Validation Layer Helps Developers Build Robustly Portable XR Applications". The Khronos Group. 2025-11-13. https://www.khronos.org/blog/new-openxr-validation-layer-helps-developers-build-robustly-portable-xr-applications. Retrieved 2026-10-12.
  42. ↑ Muhammad Huzaifa et al. (2021-03-03). "Exploring Extended Reality with ILLIXR: A New Playground for Architecture Research". arXiv. arXiv:2004.04643v2. https://arxiv.org/html/2004.04643. Retrieved 2026-10-12.