À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Référence de la struct vr_module
#include <
vr.h
>
Implémentez ce HAL pour recevoir des rappels lorsqu'une application de réalité virtuelle (RV) est utilisée. Les applications de réalité virtuelle présentent généralement un certain nombre d'exigences spéciales en termes d'affichage et de performances, y compris les suivantes:
-
Faible latence des capteurs : la latence totale de bout en bout entre l'IMU, l'accéléromètre et le gyroscope et un rappel visible par l'application doit être extrêmement faible (généralement inférieure à 5 ms). Cette étape est nécessaire pour la compatibilité avec les capteurs HIFI.
-
Latence d'affichage faible : la latence totale de bout en bout entre les appels de dessin du GPU et la mise à jour réelle de l'affichage doit être aussi faible que possible. Pour ce faire, utilisez SurfaceFlinger en mode à tampon unique et assurez-vous que les appels de dessin sont correctement synchronisés avec le balayage de l'écran. Ce comportement est exposé aux applications via une extension EGL. Vous trouverez ci-dessous les extensions EGL requises.
-
Écran à faible persistance : les paramètres de persistance de l'écran doivent être définis aussi bas que possible tout en conservant une luminosité raisonnable. Pour un écran standard fonctionnant à 60 Hz, les pixels doivent être éclairés pendant moins de 3,5 ms pour être considérés comme à faible persistance. Cela évite les images fantômes lors des mouvements dans un environnement VR et doit être activé à partir de l'HAL
lights.h
lorsque BRIGHTNESS_MODE_LOW_PERSISTENCE est défini.
-
Performances cohérentes du GPU et du processeur : lorsqu'une charge de travail mixte GPU/CPU est fournie pour une application de RV avec des rafales de travail à intervalles réguliers plusieurs fois par frame, la planification du processeur doit s'assurer que le travail du thread de rendu de l'application est exécuté de manière cohérente dans les 1 ms suivant la planification et terminé avant la fin de la fenêtre de dessin. Pour ce faire, un seul cœur de processeur doit être réservé uniquement au thread de rendu de l'application de RV en cours d'exécution en mode RV et mis à disposition dans le cpuset "top-app". De même, un taux d'horloge CPU, GPU et bus approprié doit être maintenu pour s'assurer que la charge de travail de rendu se termine dans le délai imparti pour le rendu de chaque frame lorsque l'indicateur POWER_HINT_SUSTAINED_PERFORMANCE a été défini dans le HAL
power.h
en mode VR lorsque l'appareil n'est pas limité thermiquement.
-
Les extensions EGL requises doivent être présentes : tous les paramètres de GPU requis pour permettre les fonctionnalités ci-dessus sont obligatoires, y compris les extensions 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 et EGL_KHR_wait_sync.
-
Rapports thermiques précis : les températures et limites thermiques précises doivent être signalées dans le fichier HAL
thermal.h
. Plus précisément, la température cutanée actuelle doit être indiquée avec précision pour DEVICE_TEMPERATURE_SKIN, et le vr_throttling_threshold indiqué pour cet appareil doit indiquer avec précision la limite de température au-delà de laquelle le gouverneur thermique de l'appareil limite les fréquences d'horloge du processeur, du GPU et/ou du bus en dessous du minimum nécessaire pour des performances cohérentes (voir point précédent).
En général, les fournisseurs qui implémentent cette HAL doivent utiliser set_vr_mode comme indice pour activer le réglage des performances spécifiques à la VR nécessaire pour l'une des exigences ci-dessus et activer toutes les fonctionnalités de l'appareil optimales pour les modes d'affichage VR. L'appel set_vr_mode peut simplement ne rien faire si aucune optimisation n'est disponible ou nécessaire pour répondre aux exigences ci-dessus.
Aucune méthode de cet HAL ne sera appelée simultanément à partir du framework Android.
Définition à la ligne
82
du fichier
vr.h
.
Méthodes courantes du module. Cet élément doit
être
le premier membre de
vr_module
, car les utilisateurs de cette structure peuvent caster un
hw_module_t
en pointeur
vr_module
dans des contextes où il est connu que
hw_module_t
fait référence à un
vr_module
.
Définition à la ligne
89
du fichier
vr.h
.
Méthode pratique permettant à l'implémentation HAL de configurer tout état nécessaire au démarrage de l'exécution. Cette méthode est appelée une fois à partir de VrManagerService lors de sa phase de démarrage. Aucune méthode de cet HAL ne sera appelée avant l'initialisation.
Définition à la ligne
96
du fichier
vr.h
.
Définition à la ligne
110
du fichier
vr.h
.
void(* set_vr_mode)(struct
vr_module
*module, bool enabled)
|
Définissez l'état du mode VR. Les états possibles du paramètre "enabled" sont les suivants : "false" : le mode VR est désactivé, désactivez tous les paramètres spécifiques à la RV. "true" : le mode VR est activé, activez tous les paramètres spécifiques à la RV.
Cette méthode est appelée chaque fois que le système Android passe en mode VR ou en sort. Cela se produit généralement lorsque l'utilisateur passe d'une application de RV à une autre qui effectue un rendu stéréoscopique ou inversement.
Définition à la ligne
107
du fichier
vr.h
.
La documentation de ce struct a été générée à partir du fichier suivant :
-
hardware/libhardware/include/hardware/
vr.h
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/26 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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)"]]