SurfaceFlinger
SurfaceFlinger 转储能够提供特定时间的 SurfaceFlinger 快照。SurfaceFlinger 跟踪记录会按时间顺序显示状态序列,以便提供有价值的信息,让用户了解窗口在界面上的显示方式,以及如何确定哪个窗口在特定位置接收触摸响应。这些信息对于排查问题(例如应用未响应我的触摸操作或我在观看视频时遇到闪烁问题)至关重要。
Winscope 的 SurfaceFlinger 查看器会针对以下各项显示这些信息:使用活跃模式收集的跟踪记录或在提交 bug 报告时根据事务跟踪记录生成的跟踪记录(默认情况下为 Droidfood 配置),以及转储。
如需详细了解跟踪记录收集,请参阅 SurfaceFlinger(层)。
SurfaceFlinger 跟踪记录分析

图 1. SurfaceFlinger 跟踪记录分析。
界面左侧显示了层的 3D 视图。矩形视图考虑了层边界、z 轴顺序、不透明度、相对 Z 值和圆角。
层次结构条状标签
该标签页的中心部分显示了层次结构,其中包含用于显示更多信息(例如层之间的父子关系)的条状标签,如下所示:
V:标识可见层。
RelZParent:标识具有 RelZ 子级的层。
RelZ:标识具有 RelZParent 且按照层次结构中的 z 轴顺序进行绘制的层。
警告:以下各项自 Android 15 起已废弃,但仍会显示在较旧的跟踪记录中。
HWC:标识由硬件混合渲染器合成的层。
GPU:标识由 GPU 合成的层。
界面右侧显示了一系列精选属性,以及包含所有可用层属性的 proto 转储。如需详细了解 proto 转储部分的内容,请参阅属性。
精选属性
为了让调试更轻松,SurfaceFlinger 查看器提供了一系列精选属性,以便以更有条理的格式呈现最常用的信息:
SurfaceFlinger 属性

图 2. SurfaceFlinger 属性。
此列表包含以下类别。
可见性
此部分包含关于层可见性的信息,以及层不可见的原因。其中包括:
Flags:用于控制可见性,例如 HIDDEN 和 OPAQUE。
Invisibility reason:说明层或 surface 在界面上不可见的原因(如果适用),例如由自身或其父级隐藏,或者没有缓冲区来绘制。
被遮挡、被部分遮挡或被覆盖:
Occluded:
系统将当前层计算为可见,但在其前面绘制了另一个不透明层,从而导致当前层不可见。被遮挡的层前方的层不透明,也就是说,前方的层设置了 OPAQUE 标志、像素格式不包含 alpha,或未设置 alpha。
Partially Occluded:
当前层部分可见,因为其前方绘制的不透明层未完全覆盖它。被部分遮挡的层前方的层不透明,也就是说,前方的层设置了 OPAQUE 标志、像素格式不包含 alpha,或未设置 alpha。
Covered:
当前层被透明层完全或部分覆盖,但在屏幕上仍可能可见。被覆盖的层前方的层透明,也就是说,前方的层未设置 OPAQUE 标志、像素格式包含 alpha,或设置了 alpha。不过,在 SurfaceFlinger 跟踪记录中,被覆盖的层对于 SurfaceFlinger 后方的层来说会显示为可见:

图 3. SurfaceFlinger 上被覆盖的层。
注意:透明层支持半透明像素。如果层内容完全不透明,那么其后方的层不会显示在界面上。
注意:如果某个层被一个或多个不透明层遮盖,或者被一个包含不透明像素的半透明层覆盖,则该层可能会被视为可见,但不会显示在界面上。
几何图形和效果
本部分介绍了为当前层请求和计算出的几何图形和效果。
Requested(请求的属性)部分显示层上设置的属性。Calculated(计算出的属性)部分则显示为层应用的属性。之所以有这种区别,是因为几何图形和效果会沿着层次结构传递,并从父元素继承。
在图 2 中,层请求将 Corner Radius 设置为 0 像素。但是,其中一个父层将 Corner Radius 设置为 97.419 像素,这是应用的值:
缓冲区
以下属性显示层是否具有缓冲区、缓冲区的大小和转换方面的信息。
帧号:从应用创建后开始递增的编号。
目标帧:用于将缓冲区缩放到由目标帧定义的边界。
层次结构
以下属性描述了如何确定层次结构:
z 顺序:在层次结构中,z 顺序决定层相对于其同级层的位置。z 值为 0 的层会位于其父级前方。如果多个层具有相同的 z 值,则 ID 较高的层会位于前方。
相对父级:表示 z 轴顺序中的相对父级层。子级不会从其相对父级继承任何属性,隐藏的标志除外。
输入
以下属性包含关于可触摸区域和焦点的信息:
根据内容项裁剪触摸区域:根据层边界裁剪可触摸区域。
将触摸区域替换为裁剪区域:将当前层的裁剪区域用作其可触摸区域。
英文版本参考:
https://source.android.google.cn/docs/core/graphics/winscope/analyze/sf
更多framework实战开发,请关注下面“千里马学框架”
643

被折叠的 条评论
为什么被折叠?



