Дампы SurfaceFlinger представляют собой моментальный снимок SurfaceFlinger на определённый момент времени. Трассировки SurfaceFlinger представляют собой хронологическую последовательность состояний, которая даёт ценную информацию о том, как окно выглядит на экране, и определяет, какое окно получает сенсорные отклики в определённых местах. Эта информация важна для устранения таких неполадок, как отсутствие реакции приложения на касания или мерцание изображения при просмотре видео .
Средство просмотра SurfaceFlinger от Winscope отображает эту информацию для трассировок, собранных с использованием активного режима или сгенерированных из трассировки транзакций при создании отчета об ошибке (по умолчанию конфигурация 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-порядке. Дочерний элемент не наследует никаких свойств от своего относительного родителя, за исключением флага «скрыто».
Вход
Следующие свойства содержат информацию о сенсорной области и фокусе:
- Обрезать область касания с помощью элемента: использовать границы слоя для обрезки области касания.
- Заменить область касания обрезкой: использовать обрезку текущего слоя в качестве области касания.