2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
vr_module 構造体リファレンス
#include <
vr.h
>
この HAL を実装すると、バーチャル リアリティ(VR)アプリが使用されているときにコールバックを受け取ることができます。VR アプリには、次のような特別なディスプレイとパフォーマンスの要件があります。
-
センサーのレイテンシが低い - IMU、加速度計、ジャイロスコープからアプリケーションに表示されるコールバックまでのエンドツーエンドのレイテンシは非常に低くする必要があります(通常は 5 ms 未満)。これは、HIFI センサーのサポートに必要です。
-
ディスプレイの低レイテンシ - GPU 描画呼び出しから実際のディスプレイ更新までのエンドツーエンドのレイテンシは、可能な限り低くする必要があります。これは、SurfaceFlinger をシングルバッファ モードで使用し、描画呼び出しがディスプレイ スキャンアウトと正しく同期されるようにすることで実現されます。この動作は、EGL 拡張機能を通じてアプリに公開されます。これに必要な EGL 拡張機能については、下記をご覧ください。
-
低持続時間ディスプレイ - ディスプレイの持続時間の設定は、適度な明るさを維持しながら、できるだけ低く設定する必要があります。60 Hz で動作する一般的なディスプレイの場合、低持続と見なされるには、ピクセルが 3.5 ms 以下照明されている必要があります。これにより、VR 設定での移動中のゴースト現象を回避できます。BRIGHTNESS_MODE_LOW_PERSISTENCE が設定されている場合は、
lights.h
HAL から有効にする必要があります。
-
GPU と CPU の一貫したパフォーマンス - フレームごとに数回、一定の間隔で作業がバーストする VR アプリケーションの GPU/CPU 混合ワークロードの場合、CPU スケジューリングにより、アプリケーションのレンダリング スレッドの処理がスケジュールされたときから 1 ミリ秒以内に一貫して実行され、描画ウィンドウの終了前に完了するようにする必要があります。そのため、VR モードで現在実行中の VR アプリのレンダリング スレッド専用に 1 つの CPU コアを予約し、「top-app」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 を実装するベンダーは、上記の要件のいずれかに必要な VR 固有のパフォーマンス チューニングを有効にし、VR ディスプレイ モードに最適なデバイス機能を有効にするために、ヒントとして set_vr_mode を使用することを想定しています。上記の要件を満たす最適化が利用できない場合や、最適化が不要な場合は、set_vr_mode 呼び出しが何も行わない場合があります。
この HAL のメソッドは、Android フレームワークから同時に呼び出されることはありません。
ファイル
vr.h
の
82 行
の定義。
ランタイムの起動時に必要な状態を設定するための HAL 実装の便利なメソッド。これは、起動フェーズ中に VrManagerService から 1 回呼び出されます。この HAL のメソッドは、init の前に呼び出されません。
ファイル
vr.h
の
96 行
の定義。
void(* set_vr_mode)(struct
vr_module
*module, bool enabled)
|
VR モードの状態を設定します。enabled パラメータの状態は、false(VR モードが無効で、VR 固有の設定がすべてオフ)と true(VR モードが有効で、VR 固有の設定がすべてオン)です。
これは、Android システムが VR モードに入るか VR モードから抜けるたびに呼び出されます。これは通常、ユーザーが立体視レンダリングを行っている VR アプリに切り替えたり、切り替えたりしたときに発生します。
ファイル
vr.h
の
107 行
の定義。
この構造体のドキュメントは、次のファイルから生成されました。
-
hardware/libhardware/include/hardware/
vr.h
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-26 UTC。"],[],[],null,["# Android Hardware Abstraction Layer: vr_module Struct Reference\n\nvr_module Struct Reference\n==========================\n\n[Data Fields](#pub-attribs) \nvr_module Struct Reference \n\n`\n#include \u003c\n`[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)`\n\u003e\n`\n\n|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| struct [hw_module_t](/reference/hal/structhw__module__t) | [common](/reference/hal/structvr__module#a71ea01183b3998cad6a2301a37a42fc7) |\n| ||\n| void(\\* | [init](/reference/hal/structvr__module#a1621887a15b003a1ba7be81d52b0abb0) )(struct [vr_module](/reference/hal/structvr__module) \\*module) |\n| ||\n| void(\\* | [set_vr_mode](/reference/hal/structvr__module#a8c9e8990b6b65b068703cd615be68fb5) )(struct [vr_module](/reference/hal/structvr__module) \\*module, bool enabled) |\n| ||\n| void \\* | [reserved](/reference/hal/structvr__module#aa1a42885ba14c2168dc14d3f219b5e99) \\[8-2\\] |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nImplement this HAL to receive callbacks when a virtual reality (VR) application is being used. VR applications characteristically have a number of special display and performance requirements, including:\n\n- Low sensor latency - Total end-to-end latency from the IMU, accelerometer, and gyro to an application-visible callback must be extremely low (\\\u003c5ms typically). This is required for HIFI sensor support.\n- Low display latency - Total end-to-end latency from the GPU draw calls to the actual display update must be as low as possible. This is achieved by using SurfaceFlinger in a single-buffered mode, and assuring that draw calls are synchronized with the display scanout correctly. This behavior is exposed via an EGL extension to applications. See below for the EGL extensions needed for this.\n- Low-persistence display - Display persistence settings must be set as low as possible while still maintaining a reasonable brightness. For a typical display running at 60Hz, pixels should be illuminated for \\\u003c=3.5ms to be considered low-persistence. This avoids ghosting during movements in a VR setting, and should be enabled from the [lights.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/lights.h) HAL when BRIGHTNESS_MODE_LOW_PERSISTENCE is set.\n- Consistent performance of the GPU and CPU - When given a mixed GPU/CPU workload for a VR application with bursts of work at regular intervals several times a frame, the CPU scheduling should ensure that the application render thread work is run consistently within 1ms of when scheduled, and completed before the end of the draw window. To this end, a single CPU core must be reserved for solely for the currently running VR application's render thread while in VR mode, and made available in the \"top-app\" cpuset. Likewise, an appropriate CPU, GPU, and bus clockrate must be maintained to ensure that the rendering workload finishes within the time allotted to render each frame when the POWER_HINT_SUSTAINED_PERFORMANCE flag has been set in the [power.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/power.h) HAL while in VR mode when the device is not being thermally throttled.\n- Required EGL extensions must be present - Any GPU settings required to allow the above capabilities are required, including the EGL extensions: 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, and EGL_KHR_wait_sync.\n- Accurate thermal reporting - Accurate thermal temperatures and limits must be reported in the [thermal.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/thermal.h) HAL. Specifically, the current skin temperature must accurately be reported for DEVICE_TEMPERATURE_SKIN and the vr_throttling_threshold reported for this device must accurately report the temperature limit above which the device's thermal governor throttles the CPU, GPU, and/or bus clockrates below the minimum necessary for consistent performance (see previous bullet point).\n\n\nIn general, vendors implementing this HAL are expected to use set_vr_mode as a hint to enable VR-specific performance tuning needed for any of the above requirements, and to turn on any device features optimal for VR display modes. The set_vr_mode call may simply do nothing if no optimizations are available or necessary to meet the above requirements.\n\n\nNo methods in this HAL will be called concurrently from the Android framework.\n\n\nDefinition at line\n[82](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\nField Documentation\n-------------------\n\n\n|-----------------------------------------------------------------|\n| struct [hw_module_t](/reference/hal/structhw__module__t) common |\n\n\nCommon methods of the module. This\n*must*\nbe the first member of\n[vr_module](/reference/hal/structvr__module)\nas users of this structure may cast a\n[hw_module_t](/reference/hal/structhw__module__t)\nto a\n[vr_module](/reference/hal/structvr__module)\npointer in contexts where it's known that the\n[hw_module_t](/reference/hal/structhw__module__t)\nreferences a\n[vr_module](/reference/hal/structvr__module)\n.\n\n\nDefinition at line\n[89](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\n|-----------------------------------------------------------------------------|\n| void(\\* init)(struct [vr_module](/reference/hal/structvr__module) \\*module) |\n\n\nConvenience method for the HAL implementation to set up any state needed at runtime startup. This is called once from the VrManagerService during its boot phase. No methods from this HAL will be called before init.\n\n\nDefinition at line\n[96](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\n|------------------------|\n| void\\* reserved\\[8-2\\] |\n\n\nDefinition at line\n[110](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\n|--------------------------------------------------------------------------------------------------|\n| void(\\* set_vr_mode)(struct [vr_module](/reference/hal/structvr__module) \\*module, bool enabled) |\n\n\nSet the VR mode state. Possible states of the enabled parameter are: false - VR mode is disabled, turn off all VR-specific settings. true - VR mode is enabled, turn on all VR-specific settings.\n\n\nThis is called whenever the the Android system enters or leaves VR mode. This will typically occur when the user switches to or from a VR application that is doing stereoscopic rendering.\n\n\nDefinition at line\n[107](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)"]]