Android Q + peut utiliser l'API graphique Vulkan pour restituer l'interface utilisateur.

La prochaine version majeure d'Android, Android 9, devrait sortir le mois prochain pour plusieurs appareils. Contrairement à Android Oreo, où les principales améliorations ont été sous-jacentes, Android P offre davantage de fonctionnalités orientées utilisateur, telles que l'interface utilisateur remaniée, les gestes de navigation et Digital Wellbeing, tout en poursuivant les travaux sur Project Treble. Mais dans les coulisses, Google a revu le fonctionnement du rendu graphique sur Android. Dans Android Oreo, Google a commencé à tester un système d’accélération OpenGL au moteur graphique Skia, achevé sous Android P. Google ne s’arrête toutefois pas là, car la société envisage de mettre en œuvre le moteur Vulkan du moteur graphique Skia qui atterrir dans Android Q ou une version ultérieure.

La preuve en est donnée par un commentaire soumis par un ingénieur de Google sur l'open source Chromium Gerrit. Le commentaire fait référence à un rapport de bogue sur la prochaine mise en œuvre de l'API graphique Vulkan pour le navigateur Google Chrome sur Android. Le commentaire indique que, dans le futur, "il sera nécessaire" de prendre en charge l'API Vulkan pour Android WebView lorsque le cadre "[Android] commencera à utiliser Vulkan pour HWUI".


Rendu graphique sous Android

Skia est un moteur graphique 2D à code source ouvert utilisé par Google Chrome, Chrome OS, Android, Flutter et d’autres projets majeurs. Skia est un moteur de rendu graphique utilisé dans les premières versions d'Android pour rendre View and Canvas (les classes utilisées pour construire et dessiner l'interface utilisateur dans la plupart des applications.) Android 3.0 Honeycomb a partiellement remplacé Skia par HWUI, une bibliothèque qui convertit les commandes Canvas en matériel. accélération des commandes OpenGL, bien que la bibliothèque graphique 2D Skia soit encore utilisée dans certains domaines, tels que le rasterization de chemins. En parallèle, Google a également créé un backend OpenGL pour Skia. Le résultat est que certains appels graphiques seraient passés à la bibliothèque Skia alors que d'autres iraient au backend OpenGL. Pour nettoyer l’architecture graphique, Google a décidé que HWUI s’adresserait désormais à Skia, qui s’adressait elle-même à son backend OpenGL à accélération matérielle, pour effectuer le rendu de l’interface utilisateur. Le résultat est que les appels graphiques pour la structure d'interface utilisateur suivront un chemin et non deux.

Certains d'entre vous se souviendront peut-être d'une option de développeur appelée «Définir le rendu du processeur graphique» dans les aperçus antérieurs pour développeurs d'Android 8.0 Oreo. Cette option de développeur vous permettait de forcer HWUI à utiliser Skia et son backend OpenGL à accélération matérielle en tant que moteur de rendu GPU pour la structure d'interface utilisateur. L'option de développeur a été supprimée car ce comportement est désormais le comportement par défaut.

Option de développeur «Définir le calculateur de rendu graphique» dans les aperçus des développeurs Android O

Code désassemblé de libhwui.so dans / system / lib affichant les valeurs de debug.hwui.renderer et sa valeur par défaut

Correspondance du code C ++ dans Android Oreo affichant la valeur par défaut comme «skiagl»

property_get logic

La prochaine étape entreprise par Google pour améliorer le rendu graphique consiste à passer d'un backend à accélération matérielle OpenGL à un backend à accélération matérielle Vulkan. Ce n'est pas du tout un mouvement inattendu et une progression logique, mais il est agréable de voir que du travail est fait pour améliorer le rendu graphique sur Android. Bien que le déménagement ne corrige pas toutes les sources de décalage sur Android, il devrait réduire les temps de rendu des images en réduisant le traitement effectué par le processeur. Etant donné qu’il s’agit d’un travail en cours (inachevé dans Android P), nous nous attendons à ce qu’il soit lancé avec Android Q ou une autre version future d’Android.


Aperçu de l'utilisation de l'API graphique Vulkan pour le rendu de l'interface utilisateur

Il est en fait possible de tester le back-office Vulkan pour Skia sur Android P maintenant. Vous pouvez définir un paramètre de débogage pour forcer Android à utiliser le pipeline Skia Vulkan. Redémarrez simplement après avoir ajouté la ligne suivante à /system/build.prop:

 debug.hwui.renderer=skiavk 

Android P utilisant le pipeline Skia OpenGL

Android P utilisant le pipeline Skia Vulkan

L'ajout de cette ligne sur un appareil fonctionnant sous Android Oreo entraînera un blocage, nous ne le recommandons donc pas. Bien que votre appareil démarre avec ce drapeau sur Android P, il est assez bogué pour le moment. Google Pixel Launcher ne parvient généralement pas à restituer les arrière-plans, les vidéos animées dans les paramètres ne se chargent pas et il existe plusieurs problèmes graphiques avec la barre d'état et les notifications. En dehors de cela, la plupart des applications, même les vidéos YouTube et les jeux comme Doodle Jump, semblent se charger correctement.

Un grand merci à luca020400, développeur reconnu, pour son aide dans la rédaction de cet article, pour les captures d’écran montrant le code libhwui.so désassemblé et pour l’indicateur de débogage permettant de tester le backend de Vulkan.


Source 1: Talkin 'Treble: Comment les ingénieurs Android gagnent la guerre à la fragmentation [ArsTechnica]

Source 2: Pipeline graphique Android: du bouton au framebuffer [blog inovex]

Source 3: page Web Skia [Google]

Source 4: commentaires de Romain Guy, Android Graphics et Kotlin @ Google [Reddit]