L'un des problèmes les plus difficiles pour les développeurs d'applications est de créer des animations fluides et sans glitch. Cela peut être particulièrement difficile à déboguer lorsque le système effectue également des tâches en arrière-plan gourmandes en ressources. Il peut être difficile de déterminer si un problème est causé par votre application ou par le système. Toutefois, un outil de profilage peut vous aider à identifier la source possible du comportement incorrect.
Afficher sur ChromeOS
Une application affinée, comme un jeu, utilise généralement la double mise en mémoire tampon pour maintenir le temps de réponse de l'utilisateur aussi bas que possible. Toutefois, de nombreux facteurs peuvent dégrader les performances. Par exemple, si le rendu d'un frame prend trop de temps, le résultat rendu n'est pas prêt pour le prochain échange de tampon et le frame précédent se répète.
Le moteur de rendu ne peut alors pas commencer à afficher le frame suivant, ce qui entraîne encore plus de problèmes. Ce scénario est familier aux développeurs d'applications mobiles Android. Lorsqu'une application s'exécute sur ChromeOS, le contexte est encore plus complexe.
Une application exécutée sur le bureau ne s'affiche pas directement dans le frame de l'écran. Il affiche plutôt ses données dans une texture. Il existe généralement plusieurs applications, chacune affichant ses graphiques dans une texture. Le système construit la vue à l'écran à l'aide d'un compositeur pour combiner toutes les textures en une seule image de bureau.
Le compositeur fonctionne de manière transparente en arrière-plan, mais il introduit un délai d'une frame pour maximiser l'utilisation du pipeline GPU. Ce délai permet d'atténuer les fluctuations des performances du système et d'équilibrer une charge asymétrique.
Lorsque l'OS travaille dur, le GPU peut être sollicité au maximum, ce qui entraîne un délai entre le rendu d'un frame et son affichage à l'écran. Le système peut utiliser une mise en mémoire tampon quadruple pour compenser, en fonction du matériel. Même avec une mise en mémoire tampon plus importante, le pipeline graphique peut toujours présenter des problèmes.
Traceur graphique ARC
ChromeOS dispose d'un outil de profilage qui montre comment les tampons s'infiltrent dans le système, quand des échanges de mémoire se produisent, le niveau d'activité du processeur/GPU et ce que votre application fait à un moment donné, comme illustré dans l'image suivante :
Configurer le profileur
Pour utiliser le profileur, vous devez exécuter la version 75 ou ultérieure. Pour de meilleurs résultats, utilisez un appareil Intel.
Avant d'utiliser le profileur, insérez des traces dans votre application.
Ajoutez Trace.traceCounter(Trace.TRACE_TAG_GRAPHICS, "Event", <number>); à votre code à l'endroit où vous souhaitez inclure une trace. Utilisez un Event qui commence par le préfixe customTrace. Le préfixe n'apparaît pas dans le message de trace.
Pour configurer le profileur, procédez comme suit :
- Activez le mode développeur.
- Activez les paramètres Chrome et l'outil Visualisation des tampons graphiques ARC.
- Accédez à
chrome://arc-graphics-tracing.
Exécuter le profileur
- Sélectionnez Arrêter en cas de problème.
- Exécutez l'application Android.
- Lorsque l'application Android est active et sélectionnée, appuyez sur
Control+Shift+G.
Lorsqu'un problème survient, une fenêtre de navigateur s'affiche. Utilisez les touches W et S pour faire un zoom avant et arrière sur la timeline.