Начиная с 27 марта 2025 г. мы рекомендуем использовать android-latest-release
вместо aosp-main
для создания и участия в AOSP. Дополнительные сведения см. в разделе Изменения в AOSP .
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Справочник по структуре vr_module
#include < vr.h >
Внедрите этот HAL для получения обратных вызовов при использовании приложения виртуальной реальности (VR). Приложения виртуальной реальности обычно предъявляют ряд особых требований к отображению и производительности, в том числе:
- Низкая задержка датчика. Общая сквозная задержка от IMU, акселерометра и гироскопа до видимого приложением обратного вызова должна быть чрезвычайно низкой (обычно <5 мс). Это необходимо для поддержки датчика HIFI.
- Низкая задержка отображения. Общая сквозная задержка от вызовов отрисовки графического процессора до фактического обновления дисплея должна быть как можно меньшей. Это достигается за счет использования SurfaceFlinger в режиме с одной буферизацией и обеспечения правильной синхронизации вызовов отрисовки со сканированием дисплея. Это поведение предоставляется приложениям через расширение EGL. Ниже приведены необходимые для этого расширения EGL.
- Отображение с низким постоянством. Параметры постоянства отображения должны быть установлены как можно ниже, сохраняя при этом разумную яркость. Для типичного дисплея, работающего на частоте 60 Гц, пиксели должны светиться в течение <= 3,5 мс, чтобы считаться малопостоянным. Это позволяет избежать ореолов во время движений в настройках VR и должно быть включено в HAL Lights.h , когда установлено BRIGHTNESS_MODE_LOW_PERSISTENCE.
- Стабильная производительность графического процессора и процессора. При смешанной рабочей нагрузке графического процессора и процессора для приложения VR с всплесками работы через регулярные промежутки времени несколько раз в кадре планирование ЦП должно гарантировать, что работа потока рендеринга приложения выполняется последовательно в течение 1 мс с момента запуска. запланировано и завершено до окончания окна розыгрыша. С этой целью одно ядро ЦП должно быть зарезервировано исключительно для потока рендеринга текущего запущенного приложения VR в режиме VR и сделано доступным в процессорном наборе «top-app». Аналогично, необходимо поддерживать соответствующую тактовую частоту ЦП, графического процессора и шины, чтобы гарантировать, что рабочая нагрузка рендеринга завершится в течение времени, отведенного для рендеринга каждого кадра, когда флаг POWER_HINT_SUSTAINED_PERFORMANCE установлен в HAL power.h в режиме VR, когда устройство включено. не подвергается термическому дросселированию.
- Должны присутствовать необходимые расширения EGL. Требуются любые настройки графического процессора, необходимые для реализации вышеуказанных возможностей, включая расширения 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, сообщаемое для этого устройства, должно точно сообщать предел температуры, выше которого терморегулятор устройства ограничивает тактовую частоту процессора, графического процессора и/или шины ниже минимума, необходимого для стабильной производительности ( см. предыдущий пункт).
В общем, ожидается, что поставщики, реализующие этот HAL, будут использовать set_vr_mode в качестве подсказки для включения настройки производительности, специфичной для VR, необходимой для любого из вышеперечисленных требований, и для включения любых функций устройства, оптимальных для режимов отображения VR. Вызов set_vr_mode может просто ничего не делать, если для удовлетворения вышеуказанных требований нет доступных или необходимых оптимизаций.
Никакие методы в этом HAL не будут вызываться одновременно из платформы Android.
Определение в строке 82 файла vr.h.
Удобный метод реализации HAL для настройки любого состояния, необходимого при запуске во время выполнения. Это вызывается один раз из VrManagerService во время фазы загрузки. Никакие методы из этого HAL не будут вызываться перед инициализацией.
Определение в строке 96 файла vr.h.
недействительность* зарезервировано[8-2] |
void(* set_vr_mode)(struct vr_module *module, bool включен) |
Установите состояние режима VR. Возможные состояния включенного параметра: false — режим VR отключен, отключите все настройки, специфичные для VR. true — режим VR включен, включите все настройки, относящиеся к VR.
Это вызывается всякий раз, когда система Android входит в режим VR или выходит из него. Обычно это происходит, когда пользователь переключается на приложение VR, выполняющее стереоскопический рендеринг, или обратно.
Определение в строке 107 файла vr.h.
Документация для этой структуры была создана из следующего файла:
- Аппаратное обеспечение/libhardware/include/hardware/ vr.h
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-07-29 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-29 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)"]]