การอ้างอิง Struct vr_module

การอ้างอิง 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

คําจํากัดความที่บรรทัด 82 ของไฟล์ vr.h .

เอกสารประกอบในสนาม

struct hw_module_t common

วิธีการทั่วไปของโมดูล ข้อมูลนี้ ต้อง เป็นสมาชิกแรกของ vr_module เนื่องจากผู้ใช้โครงสร้างนี้อาจแคสต์ hw_module_t เป็น vr_module พอยน์เตอร์ในบริบทที่ทราบว่า hw_module_t อ้างอิงถึง vr_module

คําจํากัดความที่บรรทัด 89 ของไฟล์ vr.h .

void(* init)(struct vr_module *module)

วิธีการที่สะดวกสำหรับการใช้งาน HAL เพื่อตั้งค่าสถานะที่จำเป็นเมื่อเริ่มต้นรันไทม์ ฟังก์ชันนี้จะเรียกใช้ 1 ครั้งจาก VrManagerService ในช่วงการบูต ระบบจะไม่เรียกใช้เมธอดใดๆ จาก HAL นี้ก่อนการเริ่มต้น

คําจํากัดความที่บรรทัด 96 ของไฟล์ vr.h .

void* reserved[8-2]

คําจํากัดความที่บรรทัด 110 ของไฟล์ vr.h .

void(* set_vr_mode)(struct vr_module *module, bool enabled)

ตั้งค่าสถานะโหมด VR สถานะที่เป็นไปได้ของพารามิเตอร์ที่เปิดใช้ ได้แก่ false - โหมด VR ปิดอยู่ ให้ปิดการตั้งค่าเฉพาะ VR ทั้งหมด true - โหมด VR เปิดอยู่ ให้เปิดการตั้งค่าเฉพาะ VR ทั้งหมด

ซึ่งระบบจะเรียกใช้ทุกครั้งที่ระบบ Android เข้าสู่หรือออกจากโหมด VR ซึ่งมักเกิดขึ้นเมื่อผู้ใช้สลับจากหรือไปยังแอปพลิเคชัน VR ที่ใช้การแสดงผลภาพ 3 มิติ

คําจํากัดความที่บรรทัด 107 ของไฟล์ vr.h .


เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้
  • hardware/libhardware/include/hardware/ vr.h