Android Q+ может использовать Vulkan Graphics API для рендеринга пользовательского интерфейса.

Skia, графический движок Google с открытым исходным кодом, имеет серверную часть Vulkan Graphics API. Этот бэкэнд можно использовать для рендеринга пользовательского интерфейса в Android Q или более поздних версиях.

Следующая основная версия Android, Android 9, будет выпущена в следующем месяце для нескольких устройств. В отличие от Android Oreo, где основные улучшения были в основном скрытыми, Android P предлагает больше функций, ориентированных на пользователя. такие как обновленный пользовательский интерфейс, жесты навигации и цифровое благополучие, а также продолжая работу над Project Высокие частоты. Но за кулисами Google обновил принцип работы рендеринга графики на Android. В Android Oreo Google начал тестирование аппаратного ускорения OpenGL для графического движка Skia, которое было завершено в Android P. Однако Google не останавливается на достигнутом: компания планирует внедрить Серверная часть Вулкана графического движка Skia, который появится в Android Q или более поздней версии.

Доказательства этому исходят от комментарий представлено инженером Google по Chromium Gerrit с открытым исходным кодом. Комментарий относится к отчету об ошибке в предстоящей реализации Vulkan Graphics API для браузера Google Chrome на Android. В комментарии говорится, что когда-нибудь в будущем «возникнет необходимость» иметь Vulkan API. поддержка Android WebView, когда «фреймворк [Android] начнет использовать Vulkan для HWUI."


Рендеринг графики в Android

Для справки: Skia — это движок 2D-графики с открытым исходным кодом, который используется в Google Chrome, Chrome OS, Android, Flutter и других крупных проектах. Skia — это движок графического рендеринга, который использовался в ранних версиях Android для рендеринга. Вид и Холст (классы, используемые для создания и рисования пользовательского интерфейса в большинстве приложений.) Android 3.0 Honeycomb частично заменил Skia на HWUI, библиотеку, которая преобразует Команды Canvas в команды OpenGL с аппаратным ускорением, хотя графическая библиотека 2D Skia все еще использовалась в некоторых областях, таких как путь растеризация. Параллельно Google также создал серверную часть OpenGL для Skia. В результате некоторые графические вызовы будут направляться в библиотеку Skia, а другие — в серверную часть OpenGL. Чтобы очистить графическую архитектуру, Google решил, что HWUI теперь будет взаимодействовать со Skia, которая сама взаимодействует со своим бэкэндом OpenGL с аппаратным ускорением, для выполнения рендеринга пользовательского интерфейса. В результате графические вызовы для платформы пользовательского интерфейса будут следовать по одному пути, а не по двум.

Некоторые из вас, возможно, помнят опцию разработчика под названием «Установить рендеринг графического процессора» в ранних превью-версиях Android 8.0 Oreo для разработчиков. Этот вариант разработчика позволял вам заставить HWUI использовать Skia и его серверную часть OpenGL с аппаратным ускорением в качестве средства рендеринга графического процессора для инфраструктуры пользовательского интерфейса. Опция разработчика была удалена, поскольку теперь это поведение используется по умолчанию.

Опция разработчика «Установить GPU Renderer» в превью для разработчиков Android O

Следующим шагом Google по улучшению рендеринга графики является переход от серверной части с аппаратным ускорением OpenGL к серверной части с аппаратным ускорением Vulkan. Это совсем не неожиданный шаг, это логичное развитие, но приятно видеть, что ведется работа по улучшению рендеринга графики на Android. Хотя этот шаг не устранит все причины задержек на Android, он должен сократить время рендеринга кадров за счет сокращения обработки, выполняемой процессором. Учитывая, что эта работа еще находится в стадии разработки (в Android P она еще не завершена), мы ожидаем, что она будет запущена с Android Q или другой будущей версией Android.


Предварительный просмотр использования Vulkan Graphics API для рендеринга пользовательского интерфейса.

На самом деле теперь можно протестировать серверную часть Vulkan для Skia на Android P. Существует параметр отладки, который вы можете установить, чтобы заставить Android использовать конвейер Skia Vulkan. Просто перезагрузитесь после добавления следующей строки в /system/build.prop:

debug.hwui.renderer=skiavk

Добавление этой строки на устройстве под управлением Android Oreo приведет к сбою, поэтому мы не рекомендуем это делать. Хотя ваше устройство будет загружаться с этим флагом на Android P, на данный момент оно довольно глючное. Google Pixel Launcher в большинстве случаев не отображает фон, анимированные видеоролики в настройках не загружаются, а в строке состояния и уведомлениях есть несколько графических сбоев. В остальном большинство приложений, даже видеоролики YouTube и игры, такие как Doodle Jump, загружаются нормально.

Большое спасибо признанному разработчику XDA. luca020400 за помощь в написании этой статьи, за предоставленные снимки экрана, показывающие дизассемблированный код libhwui.so, а также за предоставление флага отладки для тестирования серверной части Vulkan.


Источник 1: Talkin’ Treble: Как инженеры Android выигрывают войну с фрагментацией [АрсТехника]

Источник 2: Графический конвейер Android: от кнопки до фреймбуфера [блог inovex]

Источник 3: Веб-страница Skia [Google]

Источник 4: Комментарии Ромена Гая, Android Graphics и Kotlin @ Google [Реддит]