Mobile Native SDK Migration Guide (Deprecated)
Updated: Sep 29, 2022
Mobile SDK Deprecation
As of August 31, 2022, Mobile SDK and the VrApi library are no longer supported. Future updates will be delivered through OpenXR extensions and our OpenXR Mobile SDK, not through any new updates to Meta Mobile or PC APIs. - New apps must use OpenXR unless a waiver is granted.
- New apps will not have access to Meta Native Mobile APIs, but existing apps can continue using them.
- No assistance will be provided for creating new apps with Meta Native APIs. You will find recommendations for migrating existing apps to OpenXR in the developer guides.
- Only critical security, privacy, or safety issues in Meta Native APIs will be addressed.
- Any testing of Meta Native Mobile will be restricted to automated QA tests, only to ensure core features remain functional.
This section details migrating from earlier versions of the Mobile SDK for native development.
Migrating to Mobile SDK 33.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 32.0 to 33.0.
- This is a maintenance release. There are no developer-facing changes in this release.
Migrating to Mobile SDK 32.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 31.0 to 32.0.
- This is a maintenance release. There are no developer-facing changes in this release.
Migrating to Mobile SDK 31.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 29.0 to 31.0.
- This is a maintenance release. There are no developer-facing changes in this release.
Migrating to Mobile SDK 29.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 28.0 to 29.0.
- This is a maintenance release. There are no developer-facing changes in this release.
Migrating to Mobile SDK 28.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 27.0 to 28.0.
- Phase Sync, a frame timing management technique used to manage latency adaptively, is now available for Native mobile development. See Enable Phase Sync for more information.
Migrating to Mobile SDK 27.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 25.0 to 27.0.
- This is a maintenance release. There are no developer-facing changes in this release.
Migrating to Mobile SDK 25.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 23.0 to 25.0.
- Added a new entry point,
vrapi_CreateAndroidSurfaceSwapchain3
, for creating an Android Surface backed swapchain by passing platform-specific create flags defined in ovrAndroidSurfaceSwapChainFlags
. - The
vrapi_SubmitFrame
and associated structures have been marked deprecated and should no longer be used. The vrapi_SubmitFrame2
path should be used instead. - The
ovrModeFlag
, VRAPI_MODE_FLAG_FRONT_BUFFER_PROTECTED
, has been removed as protected mode is indicated at the swapchain level via the ovrAndroidSurfaceSwapChainFlags
flag VRAPI_ANDROID_SURFACE_SWAP_CHAIN_FLAG_PROTECTED. - The
ovrSystemStatus
, VRAPI_SYS_STATUS_FRONT_BUFFER_PROTECTED
, has been removed.
- When building samples, there is an issue when using the latest NDK release. Instead, use NDK 21 until the issue is resolved.
Migrating to Mobile SDK 23.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 20.0 to 23.0.
- The
ovrDeviceType
value, VRAPI_DEVICE_TYPE_OCULUSQUEST2,
has been added to the API. - The
ovrTouch
bit flags, ovrTouch_ThumbRest
, ovrTouch_LThumbRest
, and ovrTouch_RThumbRest
have been added to the API. - The
ovrEventType
value, VRAPI_EVENT_DISPLAY_REFRESH_RATE_CHANGE
, has been added to the API. This event is sent when the display refresh rate is changed by the system. - The
ovrSystemStatus
value, VRAPI_SYS_STATUS_SYSTEM_UX_ACTIVE
, has been removed from the API. - The
ovrSystemProperty
value, VRAPI_SYS_PROP_VIDEO_DECODER_LIMIT
, and corresponding structure, ovrVideoDecoderLimit
, have been removed from the API.
Migrating to Mobile SDK 20.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 19.0 to 20.0.
The ovrDeviceType
values, VRAPI_DEVICE_TYPE_OCULUSGO
and VRAPI_DEVICE_TYPE_MIVR_STANDALONE
, have been removed from the API.
The ovrModeFlags
flag, VRAPI_MODE_FLAG_FRONT_BUFFER_565
, has been removed from the API.
The ovrSystemStatus
value, VRAPI_SYS_STATUS_FRONT_BUFFER_565
, has been removed from the API.
The ovrProperty
value , VRAPI_BLOCK_REMOTE_BUTTONS_WHEN_NOT_EMULATING_HMT
, has been removed from the API.
The ovrSystemUIType
types, VRAPI_SYS_UI_KEYBOARD_MENU
and VRAPI_SYS_UI_FILE_DIALOG_MENU
, removed from the API.
vrapi_ShowFatalError
now marked deprecated and should no longer be used.
The deprecated vrapi_ShowSystemUIWithExtra
entry point has been removed from the public VrApi.
Migrating to Mobile SDK 19.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 18.0 to 19.0.
- A new
ovrTextureSwapChain
creation method, vrapi_CreateTextureSwapchain4
, and corresponding structure, ovrSwapChainCreateInfo
, have been added to the API. - A new
ovrControllerType
, ovrControllerType_StandardPointer
, and corresponding structure, ovrInputStandardPointerCapabilities
, have been added to the API. - The
vrapi_SetRemoteEmulation
function has been removed from the API and should no longer be used.
Migrating to Mobile SDK 18.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 17.0 to 18.0.
- A new
ovrLayerType
flag, VRAPI_LAYER_TYPE_EQUIRECT3
, and corresponding structure ovrLayerEquirect3
, have been added to the API. This allows specification of an equirectangular texture with a non-infinite radius at a specific location. - The
ovrSystemStatus
type, VRAPI_SYS_STATUS_DOCKED
, has been deprecated and removed from the API. - The
ovrSystemProperty
type, VRAPI_SYS_PROP_EXT_SDCARD_PATH
has been deprecated and removed from the API.
Migrating to Mobile SDK 17.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 16.0 to 17.0.
- A new ColorSpace API has been added to allow developers to set the color space of their app so that the appropriate colors are shown on the Meta Quest’s displays. See Override Color Space for more information.
- The ovrSystemProperty type,
VRAPI_SYS_PROP_HEADSET_TYPE
, and corresponding structure, ovrHeadsetType
, have been deprecated and removed from the API. - New
ovrInputStateHandStatus
types, ovrInputStateHandStatus_DominantHand
and ovrInputStateHandStatus_MenuPressed
, have been added to the API. These allow developers to set the dominant hand and handle system gestures performed on the non-dominant hand. Enable Hand Tracking for more information.
Migrating to Mobile SDK 16.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 15.0 to 16.0.
- Gamepad input API has been marked as deprecated and will be removed in a future release.
- The
ovrSystemProperty
value VRAPI_SYS_PROP_SRGB_LAYER_SOURCE_AVAILABLE
has been deprecated and removed from the API. This value is always true for Meta standalone devices. - The
ovrSystemProperty
value VRAPI_SYS_PROP_MULTIVIEW_AVAILABLE
has been deprecated and removed from the API. This value is always true for Meta standalone devices.
- Fixed Hand Tracking API export for c99.
Migrating to Mobile SDK 15.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 14.0 to 15.0.
- A new
ovrSystemStatus
, VRAPI_SYS_STATUS_SCREEN_CAPTURE_RUNNING
, has been added, which returns true when recording is enabled ovrControllerType_Headset
and associated structures have been removed.- The permission flag in the Android manifest to use hand tracking functionality has changed to:
<uses-permission android:name="com.oculus.permission.HAND_TRACKING" />
.
Migrating to Mobile SDK 14.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 13.0 to 14.0.
- There are no developer-facing changes in this release.
Migrating to Mobile SDK 13.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 12.0 to 13.0.
- Focus awareness is a feature that allows the Meta Quest system UI to appear as an overlay over an app, without requiring it to be paused. For more information, see the Enabling Focus Awareness topic.
Migrating to Mobile SDK 12.0
Versioning methodology has been updated to bring consistency to Oculus SDK releases. This release (12.0) follows Mobile SDK 1.28.
This section is intended to help you upgrade from the Oculus Mobile SDK version 1.28.0 to 12.0.
- Hand tracking is now supported on Meta Quest as a developer preview feature. See the “Hand Tracking” section of VrApi Input and the new VrHands sample for example usage.
- Dynamic foveation is now supported. See the “Dynamic Foveation” section of Fixed Foveated Rendering for more information.
- A new hand tracking API has been added.
- A new
ovrProperty
, VRAPI_DYNAMIC_FOVEATION_ENABLED
, has been provided which allows the application to specify whether dynamic foveation should be enabled. - A new event polling mechanism,
vrapi_PollEvent
, has been added to the API. - New
ovrSystemProperty
values VRAPI_SYS_PROP_HAS_ORIENTATION_TRACKING
and VRAPI_SYS_PROP_HAS_POSITION_TRACKING
have been added for querying device tracking capabilities.
Migrating to Mobile SDK 1.28.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 1.27.0 to 1.28.0.
There are no developer-facing changes in this release.
Migrating to Mobile SDK 1.27.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 1.26.0 to 1.27.0.
There are no developer-facing changes in this release.
Migrating to Mobile SDK 1.26.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 1.25.0 to 1.26.0.
In this release, the samples have been updated and refreshed.
- A new
ovrProperty
, VRAPI_DEVICE_EMULATION_MODE
, has been added to detect if an application is running in compatibility mode for older devices.
Migrating to Mobile SDK 1.25.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 1.24.0 to 1.25.0.
There are no developer-facing changes in this release.
- An issue with stale frame judder on Meta Quest when the latency mode is set to
VRAPI_EXTRA_LATENCY_MODE_OFF
has been resolved.
Migrating to Mobile SDK 1.24.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 1.23.0 to 1.24.0.
This release adds support for several new Vulkan features, all of which are demonstrated in the VrCubeWorld_Vulkan sample included with the SDK. These features are as follows:
- Vulkan Fixed Foveated Rendering (FFR)
- Vulkan Multiview
- Vulkan MSAA support
Additionally, protected content rendering is now supported on both Meta Quest and Oculus Go.
- The
vrapi_CreateAndroidSurfaceSwapChain2
function has been added to create an Android Surface SwapChain as a protected resource. - The
vrapi_GetTextureSwapChainBufferFoveationVulkan
function has been added to acquire the foveation Vulkan image associated with the SwapChain. - A new
ovrSystemStatus
, VRAPI_SYS_STATUS_USER_RECENTER_COUNT
, has been added for retrieving the number of user-initiated recenter operations. - A new
ovrFrameLayerFlag
, VRAPI_FRAME_LAYER_FLAG_FILTER_EXPENSIVE
, has been added to enable expensive filtering for a layer. This option is only useful for 2D layers that are high resolution (such as a remote desktop layer), typically double or more the target resolution. - Deprecated extended FrameParms support has been removed.
vrapi_GetEyeViewMatrix
has been removed from VrApi_Helpers.h
. See VrAppSupport/VrModel/Src/SceneView.cpp
GetEyeViewMatrix
for a valid replacement.
LibOVRKernel
has been removed from the SDK. Most LibOVRKernel
usage was replaced by the C++11 Standard Library equivalent. Any functionality that was not replaced was moved into header files at 1stParty/OVR/Include.
Migrating to Mobile SDK 1.23.0
This section is intended to help you upgrade from the Oculus Mobile SDK version 1.22.0 to 1.23.0.
This release provides support for Samsung Galaxy S10 smartphone.
- Added Samsung Galaxy S10 Device Type to the API.
- New
ovrTrackingStatus
flags were added: VRAPI_TRACKING_STATUS_POSITION_VALID
and VRAPI_TRACKING_STATUS_ORIENTATION_VALID
. Prior to these status bits, it was unclear how to treat orientation and position data when the TRACKED
status bits were unset. The new VALID
bits indicate whether the value delivered is usable for rendering or other computation. When the TRACKED
bit is unset, but the VALID
bit is set, the provided pose is usable, but is the result of some model or estimation heuristic.