Справочник по структуре vr_module

Справочник по структуре vr_module

#include < vr.h >

Поля данных

структура hw_module_t общий
пустота(* init )(struct vr_module *module)
пустота(* set_vr_mode )(struct vr_module *module, bool включено)
пустота * зарезервировано [8-2]

Подробное описание

Внедрите этот 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.

Полевая документация

структура hw_module_t общая

Общие методы модуля. Это должен быть первый член vr_module , поскольку пользователи этой структуры могут привести hw_module_t к указателю vr_module в контекстах, где известно, что hw_module_t ссылается на vr_module .

Определение в строке 89 файла vr.h.

void(* init)(struct vr_module *module)

Удобный метод реализации HAL для настройки любого состояния, необходимого при запуске во время выполнения. Это вызывается один раз из VrManagerService во время фазы загрузки. Никакие методы из этого HAL не будут вызываться перед инициализацией.

Определение в строке 96 файла vr.h.

недействительность* зарезервировано[8-2]

Определение в строке 110 файла vr.h.

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