Skia, de open source grafische engine van Google, heeft een Vulkan Graphics API-backend. Deze backend kan worden gebruikt om de gebruikersinterface in Android Q of hoger weer te geven.
De volgende grote versie van Android, Android 9, wordt volgende maand uitgebracht voor meerdere apparaten. In tegenstelling tot Android Oreo, waar de belangrijkste verbeteringen grotendeels onder de motorkap lagen, biedt Android P meer gebruikersgerichte functies zoals de vernieuwde gebruikersinterface, navigatiegebaren en digitaal welzijn, terwijl ook aan Project wordt gewerkt Drievoudig. Maar achter de schermen heeft Google de manier waarop grafische weergave op Android werkt vernieuwd. In Android Oreo begon Google met het testen van een OpenGL hardwareversnelde backend voor de Skia grafische engine, die werd voltooid in Android P. Google stopt daar echter niet, aangezien het bedrijf van plan is de Vulkan-backend van de Skia grafische engine die zal landen in Android Q of een latere release.
Het bewijs hiervoor komt uit a
opmerking ingediend door een Google-ingenieur op de open source Chromium Gerrit. De opmerking verwijst naar een bugrapport over de aanstaande implementatie van de Vulkan Graphics API voor de Google Chrome-browser op Android. In de opmerking staat dat er ergens in de toekomst "een vereiste zal zijn" om de Vulkan API te hebben ondersteuning voor de Android WebView wanneer het "[Android]-framework Vulkan gaat gebruiken voor HWUI."Grafische weergave in Android
Voor achtergrondkennis: Skia is een open source, 2D grafische engine die wordt gebruikt in Google Chrome, Chrome OS, Android, Flutter en andere grote projecten. Skia is een grafische rendering-engine die in vroege versies van Android werd gebruikt om te renderen Weergave En Canvas (de klassen die in de meeste apps worden gebruikt om de gebruikersinterface te bouwen en te tekenen.) Android 3.0 Honeycomb heeft Skia gedeeltelijk vervangen door HWUI, een bibliotheek die Canvas-opdrachten omgezet in hardwareversnelde OpenGL-opdrachten, hoewel de 2D Skia grafische bibliotheek op sommige gebieden nog steeds werd gebruikt, zoals pad rasterisatie. Tegelijkertijd creëerde Google ook een OpenGL-backend voor Skia. Het resultaat is dat sommige grafische oproepen naar de Skia-bibliotheek worden gedaan, terwijl andere naar de OpenGL-backend gaan. Om de grafische architectuur op te schonen, heeft Google besloten dat HWUI nu met Skia zal praten, die zelf met zijn hardwareversnelde OpenGL-backend praat, om UI-rendering uit te voeren. Het resultaat is dat grafische oproepen voor het UI-framework één pad zullen volgen en niet twee.
Sommigen van jullie herinneren zich misschien een ontwikkelaarsoptie genaamd "Set GPU Renderer" in vroege ontwikkelaarsvoorbeelden van Android 8.0 Oreo. Met deze ontwikkelaarsoptie kon je HWUI dwingen om Skia en de hardwareversnelde OpenGL-backend te gebruiken als de GPU-renderer voor het UI-framework. De ontwikkelaarsoptie is verwijderd omdat dit gedrag nu de standaard is.
De volgende stap van Google om de grafische weergave te verbeteren is het overschakelen van een OpenGL hardwareversnelde backend naar een Vulkan hardwareversnelde backend. Het is helemaal geen onverwachte zet en een logische progressie, maar het is leuk om te zien dat er gewerkt wordt aan het verbeteren van de grafische weergave op Android. Hoewel deze stap niet elke bron van vertraging op Android zal oplossen, zou het de frame-rendertijden moeten verkorten door de verwerking door de CPU te verminderen. Aangezien dit een work-in-progress is (het is nog niet af in Android P), verwachten we dat het wordt gelanceerd met Android Q of een andere toekomstige Android-release.
Een voorbeeld van het gebruik van de Vulkan Graphics API om de gebruikersinterface te renderen
Het is nu mogelijk om de Vulkan-backend voor Skia op Android P te testen. Er is een debug-parameter die u kunt instellen om Android te dwingen de Skia Vulkan-pijplijn te gebruiken. Start eenvoudigweg opnieuw op nadat u de volgende regel hebt toegevoegd aan /system/build.prop:
debug.hwui.renderer=skiavk
Het toevoegen van deze regel op een apparaat met Android Oreo zal resulteren in een crash, dus we raden dit niet aan. Hoewel uw apparaat met deze vlag op Android P opstart, is het momenteel behoorlijk buggy. De Google Pixel Launcher geeft meestal geen achtergronden weer, geanimeerde video's in Instellingen kunnen niet worden geladen en er zijn verschillende grafische problemen met de statusbalk en meldingen. Afgezien daarvan lijken de meeste apps, zelfs YouTube-video's en games zoals Doodle Jump, prima te laden.
Veel dank aan XDA erkende ontwikkelaar luca020400 voor hun hulp bij het schrijven van dit artikel, voor het verstrekken van de schermafbeeldingen die de gedemonteerde libhwui.so-code tonen, en voor het verstrekken van de debug-vlag om de Vulkan-backend te testen.
Bron 1: Talkin’ Treble: hoe Android-ingenieurs de oorlog tegen fragmentatie winnen [ArsTechnica]
Bron 2: Android Graphics Pipeline: van knop naar framebuffer [inovex-blog]
Bron 3: Skia-webpagina [Googlen]
Bron 4: Opmerkingen door Romain Guy, Android Graphics & Kotlin @ Google [Reddit]