Riferimento alla struttura vr_module

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.

Definizione alla riga 82 del file vr.h .

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 .

Definizione alla riga 89 del file vr.h .

void(* init)(struct vr_module *module)

Metodo pratico per l'implementazione dell'HAL per impostare qualsiasi stato necessario all'avvio del runtime. Questo viene chiamato una volta da VrManagerService durante la fase di avvio. Nessun metodo da questo HAL verrà chiamato prima di init.

Definizione alla riga 96 del file vr.h .

vuoto* riservato[8-2]

Definizione alla riga 110 del file vr.h .

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.

Definizione alla riga 107 del file vr.h .


La documentazione per questa struttura è stata generata dal seguente file:
  • hardware/libhardware/include/hardware/ vr.h