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

click fraud protection

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 или по-късна версия.

Доказателството за това идва от a

коментар изпратено от инженер на 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 бекенд, за да направи UI рендиране. Резултатът е, че графичните извиквания за рамката на потребителския интерфейс ще следват един път, а не два.

Някои от вас може би си спомнят опция за разработчици, наречена „Задаване на GPU рендерер“ в ранните визуализации за разработчици на Android 8.0 Oreo. Тази опция за разработчици ви позволи да принудите HWUI да използва Skia и неговия хардуерно ускорен OpenGL бекенд като GPU рендър за UI рамката. Опцията за разработчици беше премахната, тъй като това поведение вече е по подразбиране.

Опция за разработчици „Задаване на GPU Renderer“ в Android O Developer Previews

Следващият ход на 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 Recognized Developer luca020400 за помощта им при написването на тази статия, за предоставянето на екранни снимки, показващи разглобения код на libhwui.so, и за предоставяне на флага за отстраняване на грешки за тестване на бекенда на Vulkan.


Източник 1: Talkin’ Treble: Как инженерите на Android печелят войната срещу фрагментацията [ArsTechnica]

Източник 2: Android Graphics Pipeline: От бутон до Framebuffer [inovex блог]

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

Източник 4: Коментари от Romain Guy, Android Graphics & Kotlin @ Google [Reddit]