📘 SurfaceFlinger 调试实战
30章 · 从入门到精通
🎯 风格 · 活力全彩
01
SurfaceFlinger概述
图形架构
角色定位
HWC/GPU
02
开发环境搭建
AOSP源码
编译环境
模拟器/真机
03
SurfaceFlinger源码结构
核心文件
关键类图
04
启动流程分析
进程启动
init.rc
main入口
05
消息队列与VSync
MessageQueue
VSync
Choreographer
06
Layer管理
创建/销毁
状态机
Z-order
07
BufferQueue原理
生产者-消费者
dequeue/queue
BufferSlot
08
GraphicBuffer与内存管理
Gralloc HAL
ION/DMA-BUF
共享内存
09
Composition引擎
CompositionStrategy
Client/Target/Device
10
HWC集成
HWC2 HAL
Present流程
硬件/GPU合成
11
Display管理
DisplayDevice
热插拔
多屏显示
12
Transaction机制
Binder调用
TransactionQueue
状态同步
13
帧率控制
刷新率策略
动态帧率
功耗优化
14
Debug工具入门
dumpsys
systrace
bugreport
15
dumpsys深度解析
Layer信息
Buffer状态
Composition统计
16
systrace实战
图形trace
分析掉帧
定位卡顿
17
GPU调试
RenderEngine
OpenGL ES
Shader问题
18
HWC调试
dump HWC
合成策略
硬件能力
19
Buffer分析工具
gfxinfo
FrameTimeline
BufferQueue
20
常见问题一:黑屏/花屏
SF崩溃
Buffer分配失败
HWC异常
21
常见问题二:掉帧/卡顿
VSync失调
GPU过载
合成策略不当
22
常见问题三:显示延迟
Transaction阻塞
BufferQueue饥饿
优先级反转
23
常见问题四:内存泄漏
Layer泄漏
Buffer泄漏
Gralloc句柄
24
性能优化
减少Layer
优化Buffer
Overlay
25
多窗口与分屏
Freeform
Split-screen
PiP
26
SurfaceFlinger测试
CTS/VTS
压力测试
稳定性
27
日志分析
logcat过滤
关键日志
异常堆栈
28
源码调试
GDB/LLDB
断点设置
单步跟踪
29
实战案例一:修复第三方应用黑屏
黑屏修复
案例分析
30
实战案例二:优化系统UI滑动流畅度
UI流畅度
滑动优化