Referensi Struktur vr_module
#include < vr.h >
Bidang Data | |
struct hw_module_t | umum |
ruang kosong(* | init )(struct vr_module *modul) |
ruang kosong(* | set_vr_mode )(struct vr_module *modul, bool diaktifkan) |
ruang kosong * | dipesan [8-2] |
Detil Deskripsi
Implementasikan HAL ini untuk menerima panggilan balik ketika aplikasi realitas virtual (VR) digunakan. Aplikasi VR secara khas memiliki sejumlah persyaratan tampilan dan kinerja khusus, termasuk:
- Latensi sensor rendah - Total latensi end-to-end dari IMU, akselerometer, dan gyro ke callback yang terlihat oleh aplikasi harus sangat rendah (biasanya <5 ms). Ini diperlukan untuk dukungan sensor HIFI.
- Latensi tampilan rendah - Total latensi end-to-end dari panggilan penarikan GPU hingga pembaruan tampilan sebenarnya harus serendah mungkin. Hal ini dicapai dengan menggunakan SurfaceFlinger dalam mode buffer tunggal, dan memastikan bahwa panggilan penarikan disinkronkan dengan pemindaian tampilan dengan benar. Perilaku ini diekspos melalui ekstensi EGL ke aplikasi. Lihat di bawah untuk ekstensi EGL yang diperlukan untuk ini.
- Tampilan dengan persistensi rendah - Pengaturan persistensi tampilan harus disetel serendah mungkin sambil tetap mempertahankan kecerahan yang wajar. Untuk tampilan umum yang berjalan pada 60Hz, piksel harus menyala selama <=3,5 ms agar dianggap berpersistensi rendah. Hal ini untuk menghindari ghosting selama gerakan dalam pengaturan VR, dan harus diaktifkan dari lampu.h HAL ketika BRIGHTNESS_MODE_LOW_PERSISTENCE diatur.
- Performa GPU dan CPU yang konsisten - Saat diberi beban kerja campuran GPU/CPU untuk aplikasi VR dengan semburan kerja secara berkala beberapa kali dalam satu frame, penjadwalan CPU harus memastikan bahwa pekerjaan thread render aplikasi dijalankan secara konsisten dalam waktu 1 ms sejak saat itu dijadwalkan, dan diselesaikan sebelum akhir jendela pengundian. Untuk tujuan ini, satu inti CPU harus dicadangkan hanya untuk thread render aplikasi VR yang sedang berjalan saat berada dalam mode VR, dan tersedia di cpuset "aplikasi teratas". Demikian pula, laju jam CPU, GPU, dan bus yang sesuai harus dipertahankan untuk memastikan bahwa beban kerja rendering selesai dalam waktu yang ditentukan untuk merender setiap frame ketika tanda POWER_HINT_SUSTAINED_PERFORMANCE telah disetel di power.h HAL saat dalam mode VR saat perangkat berada tidak dibatasi secara termal.
- Ekstensi EGL yang diperlukan harus ada - Pengaturan GPU apa pun yang diperlukan untuk memungkinkan 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 dalam thermal.h HAL. Secara khusus, suhu kulit saat ini harus dilaporkan secara akurat untuk DEVICE_TEMPERATURE_SKIN dan vr_throttling_threshold yang dilaporkan untuk perangkat ini harus secara akurat melaporkan batas suhu yang melebihi batasan suhu yang ditentukan oleh pengatur termal perangkat untuk membatasi laju jam CPU, GPU, dan/atau bus di bawah batas minimum yang diperlukan untuk kinerja yang konsisten ( lihat poin-poin sebelumnya).
Secara umum, vendor yang menerapkan HAL ini diharapkan menggunakan set_vr_mode sebagai petunjuk untuk mengaktifkan penyetelan kinerja khusus VR yang diperlukan untuk persyaratan di atas, dan untuk mengaktifkan fitur perangkat apa pun yang optimal untuk mode tampilan VR. Panggilan set_vr_mode mungkin tidak melakukan apa pun jika tidak ada optimasi yang tersedia atau diperlukan untuk memenuhi persyaratan di atas.
Tidak ada metode dalam HAL ini yang akan dipanggil secara bersamaan dari kerangka Android.
Dokumentasi Lapangan
struct hw_module_t umum |
Metode umum modul. Ini harus menjadi anggota pertama vr_module karena pengguna struktur ini dapat melemparkan hw_module_t ke pointer vr_module dalam konteks di mana diketahui bahwa hw_module_t merujuk pada vr_module .
batal(* init)(struct vr_module *modul) |
void(* set_vr_mode)(struct vr_module *modul, bool diaktifkan) |
Atur status mode VR. Kemungkinan status parameter yang diaktifkan adalah: false - Mode VR dinonaktifkan, nonaktifkan semua pengaturan khusus VR. benar - Mode VR diaktifkan, aktifkan semua pengaturan khusus VR.
Ini dipanggil setiap kali sistem Android masuk atau keluar dari mode VR. Hal ini biasanya terjadi ketika pengguna beralih ke atau dari aplikasi VR yang melakukan rendering stereoskopis.
Dokumentasi untuk struct ini dihasilkan dari file berikut:
- perangkat keras/libhardware/termasuk/perangkat keras/ vr.h