Android Q+ poate folosi API-ul Vulkan Graphics pentru a reda interfața de utilizare

Skia, motorul de grafică open source al Google, are un backend Vulkan Graphics API. Acest backend poate fi utilizat pentru a reda interfața de utilizare în Android Q sau o versiune ulterioară.

Următoarea versiune majoră de Android, Android 9, urmează să fie lansată luna viitoare pentru mai multe dispozitive. Spre deosebire de Android Oreo, unde principalele îmbunătățiri au fost în mare parte sub capotă, Android P oferă mai multe funcții pentru utilizator. precum interfața de utilizator modernizată, gesturile de navigare și bunăstarea digitală, continuând, de asemenea, munca la Project Tripla. Dar în culise, Google a reînnoit modul în care redarea grafică funcționează pe Android. În Android Oreo, Google a început să testeze un backend accelerat de hardware OpenGL pentru motorul grafic Skia, care a fost finalizat în Android P. Cu toate acestea, Google nu se oprește aici, deoarece compania intenționează să implementeze Backend Vulkan a motorului grafic Skia care va ateriza pe Android Q sau o versiune ulterioară.

Dovezile pentru aceasta provin de la a cometariu trimis de un inginer Google pe programul open source Chromium Gerrit. Comentariul se referă la un raport de eroare privind viitoarea implementare a API-ului Vulkan Graphics pentru browserul Google Chrome pe Android. Comentariul afirmă că, cândva în viitor, „va exista o cerință” de a avea Vulkan API suport pentru Android WebView atunci când cadrul „[Android] va începe să folosească Vulkan pentru HWUI."


Redare grafică în Android

Pentru cunoștințe de bază, Skia este un motor grafic 2D, open source, care este utilizat în Google Chrome, Chrome OS, Android, Flutter și alte proiecte majore. Skia este un motor de randare grafică folosit în versiunile timpurii de Android pentru a randa Vedere și Pânză (clasele folosite pentru a construi și a desena interfața de utilizare în majoritatea aplicațiilor.) Android 3.0 Honeycomb a înlocuit parțial Skia cu HWUI, o bibliotecă care convertește Comenzi Canvas în comenzi OpenGL accelerate de hardware, deși biblioteca grafică 2D Skia a fost încă folosită în unele zone, cum ar fi calea rasterizare. În paralel, Google a creat și un backend OpenGL pentru Skia. Rezultatul este că unele apeluri grafice vor fi efectuate către biblioteca Skia, în timp ce altele vor merge la backend-ul OpenGL. Pentru a curăța arhitectura grafică, Google a decis că HWUI va vorbi acum cu Skia, care ea însăși vorbește cu backend-ul său OpenGL accelerat de hardware, pentru a face randarea UI. Rezultatul este că apelurile grafice pentru cadrul UI vor urma o cale și nu două.

Unii dintre voi s-ar putea să-și amintească o opțiune de dezvoltator numită „Set GPU Renderer” în previzualizările timpurii pentru dezvoltatori ale Android 8.0 Oreo. Această opțiune de dezvoltator v-a permis să forțați HWUI să folosească Skia și backend-ul său OpenGL accelerat de hardware ca redare GPU pentru cadrul UI. Opțiunea de dezvoltator a fost eliminată deoarece acest comportament este acum implicit.

Opțiunea de dezvoltator „Set GPU Renderer” în Android O Developer Previews

Următoarea mișcare a Google pentru a îmbunătăți redarea grafică este trecerea de la un backend accelerat de hardware OpenGL la un backend accelerat de hardware Vulkan. Nu este deloc o mișcare neașteptată și este o progresie logică, dar este plăcut să vedem că se lucrează la îmbunătățirea redării grafice pe Android. Deși mișcarea nu va rezolva orice sursă de decalaj pe Android, ar trebui să reducă timpul de randare a cadrelor prin reducerea procesării efectuate de procesor. Având în vedere că aceasta este o lucrare în curs de desfășurare (este neterminată în Android P), ne așteptăm să se lanseze cu Android Q sau cu o altă versiune Android viitoare.


O previzualizare a utilizării API-ului Vulkan Graphics pentru a reda interfața de utilizare

De fapt, este posibil să testați backend-ul Vulkan pentru Skia pe Android P acum. Există un parametru de depanare pe care îl puteți seta pentru a forța Android să folosească conducta Skia Vulkan. Pur și simplu reporniți după ce adăugați următoarea linie la /system/build.prop:

debug.hwui.renderer=skiavk

Adăugarea acestei linii pe un dispozitiv care rulează Android Oreo va duce la o blocare, așa că nu o recomandăm. În timp ce dispozitivul tău va porni cu acest steag pe Android P, este destul de defectuos în acest moment. Google Pixel Launcher nu reușește în mare parte să redea niciun fundal, videoclipurile animate din Setări nu se încarcă și există mai multe erori grafice cu bara de stare și notificări. În afară de asta, majoritatea aplicațiilor, chiar și videoclipurile și jocurile YouTube precum Doodle Jump, par să se încarce bine.

Multe mulțumiri pentru XDA Recognized Developer luca020400 pentru ajutorul lor în scrierea acestui articol, pentru furnizarea de capturi de ecran care arată codul libhwui.so dezasamblat și pentru furnizarea de semnalizare de depanare pentru a testa backend-ul Vulkan.


Sursa 1: Talkin’ Treble: Cum inginerii Android câștigă războiul împotriva fragmentării [ArsTechnica]

Sursa 2: Android Graphics Pipeline: De la buton la Framebuffer [blogul inovex]

Sursa 3: Pagina web Skia [Google]

Sursa 4: Comentarii de Romain Guy, Android Graphics & Kotlin @ Google [Reddit]