Build with supported OpenXR extensions

Applicable XR devices
This guidance helps you build experiences for these types of XR devices.
XR Headsets
Wired XR Glasses

Android XR supports OpenXR through the OpenXR 1.1 specification and a long list of third party vendor extensions. Using these extensions offers you that familiar experience when developing for XR. Some of these capabilities require Android runtime permissions. If you are looking to build directly on the OpenXR APIs, you can find the required header files in the jetpack-xr-natives repository.

Android XR Vendor Extensions

Extension Name

Description

Spatial API Version

XR_ANDROID_anchor_sharing_export

Anchors created by an application using XR_ANDROID_trackables are tied to a specific session and thus not visible to other...

v1

XR_ANDROID_body_tracking

Uses IK to determine body position based on head and hands position.
Permissions: Body Tracking

v2

XR_ANDROID_composition_layer_passthrough_mesh

For devices that support multiple environment blend modes.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_depth_texture

This extension allows the application to request depth maps of the real-world environment around the headset and query...
Permissions: SCENE_UNDERSTANDING_FINE

v1

XR_ANDROID_device_anchor_persistence

This extension allows the application to persist.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_enumerate_system_extension_properties

This extension allows applications to determine which extensions are supported by the current system configuration.

v3

XR_ANDROID_eye_tracking

This extension enables applications to obtain position and orientation of the user's eyes, as well as eye tracking status.
Permissions: EYE_TRACKING_FINE

v1

XR_ANDROID_face_tracking

This extension enables applications to get weights of blend shapes and render facial expressions in XR experiences.
Permissions: FACE_TRACKING

v1

XR_ANDROID_face_tracking_data_source

This extension enables applications to get face tracking data from multiple data sources.
Permissions: FACE_TRACKING, RECORD_AUDIO

v3

XR_ANDROID_hand_mesh

This extension enables hand tracking inputs represented as a dynamic hand mesh.
Permissions: HAND_TRACKING

v1

XR_ANDROID_light_estimation

This extension allows the application to request data representing the lighting of the real-world environment around the headset.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_light_estimation_cubemap

This extension builds upon the basic XR_ANDROID_light_estimation extension.
Permissions: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_mouse_interaction

This extension provides an XrPath for getting mouse input and defines one commonly used action pose for user mouse profiles...

v1

XR_ANDROID_passthrough_camera_state

The passthrough camera can take time to start up and might not be immediately available.

v1

XR_ANDROID_performance_metrics

This extension provides APIs to enumerate and query various performance metrics counters of the current XR device.

v1

XR_ANDROID_raycast

This extension allows the application to perform raycasts against trackables in the environment.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_recommended_resolution

This extension allows the runtime to notify the application when the recommended resolution changes.

v1

XR_ANDROID_recommended_settings

The user's default environment can: be in a variety of states using a combination of a blend mode and input modality.

v1

XR_ANDROID_scene_meshing

This extension is intended to provide meshes that approximately represent the physical objects in the user's environment.

v1

XR_ANDROID_spatial_anchor_space

The xrCreateSpatialAnchorEXT function defined in the XR_EXT_spatial_anchor extension allows applications to create spatial...
Permissions: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_annotation_tracking

This extension provides the annotation tracking capability for the <<XR_EXT_spatial_entity>> extension to tracking various...
Permissions: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_component_subsumed_by

This extension builds on XR_EXT_spatial_entity and provides a new component for XR_SPATIAL_CAPABILITY_PLANE_TRACKING_EXT to...
Permissions: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_discovery_raycast

This extension builds on XR_EXT_spatial_entity and provides raycast functionality for existing spatial capabilities.
Permissions: SCENE_UNDERSTANDING_FINE

v3

XR_ANDROID_spatial_entity_bound_anchor

This extension allows applications to create and attach anchors to spatial entities.
Permissions: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_spatial_object_tracking

This extension builds on XR_EXT_spatial_entity and defines a spatial capability for tracking a set of predefined physical...
Permissions: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables

This extension allows the application to access trackables from the physical environment.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_image

This extension enables tracking of planar images as specified by sets of input reference images.
Permissions: SCENE_UNDERSTANDING_COARSE

