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 Version | OS Release |
---|---|
1.0.0 | 1.4.0 |
1.0.1 | 1.5.0 |
1.0.2 | 1.6.0 |
1.0.3 | 1.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:
Name | Description | 1.0.0 | 1.0.1 | 1.0.2 | 1.0.3 |
---|---|---|---|---|---|
XR_ENVIRONMENT_BLEND_MODE_ADDITIVE | Choose 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. | X | X | X | X |
XR_ENVIRONMENT_BLEND_MODE_ALPHA_BLEND | The composition layers are alpha-blended with the real world behind the display. | X | X | X | X |
XR_ML_compat | This extension provides functionality to facilitate transitioning from Magic Leap SDK to OpenXR SDK, most notably interoperability between Coordinate Frame UUIDs and XrSpace. | X | X | X | X |
XR_ML_frame_end_info | This extension provides access to Magic Leap specific extensions to frame settings like focus distance, vignette, and protection. | X | X | X | X |
XR_ML_global_dimmer | This 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. | X | X | X | X |
XR_ML_localization_map | A 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. | EXP | X | X | |
XR_ML_marker_understanding | This 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. | EXP | X | X | X |
XR_ML_user_calibration | This 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. | EXP | X | X | X |
XR_ML_ml2_controller_interaction | This extension defines the interaction profile for the Magic Leap 2 Controller. | X | X | X | X |
Additional OpenXR Extensions
This section describes what additional OpenXR extensions are supported on which versions of the Magic Leap OS.
OpenXR Extension | Description | 1.0.0 | 1.0.1 | 1.0.2 | 1.0.3 |
---|---|---|---|---|---|
OpenXR 1.0 Core | X | X | X | X | |
XR_KHR_android_create_instance | Use this extension to create an XrInstance object on Android systems and provide required information from the application to the XR runtime. | X | X | X | X |
XR_KHR_composition_layer_depth | This extension defines an extra layer type that allows applications to submit depth images along wtih color images in projection layers, i.e. XrCompositionLayerProjection . | X | X | X | X |
XR_KHR_convert_timespec_time | This 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. | X | X | X | X |
XR_KHR_opengl_es_enable | This extension must be provided by runtimes supporting applications using OpenGL ES APIs for rendering. | X | X | X | X |
XR_KHR_vulkan_enable | This 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 . | X | X | X | X |
XR_KHR_vulkan_enable2 | This 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 . | X | X | X | X |
XR_EXT_conformance_automation | The 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. | X | X | X | X |
XR_EXT_eye_gaze_interaction | This extension provides an XrPath for getting eye gaze input from an eye tracker to enable eye gaze interactions. | X | X | X | X |
XR_EXT_hand_interaction | This 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. | X | X | X | X |
XR_EXT_hand_tracking | This 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. | X | X | X | X |
XR_EXT_local_floor | This 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. | X | X | X | X |
XR_EXT_palm_pose | This 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. | X | X | X | X |
XR_EXT_plane_detection | This extension enables applications to detect planes in the scene. | X | X | X | X |
XR_EXT_view_configuration_depth_range | This 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 . | X | X | X | X |
XR_MSFT_unbounded_reference_space | This 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. | X | X | X | X |
XR_MSFT_composition_layer_reprojection | This 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_observer | This 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_configuration | This 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_headless | Some 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. | X | X | X | X |