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_hfresh、EGL_EXT_profidted_Fy_Fal_HR_
- 準確的熱報告 - 必須在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