Vulkan

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 включает следующие компоненты:

Компоненты 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.