🎨 SurfaceFlinger 源码剖析
30章 · 图形合成
⭐ 友好色系
01
SurfaceFlinger 概述
Android图形架构
角色定位
核心职责
02
合成基础概念
BufferQueue
GraphicBuffer
Layer/Display
03
合成触发机制
VSync
Choreographer
同步与请求
04
合成线程模型
主线程
合成线程
事件线程
05
Layer 管理
创建/销毁
Z-order
透明度/裁剪
06
Buffer 管理
BufferQueue
dequeue/queue
状态机
07
合成策略选择
GPU vs HWC
决策树
Client/Device
08
HWC 硬件合成器
HAL接口
版本演进
2.0~2.4特性
09
GPU 合成实现
OpenGL ES
Shader
FBO离屏
10
合成前的准备
预处理
脏区域
可见裁剪
11
合成流程主路径
onMessageReceived
handlePageFlip
handleTransaction
12
handlePageFlip 详解
Buffer获取
Layer更新
时间戳
13
handleTransaction 详解
事务处理
状态同步
属性变更
14
合成执行
doComposition
setupHWComposer
debugFlash
15
doComposition 流程
遍历Layer
合成计划
执行合成
16
setupHWComposer 详解
HWC准备
Layer分配
Client回退
17
HWC prepare 与 set
prepare阶段
set阶段
presentDisplay
18
Client 合成实现
GLES管线
纹理上传
FBO绘制
19
合成后的处理
postFramebuffer
Fence同步
显示刷新
20
Fence 机制
Fence作用
创建/等待
超时处理
21
显示刷新
Display抽象
Hotplug
模式切换
22
性能优化
瓶颈分析
Buffer预分配
策略调优
23
调试与追踪
dumpsys
Systrace
耗时统计
24
常见问题排查
画面撕裂
合成延迟
黑屏/HWC
25
多显示支持
多Display
扩展/镜像
内容路由
26
虚拟显示
VirtualDisplay
屏幕录制
远程显示
27
安全与保护
受保护内容
DRM
安全显示路径
28
合成与窗口管理
WindowManager
交互
窗口动画
29
未来演进
HDR合成
可变刷新率
AI辅助
30
综合实战
简化合成器
核心逻辑
从零实现