You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
8.2 KiB
8.2 KiB
7.9. Virtual Reality
Android includes APIs and facilities to build "Virtual Reality" (VR) applications including high quality mobile VR experiences. Device implementations MUST properly implement these APIs and behaviors, as detailed in this section.
7.9.1. Virtual Reality Mode
Android includes support for [VR Mode]( https://developer.android.com/reference/android/app/Activity.html#setVrModeEnabled%28boolean, android.content.ComponentName%29), a feature which handles stereoscopic rendering of notifications and disables monocular system UI components while a VR application has user focus.
7.9.2. Virtual Reality Mode - High Performance
If device implementations support VR mode, they:
- [C-1-1] MUST have at least 2 physical cores.
- [C-1-2] MUST declare the
android.hardware.vr.high_performancefeature. - [C-1-3] MUST support sustained performance mode.
- [C-1-4] MUST support OpenGL ES 3.2.
- [C-1-5] MUST support
android.hardware.vulkan.level0. - SHOULD support
android.hardware.vulkan.level1 or higher. - [C-1-6] MUST implement
EGL_KHR_mutable_render_buffer,EGL_ANDROID_front_buffer_auto_refresh,EGL_ANDROID_get_native_client_buffer,EGL_KHR_fence_sync,EGL_KHR_wait_sync,EGL_IMG_context_priority,EGL_EXT_protected_content,EGL_EXT_image_gl_colorspace, and expose the extensions in the list of available EGL extensions. - [C-1-8] MUST implement
GL_EXT_multisampled_render_to_texture2,GL_OVR_multiview,GL_OVR_multiview2,GL_OVR_multiview_multisampled_render_to_texture,GL_EXT_protected_textures, and expose the extensions in the list of available GL extensions. - [C-SR] Are STRONGLY RECOMMENDED to implement
GL_EXT_external_buffer,GL_EXT_EGL_image_array, and expose the extensions in the list of available GL extensions. - [C-SR] Are STRONGLY RECOMMENDED to support Vulkan 1.1.
- [C-SR] Are STRONGLY RECOMMENDED to implement
VK_ANDROID_external_memory_android_hardware_buffer,VK_GOOGLE_display_timing,VK_KHR_shared_presentable_image, and expose it in the list of available Vulkan extensions. - [C-SR] Are STRONGLY RECOMMENDED to expose at least one Vulkan queue family where
flagscontain bothVK_QUEUE_GRAPHICS_BITandVK_QUEUE_COMPUTE_BIT, andqueueCountis at least 2. - [C-1-7] The GPU and display MUST be able to synchronize access to the shared front buffer such that alternating-eye rendering of VR content at 60fps with two render contexts will be displayed with no visible tearing artifacts.
- [C-1-9] MUST implement support for
AHardwareBufferflagsAHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER,AHARDWAREBUFFER_USAGE_SENSOR_DIRECT_DATAandAHARDWAREBUFFER_USAGE_PROTECTED_CONTENTas described in the NDK. - [C-1-10] MUST implement support for
AHardwareBuffers with any combination of the usage flagsAHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT,AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE,AHARDWAREBUFFER_USAGE_PROTECTED_CONTENTfor at least the following formats:AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM,AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM,AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM,AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT. - [C-SR] Are STRONGLY RECOMMENDED to support the allocation of
AHardwareBuffers with more than one layer and flags and formats specified in C-1-10. - [C-1-11] MUST support H.264 decoding at least 3840 x 2160 at 30fps, compressed to an average of 40Mbps (equivalent to 4 instances of 1920 x1080 at 30 fps-10 Mbps or 2 instances of 1920 x 1080 at 60 fps-20 Mbps).
- [C-1-12] MUST support HEVC and VP9, MUST be capable of decoding at least 1920 x 1080 at 30 fps compressed to an average of 10 Mbps and SHOULD be capable of decoding 3840 x 2160 at 30 fps-20 Mbps (equivalent to 4 instances of 1920 x 1080 at 30 fps-5 Mbps).
- [C-1-13] MUST support
HardwarePropertiesManager.getDeviceTemperaturesAPI and return accurate values for skin temperature. - [C-1-14] MUST have an embedded screen, and its resolution MUST be at least 1920 x 1080.
- [C-SR] Are STRONGLY RECOMMENDED to have a display resolution of at least 2560 x 1440.
- [C-1-15] The display MUST update at least 60 Hz while in VR Mode.
- [C-1-17] The display MUST support a low-persistence mode with ≤ 5 milliseconds persistence, persistence being defined as the amount of time for which a pixel is emitting light.
- [C-1-18] MUST support Bluetooth 4.2 and Bluetooth LE Data Length Extension section 7.4.3.
- [C-1-19] MUST support and properly report
Direct Channel Type
for all of the following default sensor types:
TYPE_ACCELEROMETERTYPE_ACCELEROMETER_UNCALIBRATEDTYPE_GYROSCOPETYPE_GYROSCOPE_UNCALIBRATEDTYPE_MAGNETIC_FIELDTYPE_MAGNETIC_FIELD_UNCALIBRATED
- [C-SR] Are STRONGLY RECOMMENDED to support the
TYPE_HARDWARE_BUFFERdirect channel type for all Direct Channel Types listed above. - [C-1-21] MUST meet the gyroscope, accelerometer, and magnetometer related
requirements for
android.hardware.hifi_sensors, as specified in section 7.3.9. - [C-SR] Are STRONGLY RECOMMENDED to support the
android.hardware.sensor.hifi_sensorsfeature. - [C-1-22] MUST have end-to-end motion to photon latency not higher than 28 milliseconds.
- [C-SR] Are STRONGLY RECOMMENDED to have end-to-end motion to photon latency not higher than 20 milliseconds.
- [C-1-23] MUST have first-frame ratio, which is the ratio between the brightness of pixels on the first frame after a transition from black to white and the brightness of white pixels in steady state, of at least 85%.
- [C-SR] Are STRONGLY RECOMMENDED to have first-frame ratio of at least 90%.
- MAY provide an exclusive core to the foreground
application and MAY support the
Process.getExclusiveCoresAPI to return the numbers of the cpu cores that are exclusive to the top foreground application.
If exclusive core is supported, then the core:
- [C-2-1] MUST not allow any other userspace processes to run on it (except device drivers used by the application), but MAY allow some kernel processes to run as necessary.