ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
การอ้างอิง Struct vr_module
#include <
vr.h
>
ใช้ 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
.
วิธีการที่สะดวกสำหรับการใช้งาน HAL เพื่อตั้งค่าสถานะที่จำเป็นเมื่อเริ่มต้นรันไทม์ ฟังก์ชันนี้จะเรียกใช้ 1 ครั้งจาก VrManagerService ในช่วงการบูต ระบบจะไม่เรียกใช้เมธอดใดๆ จาก HAL นี้ก่อนการเริ่มต้น
คําจํากัดความที่บรรทัด
96
ของไฟล์
vr.h
.
คําจํากัดความที่บรรทัด
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
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-26 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 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)"]]