Skip to main content
Version: 14 May 2024

OpenXR Extensions

This page provides lists of all available OpenXR extensions that you can use with the Magic Leap 2 (ML2) headset. To make it easier to understand how the OpenXR Runtime version listed for each extension maps to ML2 development cycles, the following release number translation table is provided:

OpenXR Runtime VersionOS Release
1.0.01.4.0
1.0.11.5.0
1.0.21.6.0
1.0.31.7.0

OpenXR Magic Leap Extensions

Developers working with Magic Leap 2 can extend the capabilities of the OpenXR runtime through a set of vendor-specific extensions. These extensions, prefixed with XR_ML_, unlock functionalities exclusive to Magic Leap 2 hardware and software. The following Magic Leap OpenXR extensions are currently available:

NameDescription1.0.01.0.11.0.21.0.3
XR_ENVIRONMENT_BLEND_MODE_ADDITIVEChoose the mode for how you want composition layers displayed - with no view of the physical world behind them, additively blended with the real world behind the display, or alpha-blended with the real world behind the display.XXXX
XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLENDThe composition layers are alpha-blended with the real world behind the display.XXXX
XR_ML_compatThis extension provides functionality to facilitate transitioning from Magic Leap SDK to OpenXR SDK, most notably interoperability between Coordinate Frame UUIDs and XrSpace.XXXX
XR_ML_frame_end_infoThis extension provides access to Magic Leap specific extensions to frame settings like focus distance, vignette, and protection.XXXX
XR_ML_global_dimmerThis extension provides control over the global dimmer panel of the Magic Leap 2. The Global Dimming™ feature dims the entire display without dimming digital content to make text and images more solid and precise.XXXX
XR_ML_localization_mapA Magic Leap localization map is a container that holds metadata about the scanned environment. It is a digital copy of a physical place. A localization map holds spatial anchors, dense mesh, planes, feature points, and positional data.EXPXX
XR_ML_marker_understandingThis extension can be used to track and query fiducial markers like QR codes, AprilTag markers, and ArUco markers, and detect, but not locate, 1D barcodes like Code 128, UPC-A. See the following example can be used to detect a marker relative to a local space and query the contents.EXPXXX
XR_ML_user_calibrationThis extension can be used to determine how well the device is calibrated for the current user of the device. The extension provides two events for this purpose: Headset Fit: Provides the quality of the fit of the headset on the user, Eye Calibration: Provides the quality of the user’s eye calibration.EXPXXX
XR_ML_ml2_controller_interactionThis extension defines the interaction profile for the Magic Leap 2 Controller.XXXX

Additional OpenXR Extensions

This section describes what additional OpenXR extensions are supported on which versions of the Magic Leap OS.

