17 votes

Est-ce que quelqu'un peut expliquer toutes ces options de développeur?

Est-ce que quelqu'un peut expliquer ces options de développement?

  • Forcer le rendu GPU
  • Désactiver les opérations de découpe non rectangulaires
  • Forcer le MSAA 4X
  • Désactiver les superpositions HW

Quels sont les effets possibles que je peux constater sur mon appareil en les désactivant/activant? [Remarque : j'ai trouvé d'autres options en faisant une recherche sur Google mais pas celles-ci.]

Est-ce que les paramètres de développement affectent la durée de vie de la batterie en utilisant des vitesses d'animation plus lentes (toutes à 2x précisément) ou des vitesses d'animation plus rapides (0,5x précisément) au détriment de l'expérience utilisateur?

21voto

RossC Points 5100

Veuillez garder à l'esprit que ce sont des options de développeur et peuvent être inutiles ou avoir un impact négatif sur les performances de votre appareil.

Forcer le rendu GPU

Le GPU est l'unité de traitement graphique. C'est très similaire au CPU, mais au lieu de traiter des nombres et de s'occuper des tâches pour le système d'exploitation et le matériel, le GPU rend les informations graphiques et les affiche à l'écran pour vous.

Le CPU peut traiter des instructions graphiques correctement, mais cela prend du temps à effectuer d'autres calculs, et peut entraîner un retard pendant le traitement des instructions graphiques.

À partir de Ice Cream Sandwich, les développeurs (ou utilisateurs avancés) ont la possibilité de forcer les applications à utiliser le rendu GPU, que ce paramètre soit activé ou désactivé dans le manifeste de l'application. Cela ne rend pas nécessairement l'application plus rapide et peut causer des problèmes.


Désactiver les opérations de clipping non rectangulaires

C'est trop technique pour moi de l'expliquer en détail. Fondamentalement, un "canvas" est utilisé pour le dessin. Le code source d'Android contient ceci :

/**
     * Activer pour **débugger les opérations de clipping non rectangulaires**.
     *
     * Valeurs possibles :
     * "hide", pour désactiver ce mode de débogage
     * "highlight", surligne les commandes de dessin testées contre un clipping non rectangulaire
     * "stencil", affiche la région de clipping à l'écran lorsqu'elle est définie
     *
     * @hide
     */
    public static final String DEBUG_SHOW_NON_RECTANGULAR_CLIP_PROPERTY =
            "debug.hwui.show_non_rect_clip";

Vous pourriez le désactiver pour créer des zones de canevas inhabituelles (non rectangulaires). Voir ici pour plus de détails à ce sujet

Comme le souligne @IanNi-Lewis dans son commentaire :

Il est probablement utile de souligner que «régions de clipping non rectangulaires» est un peu trompeur. Il devrait s'agir de «régions de clipping qui ne sont pas des rectangles alignés sur l'écran». Si vous avez une région de clipping rectangulaire qui est tournée par un multiple non multiple de 90 degrés, alors elle passe par le même chemin lent qu'une région de clipping en forme de donut ou autre. (Le "chemin lent" utilise le tampon de stencil, et il n'a probablement pas besoin d'être aussi lent qu'il l'est; c'est un bon domaine pour une future optimisation.)


Forcer le MSAA 4X

Forcer le MSAA 4x ne nécessite pas un appareil rooté. Cette option fait la même chose que tout filtre Anti-Aliasing dans les jeux PC - lisse toutes les pixelisations et offre un meilleur rendu, ce qui signifie de meilleurs graphismes. Les utilisateurs doivent savoir que cette fonction est uniquement recommandée pour les appareils dotés d'un GPU capable de supporter nativement le MSAA.

De Wikipédia :

En traitement du signal et disciplines connexes, l'ondulation est un effet qui rend différents signaux indiscernables (ou des alias les uns des autres) lorsqu'ils sont échantillonnés. Il fait également référence à la distorsion ou à l'artefact qui résulte lorsque le signal reconstruit à partir des échantillons est différent du signal continu original.


Désactiver les superpositions matériels

Sans une superposition matérielle, chaque application affichant des éléments à l'écran partagera la mémoire vidéo et devra vérifier constamment les collisions et les clips pour rendre une image correcte, ce qui peut coûter beaucoup de puissance de traitement. Avec une superposition matérielle, chaque application obtient sa propre partie de la mémoire vidéo, éliminant ainsi le besoin de vérifier les collisions et les clips.

Comme l'a expliqué @DanHulme : Les fenêtres dans Android sont toujours compostées plutôt que rendues dans une mémoire vidéo partagée. Normalement, SurfaceFlinger utilise le GPU pour la composition, mais il utilisera une superposition matérielle lorsque c'est possible, ce qui est plus rapide et consomme moins de batterie. Désactiver les superpositions signifie qu'il utilisera toujours le rendu GPU. Cela n'est utile que pour le débogage de l'intégration système ou le décodage vidéo HW : même les développeurs d'applications n'ont pas besoin d'activer cette option.

2 votes

4xMSAA pourraient en fait ne pas être plus lent. Sur certains GPU comme le Mali-400, la différence de vitesse entre 4xMSAA et aucune anti-aliasing est négligeable en raison de la façon dont les shaders de fragments s'exécutent. Il convient également de mentionner que cela n'affecte que les applications GLES et ne rendra pas le texte et les icônes dans les applications normales plus nets.

3 votes

Je ne pense pas que votre description des superpositions matérielles soit correcte. Les fenêtres dans Android sont toujours composées plutôt que rendues dans la mémoire vidéo partagée. Normalement, SurfaceFlinger utilise le GPU pour la composition, mais il utilisera une superposition matérielle lorsque c'est possible, ce qui est plus rapide et utilise moins de batterie. Désactiver les superpositions signifie qu'il utilisera toujours le rendu GPU. Ce n'est utile que pour le débogage de l'intégration système ou le décodage vidéo HW : même les développeurs d'applications n'ont pas besoin d'activer cette option.

0 votes

Je suis loin de mon PC, je vais modifier dès que possible, je me suis un peu embrouillé. Ou n'hésitez pas à éditer

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X