27 Mart 2025'ten itibaren AOSP'yi derlemek ve AOSP'ye katkıda bulunmak için aosp-main
yerine android-latest-release
kullanmanızı öneririz. Daha fazla bilgi için AOSP'de yapılan değişiklikler başlıklı makaleyi inceleyin.
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
vr_module Yapı Referansı
#include <
vr.h
>
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ı
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(* 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
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-26 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-26 UTC."],[],[],null,["# Android Hardware Abstraction Layer: vr_module Struct Reference\n\nvr_module Struct Reference\n==========================\n\n[Data Fields](#pub-attribs) \nvr_module Struct Reference \n\n`\n#include \u003c\n`[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)`\n\u003e\n`\n\n|----------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| struct [hw_module_t](/reference/hal/structhw__module__t) | [common](/reference/hal/structvr__module#a71ea01183b3998cad6a2301a37a42fc7) |\n| ||\n| void(\\* | [init](/reference/hal/structvr__module#a1621887a15b003a1ba7be81d52b0abb0) )(struct [vr_module](/reference/hal/structvr__module) \\*module) |\n| ||\n| void(\\* | [set_vr_mode](/reference/hal/structvr__module#a8c9e8990b6b65b068703cd615be68fb5) )(struct [vr_module](/reference/hal/structvr__module) \\*module, bool enabled) |\n| ||\n| void \\* | [reserved](/reference/hal/structvr__module#aa1a42885ba14c2168dc14d3f219b5e99) \\[8-2\\] |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nImplement this HAL to receive callbacks when a virtual reality (VR) application is being used. VR applications characteristically have a number of special display and performance requirements, including:\n\n- Low sensor latency - Total end-to-end latency from the IMU, accelerometer, and gyro to an application-visible callback must be extremely low (\\\u003c5ms typically). This is required for HIFI sensor support.\n- Low display latency - Total end-to-end latency from the GPU draw calls to the actual display update must be as low as possible. This is achieved by using SurfaceFlinger in a single-buffered mode, and assuring that draw calls are synchronized with the display scanout correctly. This behavior is exposed via an EGL extension to applications. See below for the EGL extensions needed for this.\n- Low-persistence display - Display persistence settings must be set as low as possible while still maintaining a reasonable brightness. For a typical display running at 60Hz, pixels should be illuminated for \\\u003c=3.5ms to be considered low-persistence. This avoids ghosting during movements in a VR setting, and should be enabled from the [lights.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/lights.h) HAL when BRIGHTNESS_MODE_LOW_PERSISTENCE is set.\n- Consistent performance of the GPU and CPU - When given a mixed GPU/CPU workload for a VR application with bursts of work at regular intervals several times a frame, the CPU scheduling should ensure that the application render thread work is run consistently within 1ms of when scheduled, and completed before the end of the draw window. To this end, a single CPU core must be reserved for solely for the currently running VR application's render thread while in VR mode, and made available in the \"top-app\" cpuset. Likewise, an appropriate CPU, GPU, and bus clockrate must be maintained to ensure that the rendering workload finishes within the time allotted to render each frame when the POWER_HINT_SUSTAINED_PERFORMANCE flag has been set in the [power.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/power.h) HAL while in VR mode when the device is not being thermally throttled.\n- Required EGL extensions must be present - Any GPU settings required to allow the above capabilities are required, including the EGL extensions: 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, and EGL_KHR_wait_sync.\n- Accurate thermal reporting - Accurate thermal temperatures and limits must be reported in the [thermal.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/thermal.h) HAL. Specifically, the current skin temperature must accurately be reported for DEVICE_TEMPERATURE_SKIN and the vr_throttling_threshold reported for this device must accurately report the temperature limit above which the device's thermal governor throttles the CPU, GPU, and/or bus clockrates below the minimum necessary for consistent performance (see previous bullet point).\n\n\nIn general, vendors implementing this HAL are expected to use set_vr_mode as a hint to enable VR-specific performance tuning needed for any of the above requirements, and to turn on any device features optimal for VR display modes. The set_vr_mode call may simply do nothing if no optimizations are available or necessary to meet the above requirements.\n\n\nNo methods in this HAL will be called concurrently from the Android framework.\n\n\nDefinition at line\n[82](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\nField Documentation\n-------------------\n\n\n|-----------------------------------------------------------------|\n| struct [hw_module_t](/reference/hal/structhw__module__t) common |\n\n\nCommon methods of the module. This\n*must*\nbe the first member of\n[vr_module](/reference/hal/structvr__module)\nas users of this structure may cast a\n[hw_module_t](/reference/hal/structhw__module__t)\nto a\n[vr_module](/reference/hal/structvr__module)\npointer in contexts where it's known that the\n[hw_module_t](/reference/hal/structhw__module__t)\nreferences a\n[vr_module](/reference/hal/structvr__module)\n.\n\n\nDefinition at line\n[89](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\n|-----------------------------------------------------------------------------|\n| void(\\* init)(struct [vr_module](/reference/hal/structvr__module) \\*module) |\n\n\nConvenience method for the HAL implementation to set up any state needed at runtime startup. This is called once from the VrManagerService during its boot phase. No methods from this HAL will be called before init.\n\n\nDefinition at line\n[96](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\n|------------------------|\n| void\\* reserved\\[8-2\\] |\n\n\nDefinition at line\n[110](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\n|--------------------------------------------------------------------------------------------------|\n| void(\\* set_vr_mode)(struct [vr_module](/reference/hal/structvr__module) \\*module, bool enabled) |\n\n\nSet the VR mode state. Possible states of the enabled parameter are: false - VR mode is disabled, turn off all VR-specific settings. true - VR mode is enabled, turn on all VR-specific settings.\n\n\nThis is called whenever the the Android system enters or leaves VR mode. This will typically occur when the user switches to or from a VR application that is doing stereoscopic rendering.\n\n\nDefinition at line\n[107](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\nof file\n[vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [vr.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/vr.h)"]]