Mulai 27 Maret 2025, sebaiknya gunakan android-latest-release
, bukan aosp-main
, untuk mem-build dan berkontribusi pada AOSP. Untuk mengetahui informasi selengkapnya, lihat Perubahan pada AOSP.
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
Referensi Struct vr_module
#include <
vr.h
>
Terapkan HAL ini untuk menerima callback saat aplikasi virtual reality (VR) sedang digunakan. Aplikasi VR biasanya memiliki sejumlah persyaratan tampilan dan performa khusus, termasuk:
-
Latensi sensor rendah - Total latensi menyeluruh dari IMU, akselerometer, dan giroskop ke callback yang terlihat aplikasi harus sangat rendah (<5 md biasanya). Hal ini diperlukan untuk dukungan sensor HIFI.
-
Latensi tampilan rendah - Total latensi menyeluruh dari panggilan gambar GPU hingga pembaruan tampilan yang sebenarnya harus serendah mungkin. Hal ini dicapai dengan menggunakan SurfaceFlinger dalam mode buffering tunggal, dan memastikan bahwa panggilan gambar disinkronkan dengan pemindaian layar dengan benar. Perilaku ini diekspos melalui ekstensi EGL ke aplikasi. Lihat di bawah untuk mengetahui ekstensi EGL yang diperlukan untuk ini.
-
Layar dengan persistensi rendah - Setelan persistensi layar harus disetel serendah mungkin sambil tetap mempertahankan kecerahan yang wajar. Untuk layar standar yang berjalan pada 60 Hz, piksel harus diterangi selama <=3,5 md agar dianggap memiliki persistensi rendah. Hal ini menghindari ghosting selama gerakan dalam setelan VR, dan harus diaktifkan dari
lights.h
HAL saat BRIGHTNESS_MODE_LOW_PERSISTENCE ditetapkan.
-
Performa GPU dan CPU yang konsisten - Jika diberi beban kerja GPU/CPU campuran untuk aplikasi VR dengan lonjakan pekerjaan secara berkala beberapa kali per frame, penjadwalan CPU harus memastikan bahwa pekerjaan thread render aplikasi dijalankan secara konsisten dalam waktu 1 md sejak dijadwalkan, dan selesai sebelum akhir periode render. Untuk tujuan ini, satu core CPU harus dicadangkan hanya untuk thread render aplikasi VR yang sedang berjalan saat dalam mode VR, dan disediakan di cpuset "aplikasi teratas". Demikian pula, frekuensi clock CPU, GPU, dan bus yang sesuai harus dipertahankan untuk memastikan bahwa beban kerja rendering selesai dalam waktu yang dialokasikan untuk merender setiap frame saat flag POWER_HINT_SUSTAINED_PERFORMANCE telah ditetapkan di
power.h
HAL saat dalam mode VR saat perangkat tidak di-throttle secara termal.
-
Ekstensi EGL yang diperlukan harus ada - Setiap setelan GPU yang diperlukan untuk mengizinkan kemampuan di atas diperlukan, termasuk ekstensi 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, dan EGL_KHR_wait_sync.
-
Pelaporan termal yang akurat - Suhu dan batas termal yang akurat harus dilaporkan di
HAL
thermal.h
. Secara khusus, suhu kulit saat ini harus dilaporkan secara akurat untuk DEVICE_TEMPERATURE_SKIN dan vr_throttling_threshold yang dilaporkan untuk perangkat ini harus melaporkan batas suhu secara akurat, di atas batas tersebut, pengontrol termal perangkat akan membatasi kecepatan clock CPU, GPU, dan/atau bus di bawah minimum yang diperlukan untuk performa yang konsisten (lihat poin berbutir sebelumnya).
Secara umum, vendor yang menerapkan HAL ini diharapkan menggunakan set_vr_mode sebagai petunjuk untuk mengaktifkan penyesuaian performa khusus VR yang diperlukan untuk salah satu persyaratan di atas, dan untuk mengaktifkan fitur perangkat yang optimal untuk mode tampilan VR. Panggilan set_vr_mode mungkin tidak melakukan apa pun jika tidak ada pengoptimalan yang tersedia atau diperlukan untuk memenuhi persyaratan di atas.
Tidak ada metode dalam HAL ini yang akan dipanggil secara serentak dari framework Android.
Definisi di baris
82
file
vr.h
.
Metode praktis untuk implementasi HAL guna menyiapkan status apa pun yang diperlukan saat startup runtime. Ini dipanggil sekali dari VrManagerService selama fase booting. Tidak ada metode dari HAL ini yang akan dipanggil sebelum inisialisasi.
Definisi di baris
96
dari file
vr.h
.
Definisi pada baris
110
dari file
vr.h
.
void(* set_vr_mode)(struct
vr_module
*module, bool enabled)
|
Menetapkan status mode VR. Kemungkinan status parameter yang diaktifkan adalah: false - mode VR dinonaktifkan, nonaktifkan semua setelan khusus VR. true - mode VR diaktifkan, aktifkan semua setelan khusus VR.
Metode ini dipanggil setiap kali sistem Android memasuki atau keluar dari mode VR. Hal ini biasanya akan terjadi saat pengguna beralih ke atau dari aplikasi VR yang melakukan rendering stereoskopik.
Definisi di baris
107
dari file
vr.h
.
Dokumentasi untuk struct ini dibuat dari file berikut:
-
hardware/libhardware/include/hardware/
vr.h
Konten dan contoh kode di halaman ini tunduk kepada lisensi yang dijelaskan dalam Lisensi Konten. Java dan OpenJDK adalah merek dagang atau merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-07-26 UTC.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Informasi yang saya butuhkan tidak ada","missingTheInformationINeed","thumb-down"],["Terlalu rumit/langkahnya terlalu banyak","tooComplicatedTooManySteps","thumb-down"],["Sudah usang","outOfDate","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Masalah kode / contoh","samplesCodeIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 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)"]]