OpenXR ExtensionDescription1.0.01.0.11.0.21.0.3
OpenXR 1.0 CoreXXXX
XR_KHR_android_create_instanceUse this extension to create an XrInstance object on Android systems and provide required information from the application to the XR runtime.XXXX
XR_KHR_composition_layer_depthThis extension defines an extra layer type that allows applications to submit depth images along wtih color images in projection layers, i.e. XrCompositionLayerProjection.XXXX
XR_KHR_convert_timespec_timeThis extension provides two functions for converting between timespec monotonic time and XrTime. The XrConvertTimespecTimeToTimeKHR function converts from timespec time to XrTime, while the XrConvertTimeToTimespecTimeKHR function converts XrTime to timespec monotononic time. The primary use case for this functionality is to be able to synchronize events between the local system and the OpenXR system.XXXX
XR_KHR_opengl_es_enableThis extension must be provided by runtimes supporting applications using OpenGL ES APIs for rendering.XXXX
XR_KHR_vulkan_enableThis extension enables the use of the Vulkan graphics API in an OpenXR runtime. Without this extension, the OpenXR runtime may not be able to use any Vulkan swapchain images. This extension provides the mechanisms necessary for an application to generate a valid XrGraphicsBindingVulkanKHR structure in order to create a Vulkan-based XrSession. Note that during this process the application is responsible for creating all the required Vulkan objects. This extension also provides mechanisms for the application to interact with images acquired by calling XrEnumerateSwapchainImages.XXXX
XR_KHR_vulkan_enable2This extension enables the use of the Vulkan graphics API in an OpenXR runtime. Without this extension, the OpenXR runtime may not be able to use any Vulkan swapchain images. This extension provides the mechanisms necessary for an application to generate a valid XrGraphicsBindingVulkan2KHR structure in order to create a Vulkan-based XrSession. This extension also provides mechanisms for the application to interact with images acquired by calling XrEnumerateSwapchainImages.XXXX
XR_EXT_conformance_automationThe XR_EXT_conformance_automation allows conformance test and runtime developers to provide hints to the underlying runtime as to what input the test is expecting. This enables runtime authors to automate the testing of their runtime conformance. This is useful for achieving rapidly iterative runtime development whilst maintaining conformance for runtime releases.XXXX
XR_EXT_eye_gaze_interactionThis extension provides an XrPath for getting eye gaze input from an eye tracker to enable eye gaze interactions.XXXX
XR_EXT_hand_interactionThis extension enables applications to locate the individual joints of hand tracking inputs. It enables applications to render hands in XR experiences and interact with virtual objects using hand joints.XXXX
XR_EXT_hand_trackingThis extension enables applications to locate the individual joints of hand tracking inputs. It enables applications to render hands in XR experiences and interact with virtual objects using hand joints.XXXX
XR_EXT_local_floorThis extension is useful when an application needs to render seated-scale content that is not positioned relative to the physical floor and STAGE space is useful when an application needs to render standing-scale content that is relative to the physical floor.XXXX
XR_EXT_palm_poseThis extension defines a new "standard pose identifier" for interaction profiles, named palm_ext. The new identifier is a pose that can be used to place application-specific visual content such as avatar visuals that may or may not match human hands. This extension also adds a new input component path using this "palm_ext" pose identifier to existing interaction profiles when active. The application can use the …/input/palm_ext/pose component path to place visual content representing the user’s physical hand location. Application visuals may depict, for example, realistic human hands that are very simply animated or creative depictions such as an animal, an alien, or robot limb extremity.XXXX
XR_EXT_plane_detectionThis extension enables applications to detect planes in the scene.XXXX
XR_EXT_view_configuration_depth_rangeThis extension allows you to provide your application with the appropriate depth range at which to render content for each XrViewConfigurationView by providing additional view configuration information as defined by XrViewConfigurationDepthRangerEXT.XXXX
XR_MSFT_unbounded_reference_spaceThis extension allows an application to create an UNBOUNDED_MSFT reference space. This reference space enables the viewer to move freely through a complex environment, often many meters from where they started, while always optimizing for coordinate system stability near the viewer. This is done by allowing the origin of the reference space to drift as necessary to keep the viewer’s coordinates relative to the space’s origin stable.XXXX
XR_MSFT_composition_layer_reprojectionThis extension enables an application to provide additional reprojection information for a projection composition layer to help the runtime produce better hologram stability and visual quality.X
XR_MSFT_first_person_observerThis first-person observer view configuration enables the runtime to request the application to render an additional first-person view of the scene to be composed onto video frames being captured from a camera attached to and moved with the primary display on the form factor, which is generally for viewing on a 2D screen by an external observer. This first-person camera will be facing forward with roughly the same perspective as the primary views, and so the application should render its view to show objects that surround the user and avoid rendering the user’s body avatar. The runtime is responsible for composing the application’s rendered observer view onto the camera frame based on the chosen environment blend mode for this view configuration, as this extension does not provide the associated camera frame to the application.X
XR_MSFT_secondary_view_configurationThis extension allows an application to enable support for one or more secondary view configurations. A secondary view configuration is a well-known set of views that the runtime can make active while a session is running. In a frame where a secondary view configuration is active, the application’s single frame loop should additionally render into those active secondary views, sharing the frame waiting logic and update loop with the primary view configuration for that running session.X
XR_MND_headlessSome applications may wish to access XR interaction devices without presenting any image content on the display(s). This extension provides a mechanism for writing such an application using the OpenXR API.XXXX