Skia, die Open-Source-Grafik-Engine von Google, verfügt über ein Vulkan Graphics API-Backend. Dieses Backend kann zum Rendern der Benutzeroberfläche in Android Q oder höher verwendet werden.
Die nächste Hauptversion von Android, Android 9, soll nächsten Monat für mehrere Geräte erscheinen. Im Gegensatz zu Android Oreo, wo die wichtigsten Verbesserungen größtenteils unter der Haube lagen, bietet Android P mehr benutzerorientierte Funktionen wie die überarbeitete Benutzeroberfläche, Navigationsgesten und Digital Wellbeing, während gleichzeitig die Arbeit an Project fortgesetzt wird Verdreifachen. Aber hinter den Kulissen hat Google die Funktionsweise der Grafikwiedergabe auf Android überarbeitet. In Android Oreo begann Google mit dem Testen eines OpenGL-Hardware-beschleunigten Backends für die Skia-Grafik-Engine, das in Android P fertiggestellt wurde. Google hört hier jedoch nicht auf, da das Unternehmen die Implementierung plant Vulkan-Backend der Skia-Grafik-Engine, die in Android Q oder einer späteren Version landen wird.
Der Beweis dafür stammt von a Kommentar eingereicht von einem Google-Ingenieur zum Open-Source-Chromium Gerrit. Der Kommentar bezieht sich auf einen Fehlerbericht zur bevorstehenden Implementierung der Vulkan Graphics API für den Google Chrome-Browser auf Android. In dem Kommentar heißt es, dass es irgendwann in der Zukunft „eine Anforderung geben wird“, über eine Vulkan-API zu verfügen Unterstützung für Android WebView, wenn das „[Android]-Framework Vulkan für verwenden wird HWUI.“
Grafik-Rendering in Android
Als Hintergrundwissen: Skia ist eine Open-Source-2D-Grafik-Engine, die in Google Chrome, Chrome OS, Android, Flutter und anderen großen Projekten verwendet wird. Skia ist eine Grafik-Rendering-Engine, die in frühen Android-Versionen zum Rendern verwendet wurde Sicht Und Leinwand (Die Klassen, die in den meisten Apps zum Erstellen und Zeichnen der Benutzeroberfläche verwendet werden.) Android 3.0 Honeycomb ersetzte Skia teilweise durch HWUI, eine Bibliothek, die konvertiert Canvas-Befehle in hardwarebeschleunigte OpenGL-Befehle umgewandelt, obwohl die 2D-Skia-Grafikbibliothek in einigen Bereichen wie Pfad weiterhin verwendet wurde Rasterung. Parallel dazu hat Google auch ein OpenGL-Backend für Skia erstellt. Das Ergebnis ist, dass einige Grafikaufrufe an die Skia-Bibliothek erfolgen würden, während andere an das OpenGL-Backend gehen würden. Um die Grafikarchitektur zu bereinigen, hat Google beschlossen, dass HWUI nun mit Skia kommuniziert, das selbst mit seinem hardwarebeschleunigten OpenGL-Backend kommuniziert, um das UI-Rendering durchzuführen. Das Ergebnis ist, dass Grafikaufrufe für das UI-Framework einem Pfad folgen und nicht zwei.
Einige von Ihnen erinnern sich vielleicht an eine Entwickleroption namens „GPU-Renderer festlegen“ in frühen Entwicklervorschauen von Android 8.0 Oreo. Mit dieser Entwickleroption konnten Sie HWUI zwingen, Skia und sein hardwarebeschleunigtes OpenGL-Backend als GPU-Renderer für das UI-Framework zu verwenden. Die Entwickleroption wurde entfernt, da dieses Verhalten jetzt die Standardeinstellung ist.
Der nächste Schritt von Google zur Verbesserung der Grafikwiedergabe ist der Wechsel von einem OpenGL-Hardware-beschleunigten Backend zu einem Vulkan-Hardware-beschleunigten Backend. Es ist keineswegs ein unerwarteter Schritt und eine logische Weiterentwicklung, aber es ist schön zu sehen, dass an der Verbesserung der Grafikwiedergabe auf Android gearbeitet wird. Auch wenn dieser Schritt nicht alle Verzögerungsquellen unter Android behebt, sollte er die Renderzeiten für Frames verkürzen, indem er die Verarbeitung durch die CPU reduziert. Da dies noch in Arbeit ist (in Android P ist es noch nicht abgeschlossen), gehen wir davon aus, dass es mit Android Q oder einer anderen zukünftigen Android-Version veröffentlicht wird.
Eine Vorschau auf die Verwendung der Vulkan-Grafik-API zum Rendern der Benutzeroberfläche
Es ist jetzt tatsächlich möglich, das Vulkan-Backend für Skia auf Android P zu testen. Es gibt einen Debug-Parameter, den Sie festlegen können, um Android zu zwingen, die Skia Vulkan-Pipeline zu verwenden. Starten Sie einfach neu, nachdem Sie die folgende Zeile zu /system/build.prop hinzugefügt haben:
debug.hwui.renderer=skiavk
Das Hinzufügen dieser Zeile auf einem Gerät mit Android Oreo führt zu einem Absturz und wird daher nicht empfohlen. Während Ihr Gerät unter Android P mit dieser Flagge startet, ist es im Moment ziemlich fehlerhaft. Der Google Pixel Launcher rendert meist keine Hintergründe, animierte Videos in den Einstellungen werden nicht geladen und es gibt mehrere grafische Probleme mit der Statusleiste und den Benachrichtigungen. Ansonsten scheinen die meisten Apps, sogar YouTube-Videos und Spiele wie Doodle Jump, einwandfrei zu laden.
Vielen Dank an den anerkannten XDA-Entwickler luca020400 für ihre Hilfe beim Schreiben dieses Artikels, für die Bereitstellung der Screenshots, die den zerlegten libhwui.so-Code zeigen, und für die Bereitstellung des Debug-Flags zum Testen des Vulkan-Backends.
Quelle 1: Talkin’ Treble: Wie Android-Ingenieure den Krieg gegen die Fragmentierung gewinnen [ArsTechnica]
Quelle 2: Android Graphics Pipeline: Vom Button zum Framebuffer [inovex-Blog]
Quelle 3: Skia-Webseite [Google]
Quelle 4: Kommentare von Romain Guy, Android Graphics & Kotlin @ Google [Reddit]