vr_module 结构参考
vr_module 结构参考
#include < vr.h >
数据字段 | |
结构体hw_module_t | 常见的 |
空白(* | 初始化)(结构vr_module *模块) |
空白(* | set_vr_mode )(struct vr_module *module, bool 启用) |
空白 * | 保留[8-2] |
详细说明
实现此 HAL 以在使用虚拟现实 (VR) 应用程序时接收回调。 VR 应用程序具有许多特殊的显示和性能要求,包括:
- 低传感器延迟 - 从 IMU、加速度计和陀螺仪到应用程序可见回调的总端到端延迟必须极低(通常 <5 毫秒)。这是 HIFI 传感器支持所必需的。
- 低显示延迟 - 从 GPU 绘制调用到实际显示更新的总端到端延迟必须尽可能低。这是通过在单缓冲模式下使用 SurfaceFlinger 并确保绘制调用与显示扫描输出正确同步来实现的。此行为通过应用程序的 EGL 扩展公开。请参阅下文了解所需的 EGL 扩展。
- 低余辉显示 - 显示余辉设置必须设置得尽可能低,同时仍保持合理的亮度。对于以 60Hz 运行的典型显示器,像素点亮时间应小于等于 3.5 毫秒,才被视为低余辉。这可以避免在 VR 设置中移动期间出现重影,并且应在设置 BRIGHTNESS_MODE_LOW_PERSISTENCE 时从lighting.h HAL 启用。
- GPU 和 CPU 的一致性能 - 当为 VR 应用程序提供混合 GPU/CPU 工作负载且每帧定期多次突发工作时,CPU 调度应确保应用程序渲染线程工作在 1 毫秒内一致运行计划并在抽奖窗口结束之前完成。为此,必须在 VR 模式下为当前运行的 VR 应用程序的渲染线程保留一个 CPU 核心,并在“顶级应用程序”CPU 集中可用。同样,必须保持适当的 CPU、GPU 和总线时钟频率,以确保在设备处于 VR 模式时,当power.h HAL 中设置了 POWER_HINT_SUSTAINED_PERFORMANCE 标志时,渲染工作负载在分配给渲染每个帧的时间内完成。没有受到热节流。
- 必须存在必需的 EGL 扩展 - 需要允许上述功能所需的任何 GPU 设置,包括 EGL 扩展:EGL_ANDROID_create_native_client_buffer、EGL_ANDROID_front_buffer_auto_refresh、EGL_EXT_protected_content、EGL_KHR_mutable_render_buffer、EGL_KHR_reusable_sync 和 EGL_KHR_wait_sync。
- 准确的热报告 - 必须在Thermal.h HAL 中报告准确的热温度和限制。具体来说,必须准确报告 DEVICE_TEMPERATURE_SKIN 的当前皮肤温度,并且为此设备报告的 vr_throtdling_threshold 必须准确报告温度限制,高于该温度限制,设备的热调节器将 CPU、GPU 和/或总线时钟速率限制在一致性能所需的最低值以下(请参阅前面的要点)。
一般来说,实现此 HAL 的供应商应使用 set_vr_mode 作为提示,以启用满足上述任何要求所需的 VR 特定性能调整,并打开最适合 VR 显示模式的任何设备功能。如果没有可用的优化或没有必要进行优化来满足上述要求,则 set_vr_mode 调用可能不会执行任何操作。
Android 框架不会同时调用此 HAL 中的任何方法。
现场文档
结构体hw_module_t公共 |
模块的常用方法。这必须是vr_module的第一个成员,因为该结构的用户可以在已知hw_module_t引用vr_module 的上下文中将hw_module_t强制转换为vr_module指针。
void(* init)(struct vr_module *module) |
void(* set_vr_mode)(struct vr_module *module, bool 启用) |
该结构的文档是从以下文件生成的:
- 硬件/libhardware/include/hardware/vr.h