Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
vr_module-Strukturreferenz
#include <
vr.h
>
Implementieren Sie diese HAL, um Rückrufe zu erhalten, wenn eine Virtual-Reality-Anwendung (VR) verwendet wird. VR-Anwendungen haben in der Regel eine Reihe spezieller Anzeige- und Leistungsanforderungen, darunter:
-
Niedrige Sensorlatenz: Die gesamte End-to-End-Latenz von der IMU, dem Beschleunigungsmesser und dem Gyroskop bis zu einem sichtbare Callback in der Anwendung muss extrem niedrig sein (normalerweise unter 5 ms). Dies ist für die Unterstützung von HIFI-Sensoren erforderlich.
-
Niedrige Displaylatenz: Die Gesamtlatenz von den GPU-Zeichneraufrufen bis zur tatsächlichen Displayaktualisierung muss so niedrig wie möglich sein. Dazu wird SurfaceFlinger im Single-Buffer-Modus verwendet und dafür gesorgt, dass die Zeichenaufrufe korrekt mit dem Display-Scanout synchronisiert werden. Dieses Verhalten wird über eine EGL-Erweiterung für Anwendungen bereitgestellt. Unten finden Sie die erforderlichen EGL-Erweiterungen.
-
Display mit geringer Nachleuchtzeit: Die Einstellungen für die Nachleuchtzeit des Displays müssen so niedrig wie möglich sein, um eine angemessene Helligkeit zu gewährleisten. Bei einem typischen Display mit 60 Hz sollten die Pixel maximal 3,5 ms lang beleuchtet werden, um als Display mit geringer Nachleuchtzeit zu gelten. Dadurch wird verhindert, dass bei Bewegungen in einer VR-Umgebung Ghosting auftritt. Die Funktion sollte über die HAL-Datei
lights.h
aktiviert werden, wenn BRIGHTNESS_MODE_LOW_PERSISTENCE festgelegt ist.
-
Gleichbleibende Leistung von GPU und CPU: Bei einer gemischten GPU-/CPU-Arbeitslast für eine VR-Anwendung mit Arbeitsspitzen in regelmäßigen Abständen mehrmals pro Frame sollte die CPU-Planung dafür sorgen, dass die Arbeit des Anwendungs-Render-Threads innerhalb von 1 ms nach der Planung konsistent ausgeführt und vor dem Ende des Zeichenfensters abgeschlossen wird. Dazu muss im VR-Modus ein einzelner CPU-Kern ausschließlich für den Render-Thread der aktuell ausgeführten VR-Anwendung reserviert und in der CPU-Gruppe „top-app“ verfügbar gemacht werden. Ebenso muss eine geeignete CPU-, GPU- und Bustaktrate beibehalten werden, damit die Rendering-Arbeitslast innerhalb der Zeit abgeschlossen wird, die für das Rendern jedes Frames vorgesehen ist, wenn das Flag POWER_HINT_SUSTAINED_PERFORMANCE in der HAL-Datei
power.h
im VR-Modus gesetzt ist und das Gerät nicht thermisch gedrosselt wird.
-
Erforderliche EGL-Erweiterungen müssen vorhanden sein: Alle GPU-Einstellungen, die für die oben genannten Funktionen erforderlich sind, einschließlich der EGL-Erweiterungen 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 und EGL_KHR_wait_sync.
-
Genaue Temperaturberichte: In der HAL-Datei
thermal.h
müssen genaue Temperaturen und Grenzwerte angegeben werden. Insbesondere muss die aktuelle Hauttemperatur für DEVICE_TEMPERATURE_SKIN korrekt angegeben werden und der für dieses Gerät gemeldete Wert für „vr_throttling_threshold“ muss das Temperaturlimit korrekt angeben, über dem der Temperaturregler des Geräts die CPU-, GPU- und/oder Bustaktraten unter das Minimum senkt, das für eine gleichbleibende Leistung erforderlich ist (siehe vorheriger Aufzählungspunkt).
Generell wird von Anbietern, die diese HAL implementieren, erwartet, dass sie „set_vr_mode“ als Hinweis verwenden, um die VR-spezifische Leistungsoptimierung zu aktivieren, die für eine der oben genannten Anforderungen erforderlich ist, und alle Gerätefunktionen zu aktivieren, die für VR-Anzeigemodi optimal sind. Der Aufruf von „set_vr_mode“ führt möglicherweise zu keiner Aktion, wenn keine Optimierungen verfügbar oder erforderlich sind, um die oben genannten Anforderungen zu erfüllen.
Keine Methoden in dieser HAL werden gleichzeitig vom Android-Framework aufgerufen.
Definition in Zeile
82
der Datei
vr.h
.
Diese praktische Methode für die HAL-Implementierung dient zum Einrichten des Zustands, der beim Starten der Laufzeit erforderlich ist. Diese Methode wird während der Bootphase einmal vom VrManagerService aufgerufen. Vor der Initialisierung werden keine Methoden aus dieser HAL aufgerufen.
Definition in Zeile
96
der Datei
vr.h
Definition in Zeile
110
der Datei
vr.h
.
void(* set_vr_mode)(struct
vr_module
*module, bool enabled)
|
Legen Sie den Status des VR-Modus fest. Mögliche Status des Parameters „enabled“ sind: „false“ – VR-Modus deaktiviert, alle VR-spezifischen Einstellungen deaktiviert. „true“ – VR-Modus aktiviert, alle VR-spezifischen Einstellungen aktiviert.
Diese Funktion wird immer dann aufgerufen, wenn das Android-System in den VR-Modus wechselt oder ihn verlässt. Das tritt in der Regel auf, wenn der Nutzer zu oder von einer VR-Anwendung wechselt, die ein stereoskopisches Rendering verwendet.
Definition in Zeile
107
der Datei
vr.h
Die Dokumentation für diese Struktur wurde aus der folgenden Datei generiert:
-
hardware/libhardware/include/hardware/
vr.h
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-26 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 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)"]]