Riferimento alla struttura vr_module
#include <
vr.h
>
Campi dati |
|
struct hw_module_t | comuni |
void(* | init )(struct vr_module *module) |
void(* | set_vr_mode )(struct vr_module *module, bool enabled) |
void * | riservato [8-2] |
Descrizione dettagliata
Implementa questo HAL per ricevere i callback quando viene utilizzata un'applicazione di realtà virtuale (VR). Le applicazioni VR hanno in genere una serie di requisiti speciali per la visualizzazione e le prestazioni, tra cui:
- Bassa latenza del sensore: la latenza end-to-end totale dall'IMU, dall'accelerometro e dal giroscopio a un callback visibile all'applicazione deve essere estremamente bassa (in genere inferiore a 5 ms). Questo è necessario per il supporto del sensore HiFi.
- Bassa latenza di visualizzazione: la latenza end-to-end totale dalle chiamate di disegno della GPU all'aggiornamento effettivo della visualizzazione deve essere il più bassa possibile. Questo risultato viene ottenuto utilizzando SurfaceFlinger in modalità con buffer singolo e assicurando che le chiamate di disegno siano sincronizzate correttamente con la scansione del display. Questo comportamento è esposto alle applicazioni tramite un'estensione EGL. Di seguito sono riportate le estensioni EGL necessarie per questo.
- Display a bassa persistenza: le impostazioni di persistenza del display devono essere impostate il più basso possibile, mantenendo al contempo una luminosità ragionevole. Per un display tipico a 60 Hz, i pixel devono essere illuminati per un periodo inferiore o uguale a 3,5 ms per essere considerati a bassa persistenza. In questo modo si evitano i "ghost" durante i movimenti in un'impostazione VR e l'opzione deve essere attivata dall'HAL lights.h quando è impostato BRIGHTNESS_MODE_LOW_PERSISTENCE.
- Prestazioni coerenti della GPU e della CPU: quando viene fornito un carico di lavoro misto GPU/CPU per un'applicazione VR con picchi di lavoro a intervalli regolari più volte al frame, la pianificazione della CPU deve garantire che il lavoro del thread di rendering dell'applicazione venga eseguito in modo coerente entro 1 ms dalla pianificazione e completato prima della fine della finestra di disegno. A questo scopo, un singolo core della CPU deve essere riservato esclusivamente al thread di rendering dell'applicazione VR in esecuzione in modalità VR e reso disponibile nel set cpu "top-app". Analogamente, è necessario mantenere una frequenza di clock appropriata per la CPU, la GPU e il bus per garantire che il carico di lavoro di rendering venga completato entro il tempo a disposizione per il rendering di ogni frame quando il flag POWER_HINT_SUSTAINED_PERFORMANCE è stato impostato nell'HAL power.h in modalità VR quando il dispositivo non è sottoposto a throttling termico.
- Devono essere presenti le estensioni EGL richieste: sono necessarie tutte le impostazioni GPU necessarie per consentire le funzionalità sopra indicate, incluse le estensioni 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 ed EGL_KHR_wait_sync.
- Report termici accurati: temperature e limiti termici accurati devono essere registrati nell'HAL thermal.h . Nello specifico, la temperatura cutanea attuale deve essere registrata con precisione per DEVICE_TEMPERATURE_SKIN e la soglia vr_throttling_threshold registrata per questo dispositivo deve indicare con precisione il limite di temperatura oltre il quale il governor termico del dispositivo riduce le frequenze di clock della CPU, della GPU e/o del bus al di sotto del minimo necessario per prestazioni costanti (vedi punto elenco precedente).
In generale, i fornitori che implementano questo HAL devono utilizzare set_vr_mode come suggerimento per attivare la messa a punto delle prestazioni specifica per la realtà virtuale necessaria per uno dei requisiti sopra indicati e per attivare le funzionalità del dispositivo ottimali per le modalità di visualizzazione VR. La chiamata set_vr_mode potrebbe semplicemente non fare nulla se non sono disponibili o necessarie ottimizzazioni per soddisfare i requisiti sopra indicati.
Nessun metodo in questo HAL verrà chiamato contemporaneamente dal framework Android.
Documentazione dei campi
struct hw_module_t common |
Metodi comuni del modulo. Questo deve essere il primo membro di vr_module poiché gli utenti di questa struttura possono trasmettere un hw_module_t a un vr_module puntatore in contesti in cui è noto che il hw_module_t fa riferimento a un vr_module .
void(* init)(struct vr_module *module) |
void(* set_vr_mode)(struct vr_module *module, bool enabled) |
Imposta lo stato della modalità VR. I possibili stati del parametro abilitato sono: false: la modalità VR è disattivata, disattiva tutte le impostazioni specifiche per la realtà virtuale. true: la modalità VR è attivata, attiva tutte le impostazioni specifiche per la realtà virtuale.
Viene chiamato ogni volta che il sistema Android entra o esce dalla modalità VR. Questo accade in genere quando l'utente passa a o da un'applicazione VR che esegue il rendering stereoscopico.
La documentazione di questa struttura è stata generata dal seguente file:
- hardware/libhardware/include/hardware/ vr.h