1. 概述
一帧是如何显示的?
- 简单来说,SurfaceFlinger用于合成显示图层,再将其刷入到HWComposer封装的显示设备中就可以显示了
- 对于一帧内容,先等App UI画完了,SurfaceFlinger再出场对其进行合并渲染后放入framebuffer,最后整到屏幕上。
- 当显示驱动支持时,VSYNC由硬件定时发送到HWComposer中;否则HWComposer会新起一个线程模拟发送VSYNC信号,其原理也十分简单,就是定期唤起线程发送信号。
Surface跟Layer
- Layer是一个图层
- Surface实际显示在手机上的某一个图像,这个图像可能由多个Layer组成
Vsync-app 跟 Vsync-sf
- VSYNC-app用于控制APP绘制UI的节奏,其实就是SF中app-DispSyncSource根据自己需要,转发DispSync的sync信号。
- VSYNC-sf用于控制SF合成Layer的节奏,可以理解为sf对应的DispSyncSource发出的sync信号,再触发EventThread的回调并转换成事件写入写端,最后触发读端的回调MessageQueue::cb_eventReceiver(),SF开始合成显示图层
2. 流程
屏幕的刷新过程是每一行从左到右(行刷新,水平刷新,Horizontal Scanning),从上到下(屏幕刷新,垂直刷新,Verti