Дампы SurfaceFlinger предоставляют снимок состояния SurfaceFlinger в определенный момент времени. Трассировки SurfaceFlinger содержат хронологическую последовательность состояний, которая дает ценную информацию о том, как окно отображается на экране, и определяет, какое окно получает отклик на касание в определенных местах. Эта информация помогает устранять неполадки, например, приложение не реагирует на касание или наблюдается мерцание при просмотре видео .
В Winscope средство просмотра SurfaceFlinger отображает эту информацию для трассировок, собранных либо в активном режиме, либо сгенерированных из трассировки транзакций при создании отчета об ошибке (по умолчанию используется конфигурация Droidfood), а также для дампов.
Дополнительную информацию о сборе трассировок см. в разделе SurfaceFlinger (слои) .

Рисунок 1. Анализ трассировки с помощью SurfaceFlinger.
В левой части экрана отображается трехмерное изображение слоев. В режиме просмотра прямоугольников учитываются границы слоев, порядок по оси Z, прозрачность, относительная ось Z и скругленные углы.
Иерархические чипы
В центральной части вкладки отображается иерархия слоев с информационными элементами для получения более подробных сведений, таких как взаимосвязи между слоями (родитель-потомок), следующим образом:
- V : Определяет видимые слои.
- RelZParent : Определяет слои с дочерними элементами RelZ .
- RelZ : Идентифицирует слои с помощью RelZParent и отображает их в порядке z-схождения в соответствии с их иерархией.
- HWC : Идентифицирует слои, созданные с помощью Hardware Composer.
- GPU : Определяет слои, созданные с помощью графического процессора.
В правой части экрана отображается список отобранных свойств , а также дамп прототипов всех доступных свойств слоев. Для получения дополнительной информации о возможностях раздела дампа прототипов см. раздел « Свойства» .
Подборка объектов недвижимости
Для упрощения отладки средство просмотра SurfaceFlinger предоставляет тщательно подобранный список свойств, отображая наиболее часто используемую информацию в более организованном формате:

Рисунок 2. Свойства SurfaceFlinger.
Этот список включает следующие категории.
Видимость
Этот блок содержит информацию о видимости слоя и объяснение причин его невидимости. Он включает в себя:
Флаги: Они управляют видимостью, например,
HIDDENиOPAQUE.Причина невидимости: объяснение того, почему слой или поверхность невидимы на экране (если применимо), например, скрыты сами собой или своим родительским элементом, или не имеют буфера для отрисовки.
Окклюзия , частичная окклюзия или покрытие:
- Затененный слой: Текущий слой считается видимым, но поверх него накладывается другой непрозрачный слой, делая текущий слой невидимым. Слой над затененным слоем является непрозрачным, то есть либо у него установлен флаг
OPAQUE, либо формат пикселей не содержит альфа-канала, либо альфа-канал для слоя не установлен. - Частично перекрыто: текущий слой частично виден, поскольку наложенный поверх него непрозрачный слой не полностью его перекрывает. Слой над слоем «Частично перекрыто» является непрозрачным, то есть установлен флаг
OPAQUE, или формат пикселей не содержит альфа-канала, или альфа-канал для слоя не установлен. Покрытый: Текущий слой полностью или частично покрыт непрозрачным слоем и может оставаться видимым на экране. Слой над покрытым слоем не является непрозрачным, то есть флаг
OPAQUEне установлен, формат пикселей содержит альфа-канал или альфа-канал установлен на слое. Однако для трассировок SurfaceFlinger покрытый слой отображается как видимый, для слоев ниже слоя SurfaceFlinger:
Рисунок 3. Покрытый слой на SurfaceFlinger.
- Затененный слой: Текущий слой считается видимым, но поверх него накладывается другой непрозрачный слой, делая текущий слой невидимым. Слой над затененным слоем является непрозрачным, то есть либо у него установлен флаг
Геометрия и эффекты
В этом разделе описываются запрошенная и вычисленная геометрия и эффекты для текущего слоя.
В разделе «Запрошенные» отображаются свойства, задаваемые для слоя. В отличие от них, в разделе «Вычисленные» отображаются свойства, которые применяются к слою. Это различие обусловлено тем, что геометрия и эффекты передаются вниз по иерархии и наследуются от родительских элементов.
На рисунке 2 слой запрашивает значение радиуса скругления углов равным 0 пикселей. Однако один из его родительских слоев устанавливает радиус скругления углов равным 97,419 пикселям, что и является примененным значением.
Буфер
Следующие свойства отображают информацию о наличии буфера у слоя, его размере и преобразовании:
- Номер кадра: Порядковый номер, добавляемый при создании приложения.
- Кадр назначения: Используется для масштабирования буфера в соответствии с границами, определенными кадром назначения.
Иерархия
Следующие свойства описывают, как определяется иерархия слоев:
- Z-порядок: В иерархии слоев z-порядок определяет относительное положение слоя по отношению к соседним слоям. Слой со значением z, равным 0, располагается выше своего родительского слоя. Если несколько слоев имеют одинаковое значение z, слой с более высоким идентификатором размещается сверху.
- Относительный родительский слой: указывает относительный родительский слой в порядке z. Дочерний слой не наследует никаких свойств от своего относительного родительского слоя, за исключением флага скрытости.
Вход
Следующие свойства содержат информацию о доступной для касания области и фокусе:
- Обрезка области касания с помощью объекта: используйте границы слоя для обрезки области, к которой можно прикоснуться.
- Заменить область касания областью обрезки: использовать область обрезки текущего слоя в качестве области, к которой можно прикасаться.