Android Q+ može koristiti Vulkan Graphics API za renderiranje korisničkog sučelja

Skia, Googleov grafički mehanizam otvorenog koda, ima Vulkan Graphics API backend. Ovaj backend može se koristiti za renderiranje korisničkog sučelja u Androidu Q ili novijem.

Sljedeća velika verzija Androida, Android 9, trebala bi biti objavljena sljedeći mjesec za više uređaja. Za razliku od Androida Oreo gdje su glavna poboljšanja bila uglavnom skrivena, Android P nudi više značajki okrenutih korisniku kao što su obnovljeno korisničko sučelje, navigacijske geste i digitalno blagostanje dok se također nastavlja rad na projektu Soprano. Ali iza kulisa, Google je preinačio način na koji renderiranje grafike funkcionira na Androidu. U Androidu Oreo, Google je počeo testirati OpenGL hardverski ubrzanu pozadinu za Skia grafički mehanizam koji je dovršen u Androidu P. Međutim, Google tu ne staje jer tvrtka planira implementirati Vulkan backend grafičkog pogona Skia koji će se pojaviti u Androidu Q ili kasnijem izdanju.

Dokaz za to dolazi od a komentar poslao Googleov inženjer na otvorenom kodu Chromium Gerrit. Komentar se odnosi na izvješće o pogrešci o nadolazećoj implementaciji Vulkan Graphics API-ja za preglednik Google Chrome na Androidu. U komentaru se navodi da će nekada u budućnosti "postati zahtjev" da se ima Vulkan API podršku za Android WebView kada "[Android] okvir počne koristiti Vulkan za HWUI."


Prikaz grafike u Androidu

Za osnovno znanje, Skia je open source, 2D grafički mehanizam koji se koristi u Google Chromeu, Chrome OS-u, Androidu, Flutteru i drugim velikim projektima. Skia je mehanizam za renderiranje grafike koji se koristio u ranim verzijama Androida za renderiranje Pogled i Platno (klase koje se koriste za izradu i crtanje korisničkog sučelja u većini aplikacija.) Android 3.0 Honeycomb djelomično je zamijenio Skia s HWUI, bibliotekom koja pretvara Canvas naredbe u hardverski ubrzane OpenGL naredbe, iako se 2D Skia grafička biblioteka i dalje koristila u nekim područjima kao što je put rasterizacija. Paralelno, Google je stvorio i OpenGL backend za Skia. Rezultat je da bi neki grafički pozivi bili upućeni u Skia biblioteku, dok bi drugi išli u OpenGL backend. Kako bi očistio grafičku arhitekturu, Google je odlučio da će HWUI sada razgovarati sa Skia-om, koja sama razgovara sa svojim hardverski ubrzanim OpenGL backendom, kako bi izvršila renderiranje korisničkog sučelja. Rezultat je da će grafički pozivi za okvir korisničkog sučelja slijediti jedan put, a ne dva.

Neki od vas se možda sjećaju razvojne opcije pod nazivom "Postavi GPU renderer" u ranim razvojnim pregledima za Android 8.0 Oreo. Ova opcija za razvojne programere omogućila vam je da prisilite HWUI da koristi Skia i njegovu hardverski ubrzanu OpenGL pozadinu kao GPU renderer za okvir korisničkog sučelja. Opcija razvojnog programera uklonjena je jer je ovo ponašanje sada zadano.

Opcija razvojnog programera "Postavi GPU renderer" u Android O Developer Previews

Sljedeći potez Googlea za poboljšanje grafičkog prikaza je prebacivanje s OpenGL hardverski ubrzane pozadine na Vulkan hardverski ubrzanu pozadinu. To uopće nije neočekivani potez i logičan je napredak, ali lijepo je vidjeti da se radi na poboljšanju grafičkog prikaza na Androidu. Iako ovaj potez neće popraviti svaki izvor kašnjenja na Androidu, trebao bi smanjiti vrijeme renderiranja okvira smanjenjem obrade koju vrši CPU. S obzirom na to da je ovo još uvijek u tijeku (nedovršeno je u Androidu P), očekujemo da će se pokrenuti s Androidom Q ili drugim budućim izdanjem Androida.


Pregled korištenja Vulkan Graphics API-ja za renderiranje korisničkog sučelja

Zapravo je sada moguće testirati pozadinu Vulkan za Skia na Androidu P. Postoji parametar za otklanjanje pogrešaka koji možete postaviti kako biste natjerali Android da koristi cjevovod Skia Vulkan. Jednostavno ponovno pokrenite sustav nakon dodavanja sljedećeg retka u /system/build.prop:

debug.hwui.renderer=skiavk

Dodavanje ove linije na uređaj sa sustavom Android Oreo rezultirat će rušenjem, stoga to ne preporučujemo. Iako će se vaš uređaj pokrenuti s ovom zastavicom na Androidu P, trenutno ima dosta grešaka. Google Pixel Launcher uglavnom ne uspijeva prikazati pozadinu, animirani videozapisi u Postavkama se ne učitavaju, a postoji nekoliko grafičkih problema sa statusnom trakom i obavijestima. Osim toga, čini se da se većina aplikacija, čak i YouTube videozapisi i igre kao što je Doodle Jump, dobro učitavaju.

Veliko hvala XDA Recognized Developer luca020400 za njihovu pomoć u pisanju ovog članka, za pružanje snimaka zaslona koji prikazuju rastavljeni kod libhwui.so i za pružanje oznake za otklanjanje pogrešaka za testiranje Vulkanove pozadine.


Izvor 1: Talkin’ Treble: Kako inženjeri Androida pobjeđuju u ratu protiv fragmentacije [ArsTechnica]

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

Izvor 3: Skia web stranica [Google]

Izvor 4: Komentari Romaina Guya, Android Graphics & Kotlin @ Google [Reddit]