Référence de la struct vr_module

Référence de la struct vr_module

#include < vr.h >

Champs de données

struct hw_module_t   commun
 
void(*  init )(struct vr_module *module)
 
void(*  set_vr_mode )(struct vr_module *module, bool enabled)
 
void *  réservé [8-2]
 

Description détaillée

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 .

Documentation des champs

struct hw_module_t common

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 .

void(* init)(struct vr_module *module)

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 .

void* reserved[8-2]

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