v3

XR_ANDROID_trackables_marker

This extension enables physical marker tracking.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_object

This extension enables physical object tracking.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_trackables_qr_code

This extension enables physical QR code tracking and QR code data decoding.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_ANDROID_unbounded_reference_space

This extension allows applications to create an XR_REFERENCE_SPACE_TYPE_UNBOUNDED_ANDROID reference space.

v1

Third-party extensions

Extension Name

Description

Spatial API Version

XR_MND_headless

Some applications might need to access XR interaction devices without presenting any image content on the display or displays.

v1

XR_KHR_binding_modification

This extension adds an optional structure that can be included on the XrInteractionProfileSuggestedBinding::next chain passed...

v1

XR_EXT_debug_utils

Due to the nature of the OpenXR interface, there is very little error information available to the developer and application.

v1

XR_EXT_hand_tracking

This extension enables applications to locate the individual joints of hand tracking inputs.
Permissions: HAND_TRACKING

v1

XR_EXT_performance_settings

This extension defines an API for the application to give performance hints to the runtime and for the runtime to send...

v1

XR_FB_display_refresh_rate

On platforms which support dynamically adjusting the display refresh rate.

v1

XR_FB_swapchain_update_state

This extension enables the application to modify and query specific mutable state associated with a swapchain.

v1

XR_FB_foveation

Foveation in the context of XR is a rendering technique that allows the area of an image near the focal point or fovea of the...

v1

XR_FB_foveation_configuration

On Facebook HMDs, developers can create foveation profiles generated by the runtime for the optical properties and performance.

v1

XR_FB_foveation_vulkan

The Vulkan graphics API requires an image to be applied to the swapchain to apply a foveation pattern.

v1

XR_FB_space_warp

This extension provides support to enable space warp technology on application.

v1

XR_KHR_opengl_es_enable

This extension must be provided by runtimes supporting applications using OpenGL ES APIs for rendering.

v1

XR_KHR_android_create_instance

When the application creates an XrInstance object on Android systems.

v1

XR_KHR_android_surface_swapchain

A common activity in XR is to view an image stream.

v1

XR_KHR_android_thread_settings

For XR to be comfortable, it is important for applications to deliver frames quickly and consistently.

v1

XR_KHR_composition_layer_color_scale_bias

Color scale and bias are applied to a layer color during composition, after its conversion to premultiplied alpha representation.

v1

XR_KHR_composition_layer_cube

This extension adds an additional layer type that enables direct sampling from cubemaps.

v1

XR_KHR_composition_layer_cylinder

This extension adds an additional layer type where the XR runtime must map a texture stemming from a swapchain onto the inside...

v1

XR_KHR_composition_layer_depth

This extension defines an extra layer type which allows applications to submit depth images along with color images in...

v1

XR_KHR_composition_layer_equirect

This extension adds an additional layer type where the XR runtime must map an equirectangular coded image stemming from a...

v1

XR_KHR_composition_layer_equirect2

This extension adds an additional layer type where the XR runtime must map an equirectangular coded image stemming from a...

v1

XR_KHR_convert_timespec_time

This extension provides two functions for converting between timespec monotonic time and XrTime.

v1

XR_KHR_vulkan_enable

This extension enables the use of the Vulkan graphics API in an OpenXR runtime.

v1

XR_KHR_vulkan_enable2

This extension enables the use of the Vulkan graphics API in an OpenXR runtime.

v1

XR_KHR_loader_init

On some platforms, before loading can occur the loader must be initialized with platform-specific parameters.

v1

XR_KHR_loader_init_android

On Android, some loader implementations need the application to provide additional information on initialization.

v1

XR_KHR_swapchain_usage_input_attachment_bit

This extension enables an application to specify that swapchain images should be created in a way so that they can be used as...

v1

XR_EXT_dpad_binding

This extension allows the application to bind one or more digital actions to a trackpad or thumbstick as though it were a dpad...

v1

XR_EXT_uuid

This extension defines a Universally Unique Identifier that follows RFC 4122.

v1

XR_FB_composition_layer_depth_test

This extension enables depth-tested layer composition.

