Android Q+ може використовувати Vulkan Graphics API для відтворення інтерфейсу користувача

Skia, графічний движок Google з відкритим вихідним кодом, має бекенд Vulkan Graphics API. Цю серверну частину можна використовувати для візуалізації інтерфейсу користувача в Android Q або новіших версіях.

Наступна основна версія Android, Android 9, буде випущена наступного місяця для кількох пристроїв. На відміну від Android Oreo, де основні вдосконалення були здебільшого під капотом, Android P пропонує більше функцій для користувача як-от оновлений інтерфейс користувача, жести навігації та Digital Wellbeing, а також продовження роботи над Project Високі частоти. Але за лаштунками Google оновив роботу візуалізації графіки на Android. В Android Oreo Google почав тестувати апаратно-прискорений сервер OpenGL для графічного механізму Skia, який був завершений в Android P. Однак Google не зупиняється на досягнутому, оскільки компанія планує реалізувати Сервер Vulkan графічного движка Skia, який з’явиться в Android Q або новішій версії.

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


Відтворення графіки в Android

Для базових знань Skia — це механізм двовимірної графіки з відкритим кодом, який використовується в Google Chrome, Chrome OS, Android, Flutter та інших великих проектах. Skia — це механізм візуалізації графіки, який використовувався для візуалізації в ранніх версіях Android Переглянути і Полотно (класи, які використовуються для створення та малювання інтерфейсу користувача в більшості програм.) Android 3.0 Honeycomb частково замінив Skia на HWUI, бібліотеку, яка перетворює Команди Canvas в команди OpenGL з апаратним прискоренням, хоча бібліотека графіки 2D Skia все ще використовувалася в деяких областях, наприклад path растеризація. Паралельно Google також створив бекенд OpenGL для Skia. У результаті деякі графічні виклики надсилатимуться до бібліотеки Skia, а інші – до серверної частини OpenGL. Щоб очистити графічну архітектуру, Google вирішив, що HWUI тепер спілкуватиметься зі Skia, яка сама спілкується зі своїм апаратно-прискореним сервером OpenGL, щоб виконувати візуалізацію інтерфейсу користувача. Результатом є те, що графічні виклики для інтерфейсу інтерфейсу будуть проходити одним шляхом, а не двома.

Дехто з вас, можливо, пам’ятає параметр розробника під назвою «Налаштувати GPU Renderer» у ранніх попередніх версіях для розробників Android 8.0 Oreo. Цей параметр розробника дозволив вам змусити HWUI використовувати Skia та його апаратно-прискорений сервер OpenGL як GPU рендерер для інтерфейсу інтерфейсу. Параметр розробника було видалено, оскільки тепер така поведінка є типовою.

Параметр розробника «Установити GPU Renderer» у попередньому перегляді розробника Android O

Наступним кроком Google для покращення візуалізації графіки є перехід від серверної частини з апаратним прискоренням OpenGL до серверної частини з апаратним прискоренням Vulkan. Це зовсім не несподіваний крок і є логічним прогресом, але приємно бачити, що ведеться робота над покращенням візуалізації графіки на Android. Хоча цей крок не вирішить усі джерела затримки на Android, він має зменшити час візуалізації кадрів за рахунок скорочення обробки, яку виконує ЦП. З огляду на те, що над цим ще не завершено роботу (він ще не завершений в Android P), ми очікуємо, що він буде запущений з Android Q або іншим майбутнім випуском Android.


Попередній перегляд використання API графіки Vulkan для візуалізації інтерфейсу користувача

Насправді зараз можна протестувати серверну частину 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 Recognized Developer luca020400 за допомогу в написанні цієї статті, за надання скріншотів, на яких показано розібраний код libhwui.so, і за надання позначки налагодження для тестування серверної частини Vulkan.


Джерело 1: Talkin’ Treble: Як інженери Android перемагають у війні з фрагментацією [ArsTechnica]

Джерело 2: Android Graphics Pipeline: From Button to Framebuffer [блог inovex]

Джерело 3: веб-сторінка Skia [Google]

Джерело 4: коментарі Ромена Гі, Android Graphics і Kotlin @ Google [Reddit]