vr_module 結構體參考資料
vr_module 結構體參考資料
#include <
vr.h
>
資料欄位 |
|
struct hw_module_t | 通用 |
void(* | init )(struct vr_module *module) |
void(* | set_vr_mode )(struct vr_module *module, bool enabled) |
void * | 保留 [8-2] |
詳細說明
實作此 HAL 時,請在使用虛擬實境 (VR) 應用程式時接收回呼。VR 應用程式通常具有許多特殊的顯示和效能需求,包括:
- 低感應器延遲:從 IMU、加速計和陀螺儀到應用程式可見回呼的總端對端延遲時間必須極低 (通常小於 5 毫秒)。這是支援 HIFI 感應器的必要條件。
- 低延遲顯示:從 GPU 繪圖呼叫到實際顯示更新的總端對端延遲時間必須盡可能低。這項功能是透過在單緩衝模式下使用 SurfaceFlinger,並確保繪圖呼叫與顯示掃描輸出正確同步,這項行為會透過 EGL 擴充功能公開給應用程式。請參閱下文,瞭解這項作業所需的 EGL 擴充功能。
- 低延遲螢幕:螢幕延遲設定必須盡可能調低,同時維持合理的亮度。對於以 60Hz 運作的一般螢幕,像素亮度應低於 3.5ms,才能算是低延遲。這可避免在 VR 設定中移動時出現重影,並應在設定 BRIGHTNESS_MODE_LOW_PERSISTENCE 時,從 lights.h HAL 啟用。
- GPU 和 CPU 的一致效能:如果 VR 應用程式有混合 GPU/CPU 工作負載,且工作會在每個影格內以規律間隔多次爆發,CPU 排程應確保應用程式轉譯執行緒的工作在排程後 1 毫秒內持續執行,並在繪圖視窗結束前完成。為此,在 VR 模式下,必須為目前執行中的 VR 應用程式算繪執行緒保留單一 CPU 核心,並在「頂層應用程式」cpuset 中提供。同樣地,在裝置未受到熱力限制的情況下,如果在 VR 模式下在 power.h HAL 中設定 POWER_HINT_SUSTAINED_PERFORMANCE 標記,則必須維持適當的 CPU、GPU 和匯流排時脈,確保算繪工作負載在每個影格可用的時間內完成。
- 必須提供必要的 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_throttling_threshold,以便準確回報溫度上限,超過該上限時,裝置的溫度控制器會將 CPU、GPU 和/或匯流排時脈降至維持穩定效能的最低必要值 (請參閱前述項目)。
一般來說,實作此 HAL 的供應商應使用 set_vr_mode 做為提示,啟用 VR 專屬的效能調整功能,以符合上述任何一項需求,並開啟任何最適合 VR 顯示模式的裝置功能。如果沒有可用或必要的最佳化方式來滿足上述要求,set_vr_mode 呼叫可能什麼也不做。
系統不會從 Android 架構同時呼叫這個 HAL 中的任何方法。
欄位說明文件
struct hw_module_t common |
模組的常用方法。這個 必須 是 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 enabled) |
這個結構體的說明文件是由下列檔案產生:
- hardware/libhardware/include/hardware/ vr.h