vr_module Yapı Referansı

vr_module Yapı Referansı

#include < vr.h >

Veri alanları

hw_module_t yapısı yaygın
geçersiz(* init )(struct vr_module *modül)
geçersiz(* set_vr_mode )(struct vr_module *module, bool etkin)
geçersiz * ayrılmış [8-2]

Detaylı Açıklama

Bir sanal gerçeklik (VR) uygulaması kullanıldığında geri aramaları almak için bu HAL'yi uygulayın. VR uygulamaları karakteristik olarak aşağıdakiler de dahil olmak üzere bir dizi özel görüntüleme ve performans gereksinimlerine sahiptir:

  • Düşük sensör gecikmesi - IMU, ivmeölçer ve jiroskoptan uygulama tarafından görülebilen geri aramaya kadar toplam uçtan uca gecikmenin son derece düşük olması gerekir (tipik olarak <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ğu kadar düşük olmalıdır. Bu, SurfaceFlinger'ın tek arabellekli modda kullanılmasıyla ve çizim çağrılarının ekran taramasıyla doğru şekilde senkronize edilmesinin sağlanmasıyla gerçekleştirilir. Bu davranış, uygulamalara bir EGL uzantısı aracılığıyla sunulur. Bunun için gereken EGL uzantıları için aşağıya bakın.
  • Düşük kalıcılığa sahip ekran - Ekran kalıcılığı ayarları, makul bir parlaklık korunurken mümkün olduğu kadar düşük ayarlanmalıdır. 60 Hz'de çalışan tipik bir ekran için, piksellerin düşük kalıcılık olarak kabul edilmesi için <=3,5 ms süreyle aydınlatılması gerekir. Bu, VR ayarında hareketler sırasında gölgelenmeyi önler ve ışıklardan etkinleştirilmelidir.h BRIGHTNESS_MODE_LOW_PERSISTENCE ayarlandığında HAL.
  • GPU ve CPU'nun tutarlı performansı - Kare başına birkaç kez düzenli aralıklarla iş patlamaları içeren bir VR uygulaması için karışık bir GPU/CPU iş yükü verildiğinde, CPU zamanlaması, uygulama oluşturma iş parçacığı çalışmasının, işlem tamamlandıktan sonra 1 ms içinde tutarlı bir şekilde çalıştırılmasını sağlamalıdır. planlanır ve çekiliş penceresinin bitiminden önce tamamlanır. Bu amaçla, tek bir CPU çekirdeği yalnızca o anda çalışan VR uygulamasının VR modundaki oluşturma iş parçacığı için ayrılmalı ve "üst uygulama" cpusetinde kullanıma sunulmalıdır. Benzer şekilde, güçte POWER_HINT_SUSTAINED_PERFORMANCE bayrağı ayarlandığında, işleme iş yükünün her kareyi işlemek için ayrılan süre içinde tamamlanmasını sağlamak için uygun bir CPU, GPU ve veri yolu saat hızı korunmalıdır.h VR modundayken cihaz açıkken HAL termal olarak kısılmamak.
  • Gerekli EGL uzantıları mevcut olmalıdır - EGL uzantıları dahil, yukarıdaki yeteneklere izin vermek için gereken tüm GPU ayarları 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 limitler, Thermal.h HAL'de rapor edilmelidir. Spesifik olarak, DEVICE_TEMPERATURE_SKIN için mevcut cilt sıcaklığının doğru bir şekilde raporlanması gerekir ve bu cihaz için bildirilen vr_throttle_threshold, cihazın termal düzenleyicisinin CPU, GPU ve/veya veri yolu saat hızlarını tutarlı performans için gereken minimum değerin altında kıstığı sıcaklık sınırını doğru bir şekilde rapor etmelidir ( önceki madde işaretine bakın).

Genel olarak, bu HAL'yi uygulayan satıcıların, yukarıdaki gereksinimlerin herhangi biri için gereken VR'ye özgü performans ayarlamasını etkinleştirmek ve VR görüntüleme modları için en uygun cihaz özelliklerini açmak için bir ipucu olarak set_vr_mode'u kullanması beklenir. Yukarıdaki gereksinimleri karşılamak için hiçbir optimizasyon mevcut değilse veya gerekli değilse set_vr_mode çağrısı hiçbir şey yapmayabilir.

Bu HAL'deki hiçbir yöntem Android çerçevesinden aynı anda çağrılmayacak.

vr.h dosyasının 82. satırındaki tanım.

Saha Dokümantasyonu

hw_module_t ortak yapısı

Modülün ortak yöntemleri. Bu yapının kullanıcıları, hw_module_t öğesinin bir vr_module öğesine başvuruda bulunduğunun bilindiği bağlamlarda bir vr_module işaretçisine bir hw_module_t aktarabileceğinden, bu vr_module öğesinin ilk üyesi olmalıdır .

vr.h dosyasının 89. satırındaki tanım.

void(* init)(struct vr_module *module)

Çalışma zamanı başlangıcında ihtiyaç duyulan herhangi bir durumu ayarlamak için HAL uygulamasına yönelik kullanışlı yöntem. Bu, önyükleme aşamasında VrManagerService'ten bir kez çağrılır. Başlatmadan önce bu HAL'den hiçbir yöntem çağrılmayacak.

vr.h dosyasının 96. satırındaki tanım.

geçersiz* ayrılmış[8-2]

vr.h dosyasının 110. satırındaki tanım.

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

VR modu durumunu ayarlayın. Etkinleştirilen parametrenin olası durumları şunlardır: yanlış - VR modu devre dışı, VR'ye özgü tüm ayarları kapatın. doğru - VR modu etkin, VR'ye özgü tüm ayarları açın.

Bu, Android sistemi VR moduna girdiğinde veya bu moddan çıktığında çağrılır. Bu genellikle kullanıcı stereoskopik görüntüleme yapan bir VR uygulamasına geçtiğinde veya bu uygulamadan çıktığında meydana gelir.

vr.h dosyasının 107. satırındaki tanım.


Bu yapıya ilişkin belgeler aşağıdaki dosyadan oluşturulmuştur:
  • donanım/libdonanım/include/donanım/ vr.h