SurfaceFlinger

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

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

Дополнительную информацию о сборе трассировок см. в разделе SurfaceFlinger (слои) .

SurfaceFlinger trace analysis

Рисунок 1. Анализ трассировки с помощью SurfaceFlinger.

В левой части экрана отображается трехмерное изображение слоев. В режиме просмотра прямоугольников учитываются границы слоев, порядок по оси Z, прозрачность, относительная ось Z и скругленные углы.

Иерархические чипы

В центральной части вкладки отображается иерархия слоев с информационными элементами для получения более подробных сведений, таких как взаимосвязи между слоями (родитель-потомок), следующим образом:

  • V : Определяет видимые слои.
  • RelZParent : Определяет слои с дочерними элементами RelZ .
  • RelZ : Идентифицирует слои с помощью RelZParent и отображает их в порядке z-схождения в соответствии с их иерархией.
  • HWC : Идентифицирует слои, созданные с помощью Hardware Composer.
  • GPU : Определяет слои, созданные с помощью графического процессора.

В правой части экрана отображается список отобранных свойств , а также дамп прототипов всех доступных свойств слоев. Для получения дополнительной информации о возможностях раздела дампа прототипов см. раздел « Свойства» .

Подборка объектов недвижимости

Для упрощения отладки средство просмотра SurfaceFlinger предоставляет тщательно подобранный список свойств, отображая наиболее часто используемую информацию в более организованном формате:

SurfaceFlinger properties

Рисунок 2. Свойства SurfaceFlinger.

Этот список включает следующие категории.

Видимость

Этот блок содержит информацию о видимости слоя и объяснение причин его невидимости. Он включает в себя:

  • Флаги: Они управляют видимостью, например, HIDDEN и OPAQUE .

  • Причина невидимости: объяснение того, почему слой или поверхность невидимы на экране (если применимо), например, скрыты сами собой или своим родительским элементом, или не имеют буфера для отрисовки.

  • Окклюзия , частичная окклюзия или покрытие:

    • Затененный слой: Текущий слой считается видимым, но поверх него накладывается другой непрозрачный слой, делая текущий слой невидимым. Слой над затененным слоем является непрозрачным, то есть либо у него установлен флаг OPAQUE , либо формат пикселей не содержит альфа-канала, либо альфа-канал для слоя не установлен.
    • Частично перекрыто: текущий слой частично виден, поскольку наложенный поверх него непрозрачный слой не полностью его перекрывает. Слой над слоем «Частично перекрыто» является непрозрачным, то есть установлен флаг OPAQUE , или формат пикселей не содержит альфа-канала, или альфа-канал для слоя не установлен.
    • Покрытый: Текущий слой полностью или частично покрыт непрозрачным слоем и может оставаться видимым на экране. Слой над покрытым слоем не является непрозрачным, то есть флаг OPAQUE не установлен, формат пикселей содержит альфа-канал или альфа-канал установлен на слое. Однако для трассировок SurfaceFlinger покрытый слой отображается как видимый, для слоев ниже слоя SurfaceFlinger:

      Covered layer on SurfaceFlinger

      Рисунок 3. Покрытый слой на SurfaceFlinger.

Геометрия и эффекты

В этом разделе описываются запрошенная и вычисленная геометрия и эффекты для текущего слоя.

В разделе «Запрошенные» отображаются свойства, задаваемые для слоя. В отличие от них, в разделе «Вычисленные» отображаются свойства, которые применяются к слою. Это различие обусловлено тем, что геометрия и эффекты передаются вниз по иерархии и наследуются от родительских элементов.

На рисунке 2 слой запрашивает значение радиуса скругления углов равным 0 пикселей. Однако один из его родительских слоев устанавливает радиус скругления углов равным 97,419 пикселям, что и является примененным значением.

Буфер

Следующие свойства отображают информацию о наличии буфера у слоя, его размере и преобразовании:

  • Номер кадра: Порядковый номер, добавляемый при создании приложения.
  • Кадр назначения: Используется для масштабирования буфера в соответствии с границами, определенными кадром назначения.

Иерархия

Следующие свойства описывают, как определяется иерархия слоев:

  • Z-порядок: В иерархии слоев z-порядок определяет относительное положение слоя по отношению к соседним слоям. Слой со значением z, равным 0, располагается выше своего родительского слоя. Если несколько слоев имеют одинаковое значение z, слой с более высоким идентификатором размещается сверху.
  • Относительный родительский слой: указывает относительный родительский слой в порядке z. Дочерний слой не наследует никаких свойств от своего относительного родительского слоя, за исключением флага скрытости.

Вход

Следующие свойства содержат информацию о доступной для касания области и фокусе:

  • Обрезка области касания с помощью объекта: используйте границы слоя для обрезки области, к которой можно прикоснуться.
  • Заменить область касания областью обрезки: использовать область обрезки текущего слоя в качестве области, к которой можно прикасаться.