Android Q+ môže na vykreslenie používateľského rozhrania používať rozhranie Vulkan Graphics API

Skia, open source grafický engine Google, má backend Vulkan Graphics API. Tento backend možno použiť na vykreslenie používateľského rozhrania v systéme Android Q alebo novšom.

Ďalšia hlavná verzia Androidu, Android 9, má byť vydaná budúci mesiac pre viaceré zariadenia. Na rozdiel od Androidu Oreo, kde boli hlavné vylepšenia väčšinou pod kapotou, Android P ponúka viac funkcií pre používateľov. ako je prepracované používateľské rozhranie, navigačné gestá a digitálna pohoda a zároveň pokračovať v práci na projekte Výšky. V zákulisí však spoločnosť Google prepracovala spôsob, akým funguje vykresľovanie grafiky v systéme Android. V systéme Android Oreo začal Google testovať hardvérovo akcelerovaný backend OpenGL pre grafický engine Skia, ktorý bol dokončený v systéme Android P. Google tým však nekončí, pretože spoločnosť plánuje implementáciu Vulkan backend grafického enginu Skia, ktorý sa dostane do systému Android Q alebo novšieho vydania.

Dôkazy o tom pochádzajú z a komentovať odoslaný inžinierom Google na open source Chromium Gerrit. Komentár sa týka správy o chybe o pripravovanej implementácii rozhrania Vulkan Graphics API pre prehliadač Google Chrome v systéme Android. V komentári sa uvádza, že niekedy v budúcnosti „bude požiadavka“ mať Vulkan API podpora pre Android WebView, keď „rámec [Android] začne používať Vulkan pre HWUI."


Vykresľovanie grafiky v systéme Android

Pre základné znalosti je Skia open source 2D grafický engine, ktorý sa používa v prehliadači Google Chrome, Chrome OS, Android, Flutter a ďalších veľkých projektoch. Skia je grafický vykresľovací engine používaný v skorších verziách Androidu na vykresľovanie vyhliadka a Plátno (triedy používané na vytváranie a kreslenie používateľského rozhrania vo väčšine aplikácií.) Android 3.0 Honeycomb čiastočne nahradil Skia knižnicou HWUI, ktorá konvertuje Príkazy Canvas do hardvérovo akcelerovaných príkazov OpenGL, hoci grafická knižnica 2D Skia sa stále používala v niektorých oblastiach, ako je napríklad cesta rastrovanie. Súbežne s tým Google vytvoril aj OpenGL backend pre Skia. Výsledkom je, že niektoré grafické volania by sa uskutočnili do knižnice Skia, zatiaľ čo iné by smerovali do backendu OpenGL. Na vyčistenie grafickej architektúry sa Google rozhodol, že HWUI bude teraz hovoriť so spoločnosťou Skia, ktorá sama hovorí so svojim hardvérovo akcelerovaným backendom OpenGL, aby vykonala vykresľovanie používateľského rozhrania. Výsledkom je, že grafické výzvy pre rámec používateľského rozhrania budú sledovať jednu cestu a nie dve.

Niektorí z vás si možno pamätajú možnosť pre vývojárov s názvom „Set GPU Renderer“ v prvých ukážkach vývojárov systému Android 8.0 Oreo. Táto možnosť vývojára vám umožnila prinútiť HWUI používať Skia a jeho hardvérovo akcelerovaný backend OpenGL ako vykresľovací modul GPU pre rámec používateľského rozhrania. Možnosť vývojára bola odstránená, pretože toto správanie je teraz predvolené.

Možnosť pre vývojárov „Nastaviť GPU Renderer“ v ukážkach vývojára systému Android O

Ďalším krokom spoločnosti Google na zlepšenie vykresľovania grafiky je prechod z hardvérovo akcelerovaného backendu OpenGL na hardvérovo akcelerovaný backend Vulkan. Nie je to vôbec neočakávaný krok a je to logický postup, ale je pekné vidieť, že sa pracuje na zlepšení vykresľovania grafiky v systéme Android. Aj keď tento krok neopraví každý zdroj oneskorenia v systéme Android, mal by skrátiť časy vykresľovania snímok znížením spracovania vykonávaného procesorom. Vzhľadom na to, že toto je do značnej miery nedokončená práca (v systéme Android P je nedokončená), očakávame, že bude spustená so systémom Android Q alebo iným budúcim vydaním systému Android.


Ukážka použitia rozhrania Vulkan Graphics API na vykreslenie používateľského rozhrania

V skutočnosti je teraz možné otestovať backend Vulkan pre Skia na Android P. Existuje parameter ladenia, ktorý môžete nastaviť tak, aby prinútil Android používať kanál Skia Vulkan. Po pridaní nasledujúceho riadku do /system/build.prop jednoducho reštartujte:

debug.hwui.renderer=skiavk

Pridanie tohto riadku do zariadenia so systémom Android Oreo bude mať za následok zlyhanie, takže to neodporúčame. Aj keď sa vaše zariadenie spustí s týmto príznakom v systéme Android P, v súčasnosti je to dosť chybné. Google Pixel Launcher väčšinou nedokáže vykresliť žiadne pozadie, animované videá v nastaveniach sa nenačítajú a v stavovom riadku a upozorneniach je niekoľko grafických chýb. Okrem toho sa zdá, že väčšina aplikácií, dokonca aj videá a hry YouTube, ako je Doodle Jump, sa načítavajú dobre.

Veľká vďaka patrí XDA Recognized Developer luca020400 za pomoc pri písaní tohto článku, za poskytnutie snímok obrazovky zobrazujúcich rozložený kód libhwui.so a za poskytnutie príznaku ladenia na testovanie backendu Vulkan.


Zdroj 1: Talkin’ Treble: Ako inžinieri Androidu vyhrávajú vojnu proti fragmentácii [ArsTechnica]

Zdroj 2: Android Graphics Pipeline: From Button to Framebuffer [blog inovex]

Zdroj 3: Web stránka Skia [Google]

Zdroj 4: Komentáre Romaina Guya, Android Graphics & Kotlin @ Google [Reddit]