Les vidages SurfaceFlinger fournissent un instantané de SurfaceFlinger à un moment donné. Les traces SurfaceFlinger comportent une séquence chronologique d'états qui fournissent des informations précieuses sur la façon dont une fenêtre s'affiche à l'écran et déterminent la fenêtre qui reçoit les réponses tactiles à des emplacements spécifiques. Ces informations sont essentielles pour résoudre des problèmes tels que l'application ne répond pas à mes gestes ou j'ai constaté un scintillement lorsque je regardais une vidéo.
L'outil d'affichage SurfaceFlinger de Winscope affiche ces informations pour les traces collectées à l'aide du mode actif ou générées à partir de la trace des transactions lors de la création d'un rapport de bug (par défaut, la configuration Droidfood), ainsi que pour les vidages.
Pour en savoir plus sur la collecte de traces, consultez SurfaceFlinger (calques).
Figure 1 : Analyse des traces SurfaceFlinger.
Sur le côté gauche de l'écran, vous pouvez voir une vue 3D des calques. La vue rects tient compte des limites de calque, de l'ordre z, de l'opacité, de la valeur Z relative et des coins arrondis.
Chips de hiérarchie
Le segment central de l'onglet affiche la hiérarchie des calques avec des chips pour en savoir plus, comme les relations parents-enfants entre les calques, comme suit:
- V: identifie les calques visibles.
- RelZParent: identifie les calques avec un enfant RelZ.
- RelZ: identifie les calques avec un RelZParent et dessinés dans l'ordre Z en fonction de leur hiérarchie.
- HWC: identifie les calques composés par le Hardware Composer.
- GPU: identifie les calques composés par le GPU.
Sur le côté droit de l'écran figure une liste de propriétés sélectionnées, ainsi qu'un dump de proto de toutes les propriétés de calque disponibles. Pour en savoir plus sur les fonctionnalités de la section de vidage de proto, consultez la section Propriétés.
Établissements sélectionnés
Pour faciliter le débogage, l'explorateur SurfaceFlinger fournit une liste organisée de propriétés, présentant les informations les plus couramment utilisées dans un format plus organisé:
Figure 2. Propriétés SurfaceFlinger.
Cette liste comprend les catégories suivantes.
Visibilité
Ce bloc contient des informations sur la visibilité de la couche et une explication de la raison pour laquelle elle n'est pas visible. Voici les sujets abordés :
Options:elles contrôlent la visibilité, par exemple HIDDEN
et OPAQUE
.
Motif d'invisibilité:explication de la raison pour laquelle la couche ou la surface est invisible à l'écran, le cas échéant (par exemple, elle est masquée par elle-même ou par son parent, ou elle n'a pas de tampon à dessiner).
Occludé, Partiellement masqué ou Masqué :
- Masqué:la couche actuelle est calculée comme visible, mais une autre couche opaque est dessinée par-dessus, ce qui la rend invisible. La couche au-dessus de la couche Occludé est opaque, c'est-à-dire que son indicateur
OPAQUE
est défini, ou que le format de pixel ne contient pas d'alpha ou qu'aucun alpha n'est défini sur la couche. - Partiellement masqué:la couche actuelle est partiellement visible, car la couche opaque dessinée dessus ne la recouvre pas entièrement. La couche au-dessus de la couche Partiellement masquée est opaque, c'est-à-dire que l'indicateur
OPAQUE
est défini, ou que le format de pixel ne contient pas d'alpha ou qu'aucun alpha n'est défini sur la couche. Couvert:la couche actuelle est entièrement ou partiellement recouverte par une couche non opaque et peut toujours être visible à l'écran. La couche au-dessus de la couche Covered n'est pas opaque, c'est-à-dire que l'indicateur
OPAQUE
n'est pas défini ou que le format de pixel contient alpha ou que l'alpha est défini sur la couche. Toutefois, pour les traces SurfaceFlinger, un calque Covered (Couvert) est affiché comme visible pour les calques situés sous SurfaceFlinger:Figure 3. Couche recouverte sur SurfaceFlinger.
Géométrie et effets
Cette section décrit la géométrie et les effets demandés et calculés pour le calque actuel.
La section Requested (Demandé) affiche les propriétés définies sur le calque. En revanche, la section Calculé affiche les propriétés appliquées à la couche. Cette distinction est due au fait que la géométrie et les effets sont transmis dans la hiérarchie et hérités des éléments parents.
Dans la figure 2, le calque demande que le rayon des coins soit défini sur 0 px. Toutefois, l'un de ses calques parents définit le rayon des coins sur 97,419 px, ce qui est la valeur appliquée:
Tampon
Les propriétés suivantes indiquent si la couche possède un tampon, sa taille et sa transformation.
- Frame number (Numéro de frame):nombre incrémentiel à partir du moment où une application est créée.
- Cadre de destination:permet de mettre à l'échelle le tampon en fonction des limites définies par le cadre de destination.
Hiérarchie
Les propriétés suivantes décrivent comment la hiérarchie des calques est déterminée:
- Ordre Z:dans la hiérarchie des calques, l'ordre Z détermine le positionnement relatif d'un calque par rapport à ses frères et sœurs. Un calque avec une valeur z de 0 est positionné au-dessus de son parent. Si plusieurs calques partagent la même valeur z, celui dont l'ID est le plus élevé est placé en haut.
- parent relatif:indique la couche parente relative dans l'ordre Z. L'élément enfant n'hérite d'aucune propriété de son parent relatif, à l'exception de l'indicateur masqué.
Entrée
Les propriétés suivantes contiennent des informations sur la zone tactile et la sélection:
- Recadrer la zone tactile avec un élément:utilisez les limites de calque pour recadrer la zone tactile.
- Remplacer la région tactile par le recadrage:utilisez le recadrage des calques actuels comme région tactile.