Android Q+ kan bruge Vulkan Graphics API til at gengive brugergrænsefladen

click fraud protection

Skia, Googles open source-grafikmotor, har en Vulkan Graphics API-backend. Denne backend kan bruges til at gengive brugergrænsefladen i Android Q eller nyere.

Den næste store version af Android, Android 9, er indstillet til at blive frigivet næste måned til flere enheder. I modsætning til Android Oreo, hvor de vigtigste forbedringer for det meste var under hætten, tilbyder Android P flere brugervendte funktioner såsom den fornyede brugergrænseflade, navigationsbevægelser og Digital Wellbeing, mens du også fortsætter arbejdet med Project Diskant. Men bag kulisserne har Google fornyet, hvordan grafikgengivelse fungerer på Android. I Android Oreo begyndte Google at teste en OpenGL-hardwareaccelereret backend til Skia-grafikmotoren, som blev færdiggjort i Android P. Google stopper dog ikke der, da virksomheden planlægger at implementere Vulkan backend af Skia-grafikmotoren, som vil lande i Android Q eller en senere udgivelse.

Beviset for dette kommer fra en kommentar indsendt af en Google-ingeniør på open source Chromium Gerrit. Kommentaren henviser til en fejlrapport om den kommende implementering af Vulkan Graphics API til Google Chrome-browseren på Android. Kommentaren siger, at der engang i fremtiden "vil være et krav" om at have Vulkan API understøttelse af Android WebView, når "[Android] frameworket begynder at bruge Vulkan til HWUI."


Grafikgengivelse i Android

For baggrundsviden er Skia en open source, 2D-grafikmotor, der bruges i Google Chrome, Chrome OS, Android, Flutter og andre større projekter. Skia er en grafikgengivelsesmotor, der bruges i tidlige versioner af Android til at gengive Udsigt og Lærred (klasserne, der bruges til at bygge og tegne brugergrænsefladen i de fleste apps.) Android 3.0 Honeycomb erstattede delvist Skia med HWUI, et bibliotek, der konverterer Lærredskommandoer til hardwareaccelererede OpenGL-kommandoer, selvom 2D Skia-grafikbiblioteket stadig blev brugt i nogle områder som f.eks. rasterisering. Sideløbende lavede Google også en OpenGL-backend til Skia. Resultatet er, at nogle grafikopkald ville blive foretaget til Skia-biblioteket, mens andre ville gå til OpenGL-backend. For at rydde op i grafikarkitekturen besluttede Google, at HWUI nu vil tale med Skia, som selv taler med sin hardwareaccelererede OpenGL-backend, for at lave UI-gengivelse. Resultatet er, at grafikkald til UI-rammerne vil følge én vej og ikke to.

Nogle af jer husker måske en udviklerindstilling kaldet "Set GPU Renderer" i tidlige udviklerforhåndsvisninger af Android 8.0 Oreo. Denne udviklermulighed gav dig mulighed for at tvinge HWUI til at bruge Skia og dens hardwareaccelererede OpenGL-backend som GPU-renderer for UI-rammerne. Udviklerindstillingen blev fjernet, da denne adfærd nu er standard.

"Set GPU Renderer" udviklermulighed i Android O Developer Previews

Det næste skridt fra Google for at forbedre grafikgengivelsen er at skifte fra en OpenGL hardwareaccelereret backend til en Vulkan hardwareaccelereret backend. Det er slet ikke et uventet træk og er en logisk progression, men det er rart at se, at der arbejdes på at forbedre grafikgengivelsen på Android. Selvom flytningen ikke løser enhver kilde til forsinkelse på Android, bør den reducere frame-gengivelsestider ved at skære ned på behandlingen udført af CPU'en. Da dette i høj grad er et arbejde i gang (det er ufærdigt i Android P), forventer vi, at det lanceres med Android Q eller en anden fremtidig Android-udgivelse.


En forhåndsvisning af brug af Vulkan Graphics API til at gengive brugergrænsefladen

Det er faktisk muligt at teste Vulkan-backend til Skia på Android P nu. Der er en fejlretningsparameter, som du kan indstille for at tvinge Android til at bruge Skia Vulkan-pipelinen. Du skal blot genstarte efter at have tilføjet følgende linje til /system/build.prop:

debug.hwui.renderer=skiavk

Tilføjelse af denne linje på en enhed, der kører Android Oreo, vil resultere i et nedbrud, så vi anbefaler det ikke. Mens din enhed starter op med dette flag på Android P, er den ret buggy i øjeblikket. Google Pixel Launcher formår for det meste ikke at gengive nogen baggrunde, animerede videoer i Indstillinger kan ikke indlæses, og der er flere grafiske fejl med statuslinjen og meddelelser. Bortset fra det, synes de fleste apps, selv YouTube-videoer og spil som Doodle Jump, at indlæse fint.

Mange tak til XDA Recognized Developer luca020400 for deres hjælp til at skrive denne artikel, for at levere skærmbillederne, der viser den adskilte libhwui.so-kode, og for at levere fejlfindingsflaget for at teste Vulkan-backend.


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

Kilde 2: Android Graphics Pipeline: Fra knap til rammebuffer [inovex blog]

Kilde 3: Skia webside [Google]

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