17 votes

Quelqu'un peut-il expliquer toutes ces options de développeur ?

Peut-on expliquer ces options de développeur?

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

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

Les paramètres de développement affectent-ils l'autonomie 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 qu'il s'agit d'options de développeur et qu'elles 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. Il est très similaire au CPU, mais au lieu de traiter des chiffres et de s'occuper des tâches du système d'exploitation et du 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 loin des autres calculs, et peut entraîner des ralentissements pendant le traitement des instructions graphiques.

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


Désactiver les opérations de découpe non rectangulaires

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

/**
     * Activer pour **déboguer les opérations de découpe non rectangulaires**.
     *
     * Valeurs possibles:
     * "hide", pour désactiver ce mode de débogage
     * "highlight", met en évidence les commandes de dessin testées contre une découpe non rectangulaire
     * "stencil", dessine la région de découpe à 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 pouvez 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 vaut probablement la peine de noter que "régions de découpe non rectangulaires" est un peu trompeur. Il devrait s'agir de "régions de découpe qui ne sont pas des rectangles alignés sur l'écran". Si vous avez une région de découpe rectangulaire qui est tournée par un multiple quelconque de 90 degrés, elle passe par le même chemin lent qu'une région de découpe en forme de donut ou autre. (Le chemin lent utilise le tampon de stencil, et n'a probablement pas besoin d'être aussi lent qu'il l'est ; c'est un bon domaine pour une optimisation future).


Forcer le MSAA 4X

Forcer le MSAA 4X ne nécessite pas de dispositif 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 n'est recommandée que pour les appareils ayant un GPU capable de supporter nativement le MSAA.

De Wikipedia :

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


Désactiver les superpositions matérielles

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 recouvrements pour afficher une image correcte, ce qui peut coûter beaucoup de puissance de traitement. Avec une superposition matérielle, chaque application a sa propre portion de mémoire vidéo, ce qui élimine le besoin de vérifier les collisions et les recouvrements.

Comme l'a dit @DanHulme : Les fenêtres dans Android sont toujours composé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 quand 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 du décodage vidéo HW : même les développeurs d'applications n'ont pas besoin d'activer cette option.

2 votes

4xMSAA pourrait en fait ne pas être plus lent. Sur certains GPU comme le Mali-400, la différence de vitesse entre 4xMSAA et aucun 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 des applications normales plus nets.

3 votes

Je ne pense pas que votre description des superpositions matérielles (HW overlays) 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 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.

0 votes

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

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