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 中的任何方法。

定义位于文件vr.h82行。

现场文档

结构体hw_module_t公共

模块的常用方法。这必须vr_module的第一个成员,因为该结构的用户可以在已知hw_module_t引用vr_module 的上下文中将hw_module_t强制转换为vr_module指针。

定义位于文件vr.h89行。

void(* init)(struct vr_module *module)

HAL 实现设置运行时启动所需的任何状态的便捷方法。这在引导阶段从 VrManagerService 调用一次。在 init 之前不会调用此 HAL 中的任何方法。

定义位于文件vr.h96行。

void* 保留[8-2]

定义位于文件vr.h的第110行。

void(* set_vr_mode)(struct vr_module *module, bool 启用)

设置 VR 模式状态。启用参数的可能状态有: false - VR 模式已禁用,关闭所有 VR 特定设置。 true - VR 模式已启用,打开所有 VR 特定设置。

每当 Android 系统进入或离开 VR 模式时都会调用此函数。当用户切换到正在进行立体渲染的 VR 应用程序或从正在进行立体渲染的 VR 应用程序切换时,通常会发生这种情况。

文件vr.h107行的定义。


该结构的文档是从以下文件生成的:
  • 硬件/libhardware/include/hardware/vr.h