vr_module Struct Reference

vr_module Struct Reference

#include < vr.h >

Campi dati

struct hw_module_t Comune
void (* init ) (modulo struct vr_module *)
void (* set_vr_mode ) (modulo struct vr_module *, bool abilitato)
void * riservato [8-2]

Descrizione dettagliata

Implementa questo HAL per ricevere callback quando viene utilizzata un'applicazione di realtà virtuale (VR). Le applicazioni VR hanno tipicamente una serie di requisiti speciali di visualizzazione e prestazioni, tra cui:

  • Bassa latenza del sensore: la latenza totale end-to-end dall'IMU, dall'accelerometro e dal giroscopio a una richiamata visibile dall'applicazione deve essere estremamente bassa (in genere <5 ms). Ciò è necessario per il supporto del sensore HIFI.
  • Bassa latenza del display: la latenza totale end-to-end dalle chiamate della GPU all'aggiornamento effettivo del display deve essere la più bassa possibile. Ciò si ottiene utilizzando SurfaceFlinger in una modalità a buffer singolo e assicurando che le chiamate di disegno siano sincronizzate correttamente con lo scanout del display. Questo comportamento viene esposto alle applicazioni tramite un'estensione EGL. Vedi sotto per le estensioni EGL necessarie per questo.
  • Display a bassa persistenza: le impostazioni di persistenza del display devono essere impostate il più basso possibile pur mantenendo una luminosità ragionevole. Per un display tipico che funziona a 60 Hz, i pixel devono essere illuminati per <= 3,5 ms per essere considerati a bassa persistenza. Ciò evita il ghosting durante i movimenti in un'impostazione VR e dovrebbe essere abilitato dalle luci.h HAL quando è impostato BRIGHTNESS_MODE_LOW_PERSISTENCE.
  • Prestazioni costanti di GPU e CPU: quando viene assegnato un carico di lavoro misto GPU / CPU per un'applicazione VR con raffiche di lavoro a intervalli regolari più volte per frame, 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 pianificato e completato prima della fine della finestra di sorteggio. A tal fine, un singolo core della CPU deve essere riservato esclusivamente al thread di rendering dell'applicazione VR attualmente in esecuzione in modalità VR e reso disponibile nel cpuset "top-app". Allo stesso modo, è necessario mantenere una CPU, una GPU e una frequenza di clock del bus appropriate per garantire che il carico di lavoro di rendering termini entro il tempo assegnato per il rendering di ciascun fotogramma quando il flag POWER_HINT_SUSTAINED_PERFORMANCE è stato impostato in power.h HAL mentre è in modalità VR quando il dispositivo è non essendo termicamente strozzato.
  • Le estensioni EGL richieste devono essere presenti - Sono richieste tutte le impostazioni della GPU necessarie per consentire le funzionalità di cui sopra, comprese le estensioni EGL: EGL_ANDROID_create_native_client_buffer, EGL_ANDROID_front_buffer_auto_refresh, EGL_EXT_protected_content, EGL_KHR_client_buffer, EGL_ANDROID_front_buffer_auto_refresh, EGL_EXT_protected_content, EGL_KHR_mutable_rync
  • Report termico accurato - Temperature e limiti termici accurati devono essere riportati nell'HAL thermal.h . In particolare, la temperatura cutanea corrente deve essere riportata accuratamente per DEVICE_TEMPERATURE_SKIN e vr_throttling_threshold riportata per questo dispositivo deve riportare accuratamente il limite di temperatura al di sopra del quale il regolatore termico del dispositivo limita le velocità di clock di CPU, GPU e / o bus al di sotto del minimo necessario per prestazioni costanti ( vedi 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 la realtà virtuale 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

struct hw_module_t comune

Metodi comuni del modulo. Questo deve essere il primo membro di vr_module poiché gli utenti di questa struttura possono lanciare un hw_module_t a 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 di HAL per impostare qualsiasi stato necessario all'avvio del runtime. 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.

void * reserved [8-2]

Definizione alla riga 110 del file vr.h.

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 è disabilitata, disattiva tutte le impostazioni specifiche della VR. true: la modalità VR è abilitata, attiva tutte le impostazioni specifiche per VR.

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 esegue 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