การอ้างอิง Struct vr_module
#include <
vr.h
>
ฟิลด์ข้อมูล |
|
struct hw_module_t | common |
void(* | init )(struct vr_module *module) |
void(* | set_vr_mode )(struct vr_module *module, bool enabled) |
void * | reserved [8-2] |
คำอธิบายโดยละเอียด
ใช้ HAL นี้เพื่อรับการเรียกกลับเมื่อมีการใช้แอปพลิเคชันความจริงเสมือน (VR) แอปพลิเคชัน VR มีลักษณะเฉพาะที่ต้องมีการแสดงผลและข้อกำหนดด้านประสิทธิภาพพิเศษหลายประการ ซึ่งรวมถึง
- เวลาในการตอบสนองของเซ็นเซอร์ต่ำ - เวลาในการตอบสนองจากต้นทางถึงปลายทางทั้งหมดจาก IMU, เซ็นเซอร์วัดความเร่ง และไจโรไปยังการเรียกกลับที่แสดงในแอปพลิเคชันต้องต่ำมาก (โดยปกติจะน้อยกว่า 5 มิลลิวินาที) ขั้นตอนนี้จำเป็นสำหรับการรองรับเซ็นเซอร์ HIFI
- เวลาในการตอบสนองของการแสดงผลต่ำ - เวลาในการตอบสนองทั้งหมดจากต้นทางถึงปลายทางตั้งแต่การเรียกใช้การวาดของ GPU ไปจนถึงการอัปเดตการแสดงผลจริงต้องต่ำที่สุด ซึ่งทำได้โดยใช้ SurfaceFlinger ในโหมดบัฟเฟอร์เดี่ยว และตรวจสอบว่าการเรียกใช้การวาดภาพจะซิงค์กับการแสดงผลอย่างถูกต้อง ลักษณะการทำงานนี้จะแสดงผ่านส่วนขยาย EGL ไปยังแอปพลิเคชัน โปรดดูส่วนขยาย EGL ที่จําเป็นสําหรับการดำเนินการนี้ที่ด้านล่าง
- จอแสดงผลที่คงภาพไว้ได้นาน - การตั้งค่าการแสดงผลที่คงภาพไว้ต้องตั้งค่าให้ต่ำที่สุดเท่าที่จะเป็นไปได้โดยยังคงรักษาความสว่างที่เหมาะสม สำหรับจอแสดงผลทั่วไปที่ทำงานด้วย 60Hz พิกเซลควรสว่างเป็นเวลาไม่เกิน 3.5 มิลลิวินาทีจึงจะถือว่ามีความคงที่ต่ำ ซึ่งจะช่วยป้องกันภาพซ้อนระหว่างการเคลื่อนไหวในการตั้งค่า VR และควรเปิดใช้จากไฟล์ lights.h HAL เมื่อตั้งค่า BRIGHTNESS_MODE_LOW_PERSISTENCE
- ประสิทธิภาพที่สอดคล้องกันของ GPU และ CPU - เมื่อได้รับภาระงานแบบผสมของ GPU/CPU สําหรับแอปพลิเคชัน VR ที่มีงานจํานวนมากเป็นช่วงๆ ในระยะเวลาเป็นระยะๆ หลายครั้งต่อเฟรม การจัดตารางเวลาของ CPU ควรตรวจสอบว่างานเธรดการแสดงผลของแอปพลิเคชันทํางานอย่างสม่ำเสมอภายใน 1 มิลลิวินาทีนับจากเวลาที่กําหนดไว้ และทํางานเสร็จสิ้นก่อนสิ้นสุดกรอบเวลาการวาด ด้วยเหตุนี้ คุณต้องจองแกน CPU 1 แกนไว้สำหรับเธรดแสดงผลของแอปพลิเคชัน VR ที่ทำงานอยู่ขณะอยู่ในโหมด VR เท่านั้น และทำให้พร้อมใช้งานใน cpuset "top-app" ในทำนองเดียวกัน คุณต้องรักษาอัตราสัญญาณนาฬิกาของ CPU, GPU และบัสให้เหมาะสมเพื่อให้แน่ใจว่างานแสดงผลจะเสร็จสิ้นภายในเวลาที่กำหนดไว้สำหรับแสดงผลแต่ละเฟรมเมื่อมีการตั้งค่า Flag POWER_HINT_SUSTAINED_PERFORMANCE ในไฟล์ power.h HAL ขณะอยู่ในโหมด VR เมื่ออุปกรณ์ไม่ได้ถูกควบคุมอุณหภูมิ
- ต้องมีส่วนขยาย EGL ที่จำเป็น - การตั้งค่า GPU ที่จำเป็นในการเปิดใช้ความสามารถข้างต้น รวมถึงส่วนขยาย 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 และ EGL_KHR_wait_sync
- การรายงานความร้อนที่ถูกต้อง - ต้องรายงานอุณหภูมิและขีดจำกัดความร้อนที่ถูกต้องในไฟล์ thermal.h HAL กล่าวโดยละเอียดคือ อุณหภูมิผิวปัจจุบันต้องได้รับการรายงานอย่างถูกต้องสำหรับ DEVICE_TEMPERATURE_SKIN และ vr_throttling_threshold ที่รายงานสำหรับอุปกรณ์นี้ต้องรายงานขีดจำกัดอุณหภูมิอย่างถูกต้อง ซึ่งหากอุณหภูมิสูงกว่าขีดจำกัดนี้ ตัวควบคุมอุณหภูมิของอุปกรณ์จะจำกัดความเร็วนาฬิกาของ CPU, GPU และ/หรือบัสให้ต่ำกว่าขั้นต่ำที่จำเป็นสำหรับประสิทธิภาพที่สอดคล้องกัน (ดูหัวข้อย่อยก่อนหน้า)
โดยทั่วไปแล้ว ผู้ให้บริการที่ใช้ HAL นี้จะต้องใช้ set_vr_mode เป็นคำแนะนำเพื่อเปิดใช้การปรับแต่งประสิทธิภาพเฉพาะ VR ที่จําเป็นสําหรับข้อกําหนดข้างต้น และเพื่อเปิดใช้ฟีเจอร์ของอุปกรณ์ที่เหมาะกับโหมดการแสดงผล VR มากที่สุด การเรียกใช้ set_vr_mode อาจไม่ทําอะไรเลยหากไม่มีการเพิ่มประสิทธิภาพหรือจําเป็นต้องเพิ่มประสิทธิภาพเพื่อให้เป็นไปตามข้อกําหนดข้างต้น
จะไม่มีเมธอดใดใน HAL นี้ที่เรียกใช้พร้อมกันจากเฟรมเวิร์ก Android
เอกสารประกอบในสนาม
struct hw_module_t common |
วิธีการทั่วไปของโมดูล ข้อมูลนี้ ต้อง เป็นสมาชิกแรกของ vr_module เนื่องจากผู้ใช้โครงสร้างนี้อาจแคสต์ hw_module_t เป็น vr_module พอยน์เตอร์ในบริบทที่ทราบว่า hw_module_t อ้างอิงถึง vr_module
void(* init)(struct vr_module *module) |
void(* set_vr_mode)(struct vr_module *module, bool enabled) |
ตั้งค่าสถานะโหมด VR สถานะที่เป็นไปได้ของพารามิเตอร์ที่เปิดใช้ ได้แก่ false - โหมด VR ปิดอยู่ ให้ปิดการตั้งค่าเฉพาะ VR ทั้งหมด true - โหมด VR เปิดอยู่ ให้เปิดการตั้งค่าเฉพาะ VR ทั้งหมด
ซึ่งระบบจะเรียกใช้ทุกครั้งที่ระบบ Android เข้าสู่หรือออกจากโหมด VR ซึ่งมักเกิดขึ้นเมื่อผู้ใช้สลับจากหรือไปยังแอปพลิเคชัน VR ที่ใช้การแสดงผลภาพ 3 มิติ
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้
- hardware/libhardware/include/hardware/ vr.h