Android поддерживает Vulkan – кросс-платформенный API с низкими накладными расходами для высокопроизводительной 3D-графики. Как и OpenGL ES (GLES), Vulkan предоставляет инструменты для создания высококачественной графики в приложениях в реальном времени. Vulkan позволяет снизить нагрузку на ЦП и поддерживает промежуточный двоичный язык SPIR-V.
Поставщики систем на кристалле, например независимые поставщики оборудования (IHV) для графических процессоров, пишут драйверы Vulkan для Android. Производители оригинального оборудования интегрируют эти драйверы для определенных устройств. Подробную информацию о том, как драйвер Vulkan взаимодействует с системой, как устанавливаются инструменты для определенных графических процессоров и какие требования предъявляются к устройствам Android, можно найти в статье Реализация Vulkan.
Разработчики приложений используют Vulkan, чтобы создавать приложения, которые выполняют команды на графическом процессоре со значительно меньшими затратами. Кроме того, Vulkan обеспечивает более прямое сопоставление с возможностями, которые есть в современном графическом оборудовании, по сравнению с EGL и GLES. Это позволяет свести к минимуму вероятность ошибок драйверов и сократить время тестирования для разработчиков.
Общую информацию о Vulkan можно найти в обзоре Vulkan или в списке ресурсов.
Компоненты Vulkan
Поддержка Vulkan включает следующие компоненты:

Рисунок 1. Компоненты Vulkan
| Название компонента | Поставщик услуг | Описание |
|---|---|---|
| Слои проверки Vulkan | Android (в NDK) | Библиотеки, используемые при разработке приложений Vulkan для поиска ошибок в использовании API Vulkan. После обнаружения ошибок использования API эти библиотеки удаляются. |
| Vulkan Runtime | Android | Нативная библиотека libvulkan.so, которая предоставляет нативный API Vulkan.Большинство функций Vulkan Runtime реализовано в драйвере, предоставленном поставщиком графического процессора. Vulkan Runtime оборачивает драйвер, предоставляет возможности перехвата API (для отладки и других инструментов разработчика) и управляет взаимодействием между драйвером и зависимостями платформы. |
| Драйвер Vulkan | Процессор | Сопоставляет API Vulkan с командами GPU, относящимися к определенному оборудованию, и взаимодействием с графическим драйвером ядра. |
Измененные компоненты
BufferQueue и Gralloc поддерживают Vulkan:
- BufferQueue Дополнительные значения перечисления и методы в BufferQueue и интерфейсе
ANativeWindowпозволяют среде выполнения Vulkan подключаться к BufferQueue черезANativeWindow. - Gralloc Дополнительный интерфейс позволяет Gralloc определить, можно ли использовать определенный формат для конкретного сочетания производителя и потребителя, не выделяя буфер.
Подробные сведения об этих компонентах можно найти в статье BufferQueue и gralloc. Подробнее о ANativeWindow рассказывается в статье EGLSurfaces и OpenGL ES.
Ресурсы
Дополнительную информацию о Vulkan можно найти в следующих ресурсах:
-
Vulkan Loader (
libvulkan.so) по адресуplatform/frameworks/native/vulkan. Содержит загрузчик Vulkan для Android, а также некоторые инструменты, связанные с Vulkan и полезные для разработчиков платформы. - Как реализовать поддержку Vulkan. Предназначено для независимых поставщиков оборудования графических процессоров, разрабатывающих драйверы Vulkan для Android, и OEM-производителей, интегрирующих эти драйверы в определенные устройства. В нем описано, как драйвер Vulkan взаимодействует с системой, как устанавливать инструменты для определенного графического процессора и какие требования к реализации предъявляются в Android.
- Руководство по Vulkan Graphics API Включает информацию о том, как начать использовать Vulkan в приложениях Android, о платформе Vulkan для Android, компиляторах шейдеров Vulkan и слоях проверки, которые помогают обеспечить стабильность приложений, использующих Vulkan.
- Новости Vulkan. Новости о событиях, обновлениях, руководствах и других темах, связанных с Vulkan.