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) |
ボイド* | 予約済み[8-2] |
詳細な説明
このHALを実装して、仮想現実(VR)アプリケーションが使用されているときにコールバックを受信します。 VRアプリケーションには、次のような多くの特別なディスプレイとパフォーマンスの要件があります。
- センサーの待ち時間が短い-IMU、加速度計、ジャイロからアプリケーションに表示されるコールバックまでのエンドツーエンドの待ち時間の合計は、非常に低くする必要があります(通常は5ミリ秒未満)。これは、HIFIセンサーのサポートに必要です。
- 低いディスプレイレイテンシー-GPU描画呼び出しから実際のディスプレイアップデートまでのエンドツーエンドのレイテンシーの合計は、可能な限り低くする必要があります。これは、SurfaceFlingerをシングルバッファーモードで使用し、描画呼び出しがディスプレイスキャンアウトと正しく同期されるようにすることで実現されます。この動作は、EGL拡張機能を介してアプリケーションに公開されます。これに必要なEGL拡張機能については、以下を参照してください。
- 低持続性ディスプレイ-適度な明るさを維持しながら、ディスプレイの持続性設定を可能な限り低く設定する必要があります。 60Hzで動作する一般的なディスプレイの場合、低持続性と見なされるには、ピクセルを3.5ms未満点灯させる必要があります。これにより、VR設定での移動中のゴーストが回避されるため、BRIGHTNESS_MODE_LOW_PERSISTENCEが設定されている場合はlights.hHALから有効にする必要があります。
- GPUとCPUの一貫したパフォーマンス-フレームの数回の定期的な間隔で作業のバーストを伴うVRアプリケーションの混合GPU / CPUワークロードが与えられた場合、CPUスケジューリングは、アプリケーションのレンダリングスレッドの作業がいつから1ミリ秒以内に一貫して実行されるようにする必要がありますスケジュールされ、描画ウィンドウが終了する前に完了します。このため、単一のCPUコアは、VRモードで現在実行中のVRアプリケーションのレンダリングスレッド専用に予約し、「トップアプリ」CPUセットで使用できるようにする必要があります。同様に、適切なCPU、GPU、およびバスクロックレートを維持して、デバイスがVRモードのときにPOWER_HINT_SUSTAINED_PERFORMANCEフラグがpower.h HALに設定されている場合、各フレームのレンダリングに割り当てられた時間内にレンダリングワークロードが終了するようにする必要があります。熱的にスロットルされていません。
- 必要なEGL拡張機能が存在する必要があります-EGL拡張機能を含む上記の機能を許可するために必要なGPU設定が必要です: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_
- 正確な熱レポート-正確な熱温度と制限は、 thermal.hHALでレポートする必要があります。具体的には、現在のスキン温度をDEVICE_TEMPERATURE_SKINについて正確に報告する必要があり、このデバイスについて報告されるvr_throttling_thresholdは、デバイスのサーマルガバナーがCPU、GPU、および/またはバスのクロックレートを一貫したパフォーマンスに必要な最小値より低く調整する温度制限を正確に報告する必要があります(前の箇条書きを参照してください)。
一般に、このHALを実装するベンダーは、上記の要件のいずれかに必要なVR固有のパフォーマンス調整を有効にし、VR表示モードに最適なデバイス機能をオンにするヒントとしてset_vr_modeを使用することが期待されます。上記の要件を満たすために利用可能な最適化がない場合、または必要な場合、set_vr_mode呼び出しは単に何もしません。
このHALのメソッドは、Androidフレームワークから同時に呼び出されることはありません。
フィールドドキュメント
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) |
この構造体のドキュメントは、次のファイルから生成されました。
- ハードウェア/ libhardware / include / hardware / vr.h