Начиная с Android 13, HAL Hardware Composer (HWC) определяется в AIDL , а версии HIDL от android.hardware.graphics.composer@2.1
до android.hardware.graphics.composer@2.4
считаются устаревшими.
На этой странице описаны различия между AIDL и HIDL HAL для HWC, а также реализация и тестирование AIDL HAL.
Из-за преимуществ, предлагаемых AIDL, поставщикам рекомендуется внедрить HAL композитора AIDL , начиная с Android 13, вместо версии HIDL. Дополнительную информацию смотрите в разделе «Реализация» .
Различия между AIDL и HIDL HAL
Новый HAL композитора AIDL с именем android.hardware.graphics.composer3
определен в IComposer.aidl
. It exposes an API similar to the HIDL HAL android.hardware.graphics.composer@2.4
with the following changes:
Удаление очереди быстрых сообщений (FMQ) в пользу пакетируемых команд.
AIDL HAL определяет командный интерфейс на основе строго типизированных типов, в отличие от сериализованных команд через FMQ в HIDL. Это обеспечивает стабильный интерфейс для команд и более читаемое определение того, как интерпретируется полезная нагрузка команды.
Метод
executeCommands
определяется вIComposerClient.aidl
какCommandResultPayload[] executeCommands(in DisplayCommand[] commands);
где каждая команда представляет собой строго типизированный тип, определенный в
DisplayCommand.aidl
. Command responses are strongly typed parcelables defined inCommandResultPayload.aidl
.Removal of
IComposerClient.getClientTargetSupport
as there are no active clients for this method.Представление цветов в виде чисел с плавающей запятой вместо байтов для лучшего согласования с верхним стеком графики в Android, как определено в
ASurfaceTransaction_setColor
.Добавление новых полей для управления HDR-контентом.
В AIDL HAL смешанные стеки слоев SDR/HDR поддерживают плавное затемнение слоев SDR, когда слой HDR одновременно отображается на экране.
The
brightness
field inLayerCommand
lets SurfaceFlinger specify a per-layer brightness, so that the HWC dims the layer's content in linear light space, as opposed to gamma space.Поле
brightness
вClientTargetPropertyWithBrightness
позволяет HWC указать пространство яркости для композиции клиента и указатьRenderEngine
, нужно ли затемнять слои SDR в композиции клиента.Поле
dimmingStage
позволяет HWC настроить, когдаRenderEngine
должен затемнять контент. Это учитывает определяемые поставщикомColorModes
, которые могут предпочесть затемнение в гамма-пространстве, чтобы обеспечить определяемое поставщиком улучшение контрастности в своих цветовых конвейерах.Добавлен новый тип композиции
DISPLAY_DECORATION
вComposition.aidl
для оформления экрана.Некоторые устройства имеют специальное оборудование для оптимизации отрисовки альфа-маски, которая сглаживает закругленные углы и вырезы на дисплеях. Устройства с таким оборудованием должны реализовать
IComposerClient.getDisplayDecorationSupport
для возврата структурыDisplayDecorationSupport
, как определено в новомDisplayDecorationSupport.aidl
. Эта структура описывает перечисленияPixelFormat
иAlphaInterpretation
, необходимые устройству. В этой реализации системный пользовательский интерфейс помечает слой альфа-маски какDISPLAY_DECORATION
— новый тип композиции, который использует преимущества выделенного оборудования.Добавление нового поля
expectedPresentTime
вDisplayCommand.aidl
.The
expectedPresentTime
field lets SurfaceFlinger set the expected present time to when the current content must be displayed on screen. Благодаря этой функции SurfaceFlinger заранее отправляет текущую команду реализации, позволяя ей конвейеризировать большую часть работы по композиции.Добавление новых API для управления конфигурацией отображения загрузки.
Используя
BOOT_DISPLAY_CONFIG
, поставщики могут указать, что поддерживается конфигурация отображения загрузки. МетодыsetBootDisplayConfig
,clearBootDisplayConfig
иgetPreferredBootDisplayConfig
используютBOOT_DISPLAY_CONFIG
следующим образом:Используя
setBootDisplayConfig
, платформа информирует поставщиков о конфигурации отображения времени загрузки. Поставщики должны кэшировать конфигурацию отображения загрузки и загружаться с этой конфигурацией при следующей перезагрузке. Если устройство не может загрузиться с этой конфигурацией, поставщик должен найти конфигурацию, соответствующую разрешению и частоте обновления этой конфигурации. Если такой конфигурации не существует, поставщику следует использовать предпочтительную конфигурацию дисплея.ИспользуяclearBootDisplayConfig, платформа сообщает поставщикам о необходимости очистить конфигурацию экрана загрузки и загрузиться с
clearBootDisplayConfig
конфигурацией дисплея во время следующей перезагрузки.Используя
getPreferredBootDisplayConfig
, платформа запрашивает предпочтительный режим загрузки поставщика.
When the boot display configuration isn't supported, these methods return a value of
UNSUPPORTED
.Добавление новых API для управления таймером простоя дисплея.
Using
DISPLAY_IDLE_TIMER
, vendors can specify that an inactivity timer is implemented by the vendor for this display. В режиме ожидания эта возможность изменяет частоту обновления на более низкое значение для экономии энергии. Платформа используетsetIdleTimerEnabled
для управления тайм-аутом таймера, а в некоторых случаях и для его отключения, чтобы предотвратить нежелательное переключение частоты обновления во время простоя.Using the
IComposerCallback.onVsyncIdle
callback indicates to the platform that the display is idle and thevsync
cadence has changed. The platform responds to this callback by resetting itsvsync
model. Он вызывает повторную синхронизациюvsync
синхронизации в следующем кадре и изучает новую частотуvsync
.
Выполнение
Поставщики не обязаны реализовывать AIDL HAL для Android 13. Однако им рекомендуется реализовать AIDL Composer HAL вместо версии HIDL, чтобы использовать новые функции и API.
Эталонная реализация AIDL HWC HAL реализована в эмуляторах Android.
Тестирование
Чтобы протестировать свою реализацию, запустите VtsHalGraphicsComposer3_TargetTest
.
Starting in Android 13, the Hardware Composer (HWC) HAL is defined in AIDL and the HIDL versions ranging from android.hardware.graphics.composer@2.1
to android.hardware.graphics.composer@2.4
are deprecated.
На этой странице описаны различия между AIDL и HIDL HAL для HWC, а также реализация и тестирование AIDL HAL.
Из-за преимуществ, предлагаемых AIDL, поставщикам рекомендуется внедрить HAL композитора AIDL , начиная с Android 13, вместо версии HIDL. Дополнительную информацию смотрите в разделе «Реализация» .
Различия между AIDL и HIDL HAL
Новый HAL композитора AIDL с именем android.hardware.graphics.composer3
определен в IComposer.aidl
. Он предоставляет API, аналогичный HIDL HAL android.hardware.graphics.composer@2.4
со следующими изменениями:
Удаление очереди быстрых сообщений (FMQ) в пользу пакетируемых команд.
AIDL HAL определяет командный интерфейс на основе строго типизированных типов, в отличие от сериализованных команд через FMQ в HIDL. Это обеспечивает стабильный интерфейс для команд и более удобочитаемое определение того, как интерпретируется полезная нагрузка команды.
Метод
executeCommands
определен вIComposerClient.aidl
какCommandResultPayload[] executeCommands(in DisplayCommand[] commands);
где каждая команда представляет собой строго типизированный тип, определенный в
DisplayCommand.aidl
. Ответы на команды представляют собой строго типизированные объекты, определенные вCommandResultPayload.aidl
.Удаление
IComposerClient.getClientTargetSupport
, так как для этого метода нет активных клиентов.Представление цветов в виде чисел с плавающей запятой вместо байтов для лучшего согласования с верхним стеком графики в Android, как определено в
ASurfaceTransaction_setColor
.Добавление новых полей для управления HDR-контентом.
В AIDL HAL смешанные стеки слоев SDR/HDR поддерживают плавное затемнение слоев SDR, когда слой HDR одновременно отображается на экране.
Поле
brightness
вLayerCommand
позволяет SurfaceFlinger указать яркость для каждого слоя, так что HWC затемняет содержимое слоя в линейном световом пространстве, а не в гамма-пространстве.Поле
brightness
вClientTargetPropertyWithBrightness
позволяет HWC указать пространство яркости для композиции клиента и указатьRenderEngine
, нужно ли затемнять слои SDR в композиции клиента.Поле
dimmingStage
позволяет HWC настроить, когдаRenderEngine
должен затемнять контент. This accommodates vendor-definedColorModes
, which might prefer to dim in gamma space, to allow vendor-defined contrast enhancements in their color pipelines.Addition of a new composition type
DISPLAY_DECORATION
inComposition.aidl
for screen decorations.Некоторые устройства имеют специальное оборудование для оптимизации отрисовки альфа-маски, которая сглаживает закругленные углы и вырезы на дисплеях. Устройства с таким оборудованием должны реализовать
IComposerClient.getDisplayDecorationSupport
для возврата структурыDisplayDecorationSupport
, как определено в новомDisplayDecorationSupport.aidl
. Эта структура описывает перечисленияPixelFormat
иAlphaInterpretation
, необходимые устройству. Upon this implementation, System UI marks the alpha mask layer asDISPLAY_DECORATION
, a new composition type that takes advantage of the dedicated hardware.Добавление нового поля
expectedPresentTime
вDisplayCommand.aidl
.Поле
expectedPresentTime
позволяет SurfaceFlinger установить ожидаемое настоящее время, когда текущий контент должен отображаться на экране. Благодаря этой функции SurfaceFlinger заранее отправляет текущую команду реализации, позволяя ей конвейеризировать большую часть работы по композиции.Добавление новых API для управления конфигурацией отображения загрузки.
Используя
BOOT_DISPLAY_CONFIG
, поставщики могут указать, что поддерживается конфигурация отображения загрузки. МетодыsetBootDisplayConfig
,clearBootDisplayConfig
иgetPreferredBootDisplayConfig
используютBOOT_DISPLAY_CONFIG
следующим образом:Using
setBootDisplayConfig
, the framework informs vendors of the boot time display configuration. Поставщики должны кэшировать конфигурацию отображения загрузки и загружаться с этой конфигурацией при следующей перезагрузке. Если устройство не может загрузиться с этой конфигурацией, поставщик должен найти конфигурацию, соответствующую разрешению и частоте обновления этой конфигурации. Если такой конфигурации не существует, поставщику следует использовать предпочтительную конфигурацию дисплея.ИспользуяclearBootDisplayConfig, платформа сообщает поставщикам о необходимости очистить конфигурацию экрана загрузки и загрузиться с
clearBootDisplayConfig
конфигурацией дисплея во время следующей перезагрузки.Используя
getPreferredBootDisplayConfig
, платформа запрашивает предпочтительный режим загрузки поставщика.
Если конфигурация отображения загрузки не поддерживается, эти методы возвращают значение
UNSUPPORTED
.Добавление новых API для управления таймером простоя дисплея.
Используя
DISPLAY_IDLE_TIMER
, поставщики могут указать, что для этого дисплея поставщиком реализован таймер неактивности. В режиме ожидания эта возможность изменяет частоту обновления на более низкое значение для экономии энергии. Платформа используетsetIdleTimerEnabled
для управления таймаутом таймера, а в некоторых случаях и для его отключения, чтобы предотвратить нежелательное переключение частоты обновления во время простоя.Использование обратного вызова
IComposerCallback.onVsyncIdle
указывает платформе, что дисплей находится в режиме ожидания и частотаvsync
синхронизации изменилась. Платформа отвечает на этот обратный вызов, сбросив свою модельvsync
. Это заставляетvsync
Resync на следующем кадре и изучает новую каденциюvsync
.
Выполнение
Vendors aren't required to implement the AIDL HAL for Android 13. However, they're encouraged to implement the AIDL composer HAL instead of the HIDL version to use the new functionality and APIs.
Справочная реализация для AIDL HWC HAL реализована в эмуляторах Android.
Тестирование
Чтобы протестировать свою реализацию, запустите VtsHalGraphicsComposer3_TargetTest
.
Starting in Android 13, the Hardware Composer (HWC) HAL is defined in AIDL and the HIDL versions ranging from android.hardware.graphics.composer@2.1
to android.hardware.graphics.composer@2.4
are deprecated.
На этой странице описаны различия между AIDL и HIDL HAL для HWC, а также реализация и тестирование AIDL HAL.
Из-за преимуществ, предлагаемых AIDL, поставщикам рекомендуется внедрить HAL композитора AIDL , начиная с Android 13, вместо версии HIDL. Дополнительную информацию смотрите в разделе «Реализация» .
Различия между AIDL и HIDL HAL
Новый HAL композитора AIDL с именем android.hardware.graphics.composer3
определен в IComposer.aidl
. Он предоставляет API, аналогичный HIDL HAL android.hardware.graphics.composer@2.4
со следующими изменениями:
Удаление очереди быстрых сообщений (FMQ) в пользу пакетируемых команд.
AIDL HAL определяет командный интерфейс на основе строго типизированных типов, в отличие от сериализованных команд через FMQ в HIDL. Это обеспечивает стабильный интерфейс для команд и более удобочитаемое определение того, как интерпретируется полезная нагрузка команды.
Метод
executeCommands
определен вIComposerClient.aidl
какCommandResultPayload[] executeCommands(in DisplayCommand[] commands);
where each command is a strongly typed parcelable type defined in
DisplayCommand.aidl
. Ответы на команды представляют собой строго типизированные объекты, определенные вCommandResultPayload.aidl
.Удаление
IComposerClient.getClientTargetSupport
, так как для этого метода нет активных клиентов.Представление цветов в виде чисел с плавающей запятой вместо байтов для лучшего согласования с верхним графическим стеком в Android, как определено в
ASurfaceTransaction_setColor
.Добавление новых полей для управления HDR-контентом.
В AIDL HAL смешанные стеки слоев SDR/HDR поддерживают плавное затемнение слоев SDR, когда слой HDR одновременно отображается на экране.
Поле
brightness
вLayerCommand
позволяет SurfaceFlinger указать яркость для каждого слоя, так что HWC затемняет содержимое слоя в линейном световом пространстве, а не в гамма-пространстве.Поле
brightness
вClientTargetPropertyWithBrightness
позволяет HWC указать пространство яркости для композиции клиента и указатьRenderEngine
, нужно ли затемнять слои SDR в композиции клиента.Поле
dimmingStage
позволяет HWC настроить, когдаRenderEngine
должен затемнять контент. Это учитывает определяемые поставщикомColorModes
, которые могут предпочесть затемнение в гамма-пространстве, чтобы обеспечить определяемое поставщиком улучшение контрастности в своих цветовых конвейерах.Addition of a new composition type
DISPLAY_DECORATION
inComposition.aidl
for screen decorations.Некоторые устройства имеют специальное оборудование для оптимизации отрисовки альфа-маски, которая сглаживает закругленные углы и вырезы на дисплеях. Устройства с таким оборудованием должны реализовать
IComposerClient.getDisplayDecorationSupport
для возврата структурыDisplayDecorationSupport
, как определено в новомDisplayDecorationSupport.aidl
. Эта структура описывает перечисленияPixelFormat
иAlphaInterpretation
, необходимые устройству. В этой реализации системный пользовательский интерфейс помечает слой альфа-маски какDISPLAY_DECORATION
— новый тип композиции, который использует преимущества выделенного оборудования.Добавление нового поля
expectedPresentTime
вDisplayCommand.aidl
.Поле
expectedPresentTime
позволяет SurfaceFlinger установить ожидаемое настоящее время, когда текущий контент должен отображаться на экране. Благодаря этой функции SurfaceFlinger заранее отправляет текущую команду реализации, позволяя ей конвейеризировать большую часть работы по композиции.Добавление новых API для управления конфигурацией отображения загрузки.
Используя
BOOT_DISPLAY_CONFIG
, поставщики могут указать, что поддерживается конфигурация отображения загрузки. МетодыsetBootDisplayConfig
,clearBootDisplayConfig
иgetPreferredBootDisplayConfig
используютBOOT_DISPLAY_CONFIG
следующим образом:Используя
setBootDisplayConfig
, платформа информирует поставщиков о конфигурации отображения времени загрузки. Поставщики должны кэшировать конфигурацию отображения загрузки и загружаться с этой конфигурацией при следующей перезагрузке. Если устройство не может загрузиться с этой конфигурацией, поставщик должен найти конфигурацию, соответствующую разрешению и частоте обновления этой конфигурации. Если такой конфигурации не существует, поставщику следует использовать предпочтительную конфигурацию дисплея.Using
clearBootDisplayConfig
, the framework informs the vendors to clear the boot display configuration, and boot in their preferred display config during the next reboot.Using
getPreferredBootDisplayConfig
, the framework queries the vendor's preferred boot mode.
When the boot display configuration isn't supported, these methods return a value of
UNSUPPORTED
.Добавление новых API для управления таймером простоя дисплея.
Используя
DISPLAY_IDLE_TIMER
, поставщики могут указать, что для этого дисплея поставщиком реализован таймер неактивности. В режиме ожидания эта возможность изменяет частоту обновления на более низкое значение для экономии энергии. The platform usessetIdleTimerEnabled
to control the timeout of the timer, and in some cases, to disable it in order to prevent undesired refresh rate switches when idle.Использование обратного вызова
IComposerCallback.onVsyncIdle
указывает платформе, что дисплей находится в режиме ожидания и частотаvsync
синхронизации изменилась. The platform responds to this callback by resetting itsvsync
model. Он вызывает повторную синхронизациюvsync
синхронизации в следующем кадре и изучает новую частотуvsync
.
Выполнение
Поставщики не обязаны реализовывать AIDL HAL для Android 13. Однако им рекомендуется реализовать AIDL Composer HAL вместо версии HIDL, чтобы использовать новые функции и API.
Эталонная реализация AIDL HWC HAL реализована в эмуляторах Android.
Тестирование
Чтобы протестировать свою реализацию, запустите VtsHalGraphicsComposer3_TargetTest
.