Le point sur l'accélération graphique dans Android
Publié le 08/12/2011 - Source : Tom's Hardware
Dianne Hackborn, ingénieure Android chez Google depuis 2005, revient dans un long post sur Google+ sur l'accélération graphique matérielle dans Android. On a en effet coutume de considérer que les ralentissements dans l'interface d'Android sont le fait d'une absence d'accélération ou d'une mauvaise implémentation de celle-ci, ce que réfute Hackborn.
D'après elle, Android a toujours utilisé en partie l'accélération graphique, même avant la 1.0. Cependant, si les contours des fenêtres, les menus, les pop-ups ou le positionnement des fenêtres étaient accélérés, le contenu à l'intérieur de chaque fenêtre était calculé par le CPU. C'est ce qui explique que le défilement puisse être saccadé sur des téléphones au CPU peu puissant comme le Motorola Droid/Milestone.
Conscient de ces problèmes potentiels, Google a entrepris de généraliser l'accélération matérielle. Elle est disponible dans Android depuis la version 3.0 et arrivera donc sur les smartphones avec la version 4.0. Dans la version 4.0, elle est même activée par défaut pour toutes les applications optimisées pour Ice Cream Sandwich.
Hackborn tempère néanmoins l'enthousiasme autour de l'accélération matérielle. Y recourir augmente en effet largement les besoins en mémoire vive. Sur un GPU PowerVR, OpenGL ajoute 8 Mo de RAM à chaque processus l'utilisant. Par ailleurs, le rendu peut ne pas être la source des saccades constatées par l'utilisateur : une mauvaise synchronisation entre la détection des touchés à l'écran et le rendu peut aussi provoquer des incohérences visuelles.
Enfin, Hackborn revient sur un exemple souvent cité pour montrer le besoin d'accélération matérielle dans Android : le défilement d'une page web. Historiquement, c'est le point faible des smartphones Android, qui souffrent beaucoup de la comparaison avec les iPhone ou les Windows Phone. Mais selon Hackborn, iOS n'utilise pas non plus le GPU pour ce point précis. La différence de fluidité tient à la méthode de rendu des pages basée sur des tuiles indépendantes dans iOS et pas dans Android 1, 2 ou 3. Google a heureusement changé son fusil d'épaule pour Android 4 qui adopte la même méthode qu'iOS.
Cette plongée dans les détails du code n'est pas seulement intéressante pour les développeurs : les changements apportés par Android 4 devraient rendre plus agréable l'utilisation de leur smartphone à des millions de profanes.