Référence de structure vr_module
#include < vr.h >
Champs de données | |
structure hw_module_t | commun |
vide(* | init )(struct vr_module *module) |
vide(* | set_vr_mode )(struct vr_module *module, bool activé) |
vide * | réservé [8-2] |
Description détaillée
Implémentez ce HAL pour recevoir des rappels lorsqu'une application de réalité virtuelle (VR) est utilisée. Les applications VR ont généralement un certain nombre d'exigences spéciales en matière d'affichage et de performances, notamment :
- Faible latence du capteur : la latence totale de bout en bout entre l'IMU, l'accéléromètre et le gyroscope jusqu'à un rappel visible par l'application doit être extrêmement faible (<5 ms généralement). Ceci est requis pour la prise en charge du capteur HIFI.
- Faible latence d'affichage : la latence totale de bout en bout entre les appels de dessin du GPU et la mise à jour de l'affichage réelle doit être aussi faible que possible. Ceci est réalisé en utilisant SurfaceFlinger dans un mode à tampon unique et en garantissant que les appels de dessin sont correctement synchronisés avec l'analyse de l'affichage. Ce comportement est exposé via une extension EGL aux applications. Voir ci-dessous pour les extensions EGL nécessaires à cela.
- Affichage à faible persistance : les paramètres de persistance de l'affichage doivent être définis aussi bas que possible tout en conservant une luminosité raisonnable. Pour un écran typique fonctionnant à 60 Hz, les pixels doivent être allumés pendant <= 3,5 ms pour être considérés comme à faible persistance. Cela évite les images fantômes lors des mouvements dans un paramètre VR et doit être activé à partir des lumières.h HAL lorsque BRIGHTNESS_MODE_LOW_PERSISTENCE est défini.
- Performances cohérentes du GPU et du CPU - Lorsqu'une charge de travail GPU/CPU mixte est appliquée pour une application VR avec des rafales de travail à intervalles réguliers plusieurs fois par image, la planification du CPU doit garantir que le travail du thread de rendu de l'application est exécuté de manière cohérente dans un délai de 1 ms après le moment où programmé et terminé avant la fin de la fenêtre de tirage au sort. À cette fin, un seul cœur de processeur doit être réservé uniquement au thread de rendu de l'application VR en cours d'exécution en mode VR, et mis à disposition dans le cpuset « top-app ». De même, une fréquence d'horloge appropriée du CPU, du GPU et du bus doit être maintenue pour garantir que la charge de travail de rendu se termine dans le temps imparti pour restituer chaque image lorsque l'indicateur POWER_HINT_SUSTAINED_PERFORMANCE a été défini dans le power.h HAL en mode VR lorsque l'appareil est ne pas être étranglé thermiquement.
- Les extensions EGL requises doivent être présentes - Tous les paramètres GPU requis pour permettre les fonctionnalités ci-dessus sont requis, 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 HAL thermal.h . Plus précisément, la température cutanée actuelle doit être signalée avec précision pour DEVICE_TEMPERATURE_SKIN et le vr_throttling_threshold signalé pour cet appareil doit indiquer avec précision la limite de température au-dessus de laquelle le régulateur thermique de l'appareil limite les fréquences d'horloge du CPU, du GPU et/ou du bus en dessous du minimum nécessaire pour des performances constantes ( voir le point précédent).
En général, les fournisseurs implémentant ce HAL sont censés 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 pour activer toutes les fonctionnalités de l'appareil optimales pour les modes d'affichage VR. L'appel set_vr_mode peut tout simplement ne rien faire si aucune optimisation n'est disponible ou nécessaire pour répondre aux exigences ci-dessus.
Aucune méthode de ce HAL ne sera appelée simultanément depuis le framework Android.
Documentation de terrain
struct hw_module_t commun |
Méthodes courantes du module. Il doit s'agir du premier membre de vr_module car les utilisateurs de cette structure peuvent convertir un hw_module_t en un pointeur vr_module dans des contextes où l'on sait que hw_module_t fait référence à un vr_module .
void(* init)(struct vr_module *module) |
Méthode pratique pour l’implémentation de HAL afin de configurer tout état nécessaire au démarrage de l’exécution. Ceci est appelé une fois depuis le VrManagerService pendant sa phase de démarrage. Aucune méthode de ce HAL ne sera appelée avant l'initialisation.
void(* set_vr_mode)(struct vr_module *module, bool activé) |
Définissez l'état du mode VR. Les états possibles du paramètre activé sont : false - le mode VR est désactivé, désactivez tous les paramètres spécifiques à la VR. vrai : le mode VR est activé, activez tous les paramètres spécifiques à la VR.
Ceci est appelé chaque fois que le système Android entre ou quitte le mode VR. Cela se produit généralement lorsque l'utilisateur bascule vers ou depuis une application VR qui effectue un rendu stéréoscopique.
La documentation de cette structure a été générée à partir du fichier suivant :
- matériel/libhardware/include/hardware/ vr.h