Skia, le moteur graphique open source de Google, dispose d'un backend API Vulkan Graphics. Ce backend peut être utilisé pour afficher l'interface utilisateur dans Android Q ou version ultérieure.
La prochaine version majeure d'Android, Android 9, devrait sortir le mois prochain pour plusieurs appareils. Contrairement à Android Oreo, où les principales améliorations étaient principalement sous le capot, Android P offre davantage de fonctionnalités destinées aux utilisateurs. tels que l'interface utilisateur repensée, les gestes de navigation et le bien-être numérique, tout en poursuivant le travail sur le projet Tripler. Mais en coulisses, Google a réorganisé le fonctionnement du rendu graphique sur Android. Dans Android Oreo, Google a commencé à tester un backend à accélération matérielle OpenGL pour le moteur graphique Skia, qui a été complété dans Android P. Google ne s'arrête cependant pas là puisque l'entreprise envisage de mettre en œuvre le Back-end Vulkan du moteur graphique Skia qui débarquera dans Android Q ou une version ultérieure.
La preuve en vient d'un commentaire soumis par un ingénieur de Google sur l'open source Chromium Gerrit. Le commentaire fait référence à un rapport de bug sur la mise en œuvre prochaine de l'API Vulkan Graphics pour le navigateur Google Chrome sur Android. Le commentaire indique que, dans le futur, "il sera nécessaire" d'avoir l'API Vulkan. prise en charge d'Android WebView lorsque le framework "[Android] va commencer à utiliser Vulkan pour HWUI."
Rendu graphique sous Android
Pour des connaissances de base, Skia est un moteur graphique 2D open source utilisé dans 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 restituer Voir et Toile (les classes utilisées pour créer 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 Commandes Canvas en commandes OpenGL accélérées par le matériel, bien que la bibliothèque graphique 2D Skia soit encore utilisée dans certains domaines comme le chemin rastérisation. En parallèle, Google a également créé un backend OpenGL pour Skia. Le résultat est que certains appels graphiques seraient effectués vers la bibliothèque Skia tandis que d'autres seraient dirigés vers le backend OpenGL. Pour nettoyer l'architecture graphique, Google a décidé que HWUI communiquerait désormais avec Skia, qui lui-même communique avec son backend OpenGL accéléré matériellement, pour effectuer le rendu de l'interface utilisateur. Le résultat est que les appels graphiques pour le framework UI suivront un chemin et non deux.
Certains d'entre vous se souviennent peut-être d'une option de développement appelée « Définir le moteur de rendu GPU » dans les premières versions pour développeurs d'Android 8.0 Oreo. Cette option de développeur vous a permis de forcer HWUI à utiliser Skia et son backend OpenGL à accélération matérielle comme moteur de rendu GPU pour le framework d'interface utilisateur. L'option développeur a été supprimée car ce comportement est désormais le comportement par défaut.
La prochaine étape de 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 une décision inattendue et c’est une progression logique, mais il est agréable de voir que des travaux sont en cours pour améliorer le rendu graphique sur Android. Bien que cette décision ne corrige pas toutes les sources de décalage sur Android, elle devrait réduire les temps de rendu des images en réduisant le traitement effectué par le processeur. Étant donné qu'il s'agit en grande partie d'un travail en cours (il n'est pas terminé dans Android P), nous nous attendons à ce qu'il soit lancé avec Android Q ou une autre version future d'Android.
Un aperçu de l'utilisation de l'API Vulkan Graphics pour restituer l'interface utilisateur
Il est désormais possible de tester le backend Vulkan pour Skia sur Android P. Il existe un paramètre de débogage que vous pouvez définir 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
L'ajout de cette ligne sur un appareil exécutant Android Oreo entraînera un crash, 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. Le 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 au développeur reconnu par XDA luca020400 pour leur aide dans la rédaction de cet article, pour avoir fourni les captures d'écran montrant le code libhwui.so démonté et pour avoir fourni l'indicateur de débogage pour tester le backend Vulkan.
Source 1: Talkin' Treble: Comment les ingénieurs Android gagnent la guerre contre la fragmentation [ArsTechnica]
Source 2: Pipeline graphique Android: du bouton au framebuffer [blog inovex]
Source 3: page Web de Skia [Google]
Source 4: Commentaires de Romain Guy, Android Graphics & Kotlin @ Google [Reddit]