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

定義位於檔案 vr.h 82 行。

欄位說明文件

struct hw_module_t common

模組的常用方法。這個 必須 vr_module 的首位成員,因為這個結構的使用者可能會在已知 hw_module_t 參照 vr_module 的情況下,將 hw_module_t 投放至 vr_module 指標。

定義位於檔案 vr.h 的 89 行。

void(* init)(struct vr_module *module)

方便實作 HAL 的方法,可在執行階段啟動時設定所需的任何狀態。在 VrManagerService 的啟動階段,這個方法會從中呼叫一次。在初始化之前,系統不會呼叫這個 HAL 的任何方法。

定義位於檔案 vr.h 96 行。

void* reserved[8-2]

定義位於檔案 vr.h 110 行。

void(* set_vr_mode)(struct vr_module *module, bool enabled)

設定 VR 模式狀態。enabled 參數的可能狀態如下:false - 已停用 VR 模式,請關閉所有 VR 專屬設定。true - 已啟用 VR 模式,請開啟所有 VR 專屬設定。

每當 Android 系統進入或退出 VR 模式時,就會呼叫這個方法。這種情況通常會發生在使用者切換至或離開正在執行立體渲染的 VR 應用程式時。

定義位於檔案 vr.h 107 行。


這個結構體的說明文件是由下列檔案產生:
  • hardware/libhardware/include/hardware/ vr.h