Riferimento alla struttura vr_module

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.

Definizione nella riga 82 del file vr.h .

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 .

Definizione nella riga 89 del file vr.h .

void(* init)(struct vr_module *module)

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

Definizione nella riga 96 del file vr.h .

void* reserved[8-2]

Definizione nella 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 è 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.

Definizione nella riga 107 del file vr.h .


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