Android Q+ kan bruke Vulkan Graphics API for å gjengi brukergrensesnittet

Skia, Googles åpen kildekode-grafikkmotor, har en Vulkan Graphics API-backend. Denne backend kan brukes til å gjengi brukergrensesnittet i Android Q eller nyere.

Den neste store versjonen av Android, Android 9, er satt til å bli utgitt neste måned for flere enheter. I motsetning til Android Oreo hvor hovedforbedringene stort sett var under panseret, tilbyr Android P flere brukervennlige funksjoner slik som det fornyede brukergrensesnittet, navigasjonsbevegelser og digital velvære mens du også fortsetter arbeidet med Project Diskant. Men bak kulissene har Google fornyet hvordan grafikkgjengivelse fungerer på Android. I Android Oreo begynte Google å teste en OpenGL-maskinvareakselerert backend til Skia-grafikkmotoren som ble fullført i Android P. Google stopper imidlertid ikke der, siden selskapet planlegger å implementere Vulkan backend av Skia-grafikkmotoren som vil lande i Android Q eller en senere utgivelse.

Bevisene for dette kommer fra en kommentar sendt inn av en Google-ingeniør på åpen kildekode Chromium Gerrit. Kommentaren refererer til en feilrapport om den kommende implementeringen av Vulkan Graphics API for Google Chrome-nettleseren på Android. Kommentaren sier at det en gang i fremtiden "vil være et krav" om å ha Vulkan API støtte for Android WebView når «[Android]-rammeverket skal begynne å bruke Vulkan for HWUI."


Grafikkgjengivelse i Android

For bakgrunnskunnskap er Skia en åpen kildekode, 2D-grafikkmotor som brukes i Google Chrome, Chrome OS, Android, Flutter og andre store prosjekter. Skia er en grafikkgjengivelsesmotor som brukes i tidlige versjoner av Android for å gjengi Utsikt og Lerret (klassene som brukes til å bygge og tegne brukergrensesnittet i de fleste apper.) Android 3.0 Honeycomb erstattet delvis Skia med HWUI, et bibliotek som konverterer Lerretskommandoer til maskinvareakselererte OpenGL-kommandoer, selv om 2D Skia-grafikkbiblioteket fortsatt ble brukt i noen områder som sti rasterisering. Parallelt laget Google også en OpenGL-backend for Skia. Resultatet er at noen grafikkanrop vil bli gjort til Skia bibliotek mens andre går til OpenGL-backend. For å rydde opp i grafikkarkitekturen bestemte Google at HWUI nå skal snakke med Skia, som selv snakker med sin maskinvareakselererte OpenGL-backend, for å gjøre UI-gjengivelse. Resultatet er at grafikkoppfordringer for UI-rammeverket vil følge én vei og ikke to.

Noen av dere husker kanskje et utvikleralternativ kalt "Set GPU Renderer" i tidlige utviklerforhåndsvisninger av Android 8.0 Oreo. Dette utvikleralternativet tillot deg å tvinge HWUI til å bruke Skia og dens maskinvareakselererte OpenGL-backend som GPU-gjengiver for UI-rammeverket. Utvikleralternativet ble fjernet siden denne virkemåten nå er standard.

«Set GPU Renderer»-utvikleralternativet i Android O Developer Previews

Neste grep fra Google for å forbedre grafikkgjengivelsen er å bytte fra en OpenGL maskinvareakselerert backend til en Vulkan maskinvareakselerert backend. Det er slett ikke et uventet trekk og er en logisk progresjon, men det er hyggelig å se at det jobbes med å forbedre grafikkgjengivelsen på Android. Selv om flyttingen ikke vil fikse alle kilder til etterslep på Android, bør den redusere gjengivelsestiden for bilder ved å kutte ned på prosessering utført av CPU. Gitt at dette i stor grad er under arbeid (det er uferdig i Android P), forventer vi at det lanseres med Android Q eller en annen fremtidig Android-utgivelse.


En forhåndsvisning av bruk av Vulkan Graphics API for å gjengi brukergrensesnittet

Det er faktisk mulig å teste Vulkan-backend for Skia på Android P nå. Det er en feilsøkingsparameter som du kan stille inn for å tvinge Android til å bruke Skia Vulkan-rørledningen. Bare start på nytt etter å ha lagt til følgende linje i /system/build.prop:

debug.hwui.renderer=skiavk

Å legge til denne linjen på en enhet som kjører Android Oreo vil resultere i en krasj, så vi anbefaler det ikke. Selv om enheten din vil starte opp med dette flagget på Android P, er den ganske buggy for øyeblikket. Google Pixel Launcher klarer for det meste ikke å gjengi bakgrunner, animerte videoer i Innstillinger laster ikke, og det er flere grafiske feil med statuslinjen og varsler. Bortsett fra det, ser de fleste apper, til og med YouTube-videoer og spill som Doodle Jump, ut til å laste helt fint.

Tusen takk til XDA Recognized Developer luca020400 for deres hjelp med å skrive denne artikkelen, for å gi skjermbildene som viser den demonterte libhwui.so-koden, og for å gi feilsøkingsflagget for å teste Vulkan-backend.


Kilde 1: Talkin' Treble: Hvordan Android-ingeniører vinner krigen mot fragmentering [ArsTechnica]

Kilde 2: Android Graphics Pipeline: From Button to Framebuffer [inovex blogg]

Kilde 3: Skia nettside [Google]

Kilde 4: Kommentarer av Romain Guy, Android Graphics & Kotlin @ Google [Reddit]