Referensi Struct vr_module

Referensi Struct vr_module

#include < vr.h >

Kolom Data

struct hw_module_t   umum
 
void(*  init )(struct vr_module *module)
 
void(*  set_vr_mode )(struct vr_module *module, bool enabled)
 
void *  reserved [8-2]
 

Deskripsi Mendetail

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 .

Dokumentasi Bidang

struct hw_module_t umum

Metode umum modul. ini harus menjadi anggota pertama vr_module karena pengguna struktur ini dapat mentransmisikan hw_module_t ke vr_module pointer dalam konteks yang diketahui bahwa hw_module_t mereferensikan vr_module .

Definisi di baris 89 dari file vr.h .

void(* init)(struct vr_module *module)

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 .

void* reserved[8-2]

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