v1

XR_EXT_eye_gaze_interaction

This extension provides an XrPath for getting eye gaze input from an eye tracker to enable eye gaze interactions.
Permissions: EYE_TRACKING_FINE

v1

XR_EXT_hand_interaction

This extension defines four commonly used action poses for all user hand interaction profiles including both hand tracking...

v1

XR_KHR_visibility_mask

This extension support the providing of a per-view drawing mask for applications.

v1

XR_META_foveation_eye_tracked

Eye tracked foveated rendering renders lower pixel density in the periphery of the user’s gaze.
Permissions: EYE_TRACKING_FINE

v1

XR_FB_hand_tracking_aim

The XR_EXT_hand_tracking extension provides a list of hand joint poses which represent the current configuration of the...
Permissions: HAND_TRACKING

v1

XR_EXT_palm_pose

This extension defines a new "standard pose identifier" for interaction profiles, named "palm_ext".

v1

XR_VARJO_foveated_rendering

Varjo headsets provide extremely high pixel density displays in the center area of the display.
Permissions: EYE_TRACKING_FINE

v1

XR_VARJO_quad_views

This extension adds a new view configuration type - XR_VIEW_CONFIGURATION_TYPE_PRIMARY_QUAD_VARJO to XrViewConfigurationType...

v1

XR_META_vulkan_swapchain_create_info

Using this extension, a Vulkan-based application can pass through additional VkImageCreateFlags or VkImageUsageFlags by...

v1

XR_FB_hand_tracking_mesh

The XR_EXT_hand_tracking extension provides a list of hand joint poses but no mechanism to render a skinned hand mesh.
Permissions: HAND_TRACKING

v1

XR_FB_composition_layer_image_layout

This extension does not define a new composition layer type.

v1

XR_KHR_maintenance1

XR_KHR_maintenance1 adds a collection of minor features that were intentionally left out or overlooked from the original...

v1

XR_FB_composition_layer_settings

This extension allows applications to request the use of processing options such as sharpening or super-sampling on a...

v1

XR_KHR_locate_spaces

This extension introduces the xrLocateSpacesKHR function.

v1

XR_EXT_local_floor

The core OpenXR spec contains two world-locked reference space XrSpace types in XrReferenceSpaceType.

v1

XR_EXT_spatial_marker_tracking

This extension builds on XR_EXT_spatial_entity and allows applications to detect and track markers in their environment.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_persistence

This extension allows applications to discover and correlate spatial entities across application sessions.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_anchor

This extension builds on XR_EXT_spatial_entity and allows applications to create spatial anchors.
Permissions: SCENE_UNDERSTANDING_COARSE

v1

XR_EXT_spatial_plane_tracking

This extension builds on XR_EXT_spatial_entity and defines the plane tracking spatial capability for the spatial entity framework.

v1

XR_EXT_spatial_entity

This extension introduces the concepts and foundations for scene understanding and spatial reasoning in OpenXR.

v1

XR_EXT_future

In XR systems there are certain operations that are long running and don't reasonably complete within a normal frame loop.

v1

XR_FB_color_space

XR devices might use a color space that is different from many monitors used in development.

v1

XR_EXT_composition_layer_inverted_alpha

This extension provides a flag which, when applied to a composition layer, inverts the interpretation of the alpha value in...

v1

XR_EXT_frame_synthesis

This extension provides support to enable frame synthesis on applications based on additional application provided data.

v3

XR_QCOM_trackables_image_operations

Provides Qualcomm image tracking operations for trackables.

v3

XR_QCOM_trackables_qr_code_operations

v3

XR_EXT_user_presence

This extension introduces a new event to notify when the system detected the change of user presence.

v3

XR_KHR_extended_struct_name_lengths

This extension extends the maximum struct name sizes and provides a new function to access these new extended names.

v3

XR_EXT_interaction_profile_battery_state_display

XR_EXT_interaction_profile_battery_state_display provides a mechanism for applications to query the runtime for battery state...

v3


OpenXR™ and the OpenXR logo are trademarks owned by The Khronos Group Inc. and are registered as a trademark in China, the European Union, Japan and the United Kingdom.