Riferimento alla struttura vr_module
#include < vr.h >
Campi dati | |
struttura hw_module_t | comune |
vuoto(* | init )(struct vr_module *module) |
vuoto(* | set_vr_mode )(struct vr_module *module, bool abilitato) |
vuoto * | riservato [8-2] |
Descrizione dettagliata
Implementare questo HAL per ricevere richiamate quando viene utilizzata un'applicazione di realtà virtuale (VR). Le applicazioni VR tipicamente hanno una serie di requisiti speciali di visualizzazione e prestazioni, tra cui:
- Bassa latenza del sensore: la latenza end-to-end totale dall'IMU, dall'accelerometro e dal giroscopio a una richiamata visibile dall'applicazione deve essere estremamente bassa (<5 ms in genere). Ciò è necessario per il supporto del sensore HIFI.
- Bassa latenza del display: la latenza end-to-end totale dalle chiamate di estrazione della GPU all'effettivo aggiornamento del display deve essere la più bassa possibile. Ciò si ottiene utilizzando SurfaceFlinger in modalità a buffer singolo e garantendo che le chiamate di disegno siano sincronizzate correttamente con la scansione del display. Questo comportamento viene esposto tramite un'estensione EGL alle applicazioni. Vedi sotto per le estensioni EGL necessarie a questo scopo.
- Display a bassa persistenza: le impostazioni di persistenza del display devono essere impostate sul livello più basso possibile pur mantenendo una luminosità ragionevole. Per un display tipico funzionante a 60 Hz, i pixel devono essere illuminati per <= 3,5 ms per essere considerati a bassa persistenza. Ciò evita l'effetto ghosting durante i movimenti in un'impostazione VR e dovrebbe essere abilitato dall'HAL Lights.h quando è impostato BRIGHTNESS_MODE_LOW_PERSISTENCE.
- Prestazioni costanti di GPU e CPU: quando viene fornito un carico di lavoro misto GPU/CPU per un'applicazione VR con esplosioni di lavoro a intervalli regolari più volte in un fotogramma, la pianificazione della CPU dovrebbe garantire che il lavoro del thread di rendering dell'applicazione venga eseguito in modo coerente entro 1 ms da quando programmato e completato prima della fine della finestra di estrazione. A tal fine, un singolo core della CPU deve essere riservato esclusivamente al thread di rendering dell'applicazione VR attualmente in esecuzione mentre è in modalità VR e reso disponibile nel cpuset "top-app". Allo stesso modo, è necessario mantenere una frequenza di clock appropriata di CPU, GPU e bus per garantire che il carico di lavoro di rendering termini entro il tempo assegnato per eseguire il rendering di ciascun fotogramma quando il flag POWER_HINT_SUSTAINED_PERFORMANCE è stato impostato nell'HAL power.h mentre è in modalità VR quando il dispositivo è non essere strozzato termicamente.
- Devono essere presenti le estensioni EGL richieste: sono richieste tutte le impostazioni GPU necessarie per consentire le funzionalità di cui sopra, 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_wa it_sync.
- Report termici accurati: le temperature e i limiti termici accurati devono essere riportati nell'HAL Thermal.h . Nello specifico, la temperatura cutanea attuale deve essere segnalata con precisione per DEVICE_TEMPERATURE_SKIN e il vr_throttling_threshold segnalato per questo dispositivo deve riportare con precisione il limite di temperatura al di sopra del quale il regolatore termico del dispositivo limita le frequenze di clock di CPU, GPU e/o bus al di sotto del minimo necessario per prestazioni costanti ( vedere il punto elenco precedente).
In generale, i fornitori che implementano questo HAL dovrebbero utilizzare set_vr_mode come suggerimento per abilitare l'ottimizzazione delle prestazioni specifiche per VR necessaria per uno qualsiasi dei requisiti di cui sopra e per attivare qualsiasi funzionalità del dispositivo ottimale 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 di cui sopra.
Nessun metodo in questo HAL verrà chiamato contemporaneamente dal framework Android.
Documentazione sul campo
struttura hw_module_t comune |
Metodi comuni del modulo. Questo deve essere il primo membro di vr_module poiché gli utenti di questa struttura possono eseguire il cast di hw_module_t su un puntatore vr_module in contesti in cui è noto che hw_module_t fa riferimento a vr_module .
void(* init)(struct vr_module *module) |
void(* set_vr_mode)(struct vr_module *module, bool abilitato) |
Imposta lo stato della modalità VR. I possibili stati del parametro abilitato sono: false: la modalità VR è disabilitata, disattiva tutte le impostazioni specifiche per VR. true: la modalità VR è abilitata, attiva tutte le impostazioni specifiche per VR.
Questo viene chiamato ogni volta che il sistema Android entra o esce dalla modalità VR. Ciò si verifica in genere quando l'utente passa a o da un'applicazione VR che sta eseguendo il rendering stereoscopico.
La documentazione per questa struttura è stata generata dal seguente file:
- hardware/libhardware/include/hardware/ vr.h