Systrace基础-SurfaceFlinger
Systrace基础-SurfaceFlinger
SurfaceFlinger
SurfaceFlinger 最主要的功能:SurfaceFlinger 接受来自多个来源的数据缓冲区,对它们进行合成,然后发送到显示设备。
 |
那么 Systrace 中,我们关注的重点就是上面这幅图对应的部分:
- App 部分
- BufferQueue 部分
- SurfaceFlinger 部分
- HWComposer 部分
这四部分,在 Systrace 中都有可以对应的地方,以时间发生的顺序排序就是 1、2、3、4
App 部分
关于 App 部分,其实在 Systrace 基础知识 - MainThread 和 RenderThread 解读 这篇文章里面已经说得比较清楚了
主要的流程如下图:
 |
从 SurfaceFlinger
的角度来看,App 部分主要负责生产 SurfaceFlinger
合成所需要的 Surface
。
App 与 SurfaceFlinger
的交互主要集中在三点
Vsync
信号的接收和处理RenderThread
的dequeueBuffer
RenderThread
的queueBuffer
Vsync 信号的接收和处理
关于这部分内容可以查看 Android 基于 Choreographer 的渲染机制详解 这篇文章。
App 和 SurfaceFlinger 的第一个交互点就是 Vsync 信号的请求和接收,Vsync-App
信号到达,就是指的是 SurfaceFlinger
的 Vsync-App
信号。应用收到这个信号后,开始一帧的渲染准备。
RenderThread 的 dequeueBuffer
Ref
本文由作者按照 CC BY 4.0 进行授权