vr_module Yapı Referansı

vr_module Yapı Referansı

#include < vr.h >

Veri Alanları

struct hw_module_t   yaygın
 
void(*  init )(struct vr_module *module)
 
void(*  set_vr_mode )(struct vr_module *module, bool enabled)
 
void *  reserved [8-2]
 

Ayrıntılı Açıklama

Bir sanal gerçeklik (VR) uygulaması kullanılırken geri çağırma almak için bu HAL'i uygulayın. VR uygulamaları genellikle aşağıdakiler gibi çeşitli özel görüntüleme ve performans koşullarına sahiptir:

  • Düşük sensör gecikmesi: IMU, ivmeölçer ve jiroskoptan uygulama tarafından görülebilen geri çağırma işlevine kadar olan toplam uçtan uca gecikme son derece düşük olmalıdır (genellikle <5 ms). Bu, HIFI sensör desteği için gereklidir.
  • Düşük ekran gecikmesi: GPU çizim çağrılarından gerçek ekran güncellemesine kadar olan toplam uçtan uca gecikme mümkün olduğunca düşük olmalıdır. Bu, SurfaceFlinger'ın tek arabellekli modda kullanılması ve çizim çağrılarının ekran taramasıyla doğru şekilde senkronize edilmesinin sağlanması ile elde edilir. Bu davranış, EGL uzantısı aracılığıyla uygulamalara sunulur. Bunun için gereken EGL uzantılarını aşağıda bulabilirsiniz.
  • Düşük kalıcılığa sahip ekran: Ekran kalıcılığı ayarları, makul bir parlaklık sağlarken mümkün olduğunca düşük ayarlanmalıdır. 60 Hz'de çalışan tipik bir ekranda, piksellerin düşük kalıcılığa sahip olarak kabul edilmesi için <=3,5 ms boyunca aydınlatılması gerekir. Bu, VR ortamında hareketler sırasında hayalet görüntü oluşumunu önler ve BRIGHTNESS_MODE_LOW_PERSISTENCE ayarlandığında lights.h HAL'den etkinleştirilmelidir.
  • GPU ve CPU'nun tutarlı performansı: Bir VR uygulaması için kare başına birkaç kez düzenli aralıklarla iş patlamaları içeren karma bir GPU/CPU iş yükü verildiğinde CPU planlaması, uygulama oluşturma iş parçacığı işinin planlandığı andan itibaren 1 ms içinde tutarlı bir şekilde çalıştırılmasını ve çizim aralığının sona ermesinden önce tamamlanmasını sağlamalıdır. Bu amaçla, VR modundayken yalnızca şu anda çalışan VR uygulamasının oluşturma iş parçacığı için tek bir CPU çekirdeği ayrılmalıdır ve "top-app " cpuset'inde kullanılabilir hale getirilmelidir. Benzer şekilde, cihaz termal olarak kısıtlanmadığı VR modundayken power.h HAL'de POWER_HINT_SUSTAINED_PERFORMANCE işareti ayarlandığında oluşturma iş yükünün her kareyi oluşturmak için ayrılan süre içinde tamamlanmasını sağlamak amacıyla uygun bir CPU, GPU ve veri yolu saat hızı korunmalıdır.
  • Gerekli EGL uzantıları mevcut olmalıdır: Yukarıdaki özelliklere izin vermek için gereken tüm GPU ayarları (EGL uzantıları dahil) gereklidir: 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 ve EGL_KHR_wait_sync.
  • Doğru termal raporlama: Doğru termal sıcaklıklar ve sınırlar thermal.h HAL'de raporlanmalıdır. Daha açık belirtmek gerekirse, DEVICE_TEMPERATURE_SKIN için mevcut cilt sıcaklığı doğru şekilde raporlanmalı ve bu cihaz için raporlanan vr_throttling_threshold, cihazın termal denetleyicisinin CPU, GPU ve/veya veri yolu saat hızlarını tutarlı performans için gereken minimum değerin altına düşürdüğü sıcaklık sınırını doğru şekilde bildirmelidir (önceki maddeye bakın).

Genel olarak, bu HAL'i uygulayan tedarikçilerin, yukarıdaki koşullardan herhangi biri için gereken VR'ye özel performans ayarını etkinleştirmek ve VR ekran modları için en uygun cihaz özelliklerini açmak üzere bir ipucu olarak set_vr_mode işlevini kullanması beklenir. Yukarıdaki koşulları karşılamak için optimizasyon yapılamıyorsa veya gerekli değilse set_vr_mode çağrısı hiçbir şey yapmayabilir.

Bu HAL'deki hiçbir yöntem Android çerçevesinden eşzamanlı olarak çağrılmaz.

Tanım, vr.h dosyasının 82 satırı

Alan Belgeleri

struct hw_module_t common

Modülün yaygın yöntemleri. Bu yapının kullanıcıları, hw_module_t vr_module yönergesine referans verdiği bilinen bağlamlarda bir hw_module_t vr_module işaretçisine vr_module yönergesi gönderebileceğinden bu, vr_module yapının ilk üyesi olmalıdır.

vr.h dosyasının 89 satırı

void(* init)(struct vr_module *module)

HAL uygulamasının, çalışma zamanında başlatma sırasında gerekli olan tüm durumları ayarlaması için kolaylık yöntemi. Bu işlev, VrManagerService'in önyükleme aşamasında bir kez çağrılır. Bu HAL'deki hiçbir yöntem, init'ten önce çağrılmaz.

vr.h dosyasının 96 satırı

void* reserved[8-2]

Tanımı, vr.h dosyasının 110 satırı

void(* set_vr_mode)(struct vr_module *module, bool enabled)

VR modu durumunu ayarlayın. enabled parametresinin olası durumları şunlardır: false: VR modu devre dışıdır, VR'ye özgü tüm ayarlar kapatılır. true: VR modu etkindir, VR'ye özgü tüm ayarlar açılır.

Bu yöntem, Android sistemi VR moduna her girdiğinde veya bu moddan her çıktığında çağrılır. Bu durum genellikle kullanıcı stereoskopik oluşturma yapan bir VR uygulamasına geçtiğinde veya bu uygulamadan ayrıldığında ortaya çıkar.

Tanım, vr.h dosyasının 107. satırı içindedir.


Bu yapının dokümanları aşağıdaki dosyadan oluşturulmuştur:
  • hardware/libhardware/include/hardware/ vr.h