SurfaceFlinger

Los volcados de SurfaceFlinger proporcionan una instantánea de SurfaceFlinger en un momento específico. Los registros de SurfaceFlinger incluyen una secuencia cronológica de estados que proporcionan estadísticas valiosas sobre cómo aparece una ventana en la pantalla y determinan qué ventana recibe respuestas táctiles en ubicaciones específicas. Esta información es esencial para solucionar problemas como la app no responde a mi toque o experimenté parpadeos mientras miraba un video.

El visualizador de SurfaceFlinger de Winscope muestra esta información para los registros recopilados con el modo activo o generados a partir del registro de transacciones cuando se toma un informe de errores (de forma predeterminada, la configuración de Droidfood), así como para los volcados.

Consulta SurfaceFlinger (capas) para obtener más información sobre la recopilación de registros.

Análisis de registros de SurfaceFlinger

Figura 1: Análisis de registros de SurfaceFlinger

En el lado izquierdo de la pantalla, se muestra una vista en 3D de las capas. La vista de rectángulos tiene en cuenta los límites de la capa, el orden Z, la opacidad, el orden Z relativo y las esquinas redondeadas.

Chips de jerarquía

El segmento central de la pestaña muestra la jerarquía de capas con chips para obtener más información, como las relaciones de superior y secundaria entre las capas, de la siguiente manera:

  • V: Identifica las capas visibles.
  • RelZParent: Identifica capas con un elemento secundario RelZ.
  • RelZ: Identifica las capas con un RelZParent y se dibuja en orden Z según su jerarquía.
  • HWC: Identifica las capas compuestas por el Hardware Composer.
  • GPU: Identifica las capas compuestas por la GPU.

En el lado derecho de la pantalla, se muestra una lista de propiedades seleccionadas, así como un volcado de proto de todas las propiedades de la capa disponibles. Para obtener más información sobre las funciones de la sección de volcado de .proto, consulta Propiedades.

Propiedades seleccionadas

Para facilitar la depuración, el visualizador de SurfaceFlinger proporciona una lista seleccionada de propiedades, en la que se presenta la información más utilizada en un formato más organizado:

Propiedades de SurfaceFlinger

Figura 2: Son las propiedades de SurfaceFlinger.

Esta lista incluye las siguientes categorías.

Visibilidad

Este bloque contiene información sobre la visibilidad de la capa y una explicación de por qué no es visible. Incluye lo siguiente:

Marcas: Controlan la visibilidad, por ejemplo, HIDDEN y OPAQUE.

Motivo de invisibilidad: Es una explicación de por qué la capa o la superficie son invisibles en la pantalla, si corresponde. Por ejemplo, si están ocultas por sí mismas o por su elemento superior, o si no tienen búfer para dibujar.

Obstruido, Parcialmente obstruido o Cubierto:

  • Obstruida: La capa actual se calcula como visible, pero se dibuja otra capa opaca sobre ella, lo que hace que la capa actual sea invisible. La capa que se encuentra sobre la capa Occluded es opaca, es decir, su marca OPAQUE está establecida o el formato de píxel no contiene alfa, o bien no se estableció alfa en la capa.
  • Parcialmente obstruida: La capa actual es parcialmente visible, ya que la capa opaca que se dibuja sobre ella no la cubre por completo. La capa que se encuentra sobre la capa Partially Occluded es opaca, es decir, la marca OPAQUE está establecida o el formato de píxel no contiene alfa o no se establece alfa en la capa.
  • Cubierta: La capa actual está cubierta, ya sea total o parcialmente, por una capa no opaca y aún puede ser visible en la pantalla. La capa sobre la capa Covered no es opaca, es decir, la marca OPAQUE no está establecida o el formato de píxel contiene alfa o alfa está establecido en la capa. Sin embargo, para los registros de SurfaceFlinger, se muestra una capa Covered como visible para las capas debajo de SurfaceFlinger:

    Capa cubierta en SurfaceFlinger

    Figura 3: Es la capa cubierta en SurfaceFlinger.

Geometría y efectos

En esta sección, se describen la geometría y los efectos solicitados y calculados para la capa actual.

En la sección Requested, se muestran las propiedades que se establecen en la capa. En cambio, la sección Calculated muestra las propiedades que se aplican a la capa. Esta distinción se debe a que la geometría y los efectos se pasan a través de la jerarquía y se heredan de los elementos principales.

En la Figura 2, la capa solicita que el radio de esquina se establezca en 0 px. Sin embargo, una de sus capas principales establece el radio de esquina en 97.419 px, que es el valor aplicado:

Búfer

Las siguientes propiedades muestran información sobre si la capa tiene un búfer, su tamaño y su transformación.

  • Número de fotograma: Número incremental que comienza cuando se crea una app.
  • Frame de destino: Se usa para ajustar el búfer a los límites definidos por el frame de destino.

Jerarquía

Las siguientes propiedades describen cómo se determina la jerarquía de capas:

  • Orden Z: En la jerarquía de capas, el orden Z determina la posición relativa de una capa en relación con sus elementos secundarios. Una capa con un valor Z de 0 se posiciona sobre su elemento principal. Si varias capas comparten el mismo valor de Z, la capa con el ID de capa más alto se coloca en la parte superior.
  • Elemento superior relativo: Indica la capa superior relativa en el orden Z. El elemento secundario no hereda ninguna propiedad de su elemento superior relativo, excepto la marca oculta.

Entrada

Las siguientes propiedades contienen información sobre la región táctil y el enfoque:

  • Recorta la región táctil con el elemento: Usa los límites de la capa para recortar la región táctil.
  • Reemplazar región táctil por recorte: Usa el recorte de las capas actuales como su región táctil.