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.
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.
void(* init)(struct vr_module *module) |
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