11.5 Android显示系统框架_Vsync机制_代码分析

5.5 surfaceflinger对vsync的处理
buffer状态图画得不错:
http://ju.outofmemory.cn/entry/146313

android设备可能连有多个显示器,APP也有多个surface对应各个layer

显示器可能断开或者连接,layer可能内容更新、属性变化等,因此我们的SurfaceFlinger应该能处理各种各样的情况

 

SurfaceFlinger.h中有个结构体State及两个该结构体变量mDrawingState(正在使用或者上次使用的状态),mCurrentState(当前的或者被修改的状态)

通过比较mDrawingState和mCurrentState变量的layersSortedByz成员可知layer的增减,比较displays可知Display的增减(显示器的连接和断开)

 

layer.h中有个结构体State及两个该结构体变量mDrawingState(正在使用或者上次使用的状态),mCurrentState(当前的或者被修改的状态)

通过比较mDrawingState和mCurrentState变量的sequence成员可知layer属性是否发生变化,成员layerStack的值与SurfaceFlinger.h中的State结构体中的DisplayDeviceState结构体的layerStack相同,则layer显示在对应的display上

 

 

SurfaceFlinger收到Vsync消息后处理函数如下:

 

5.6 基础知识_Region及操作
Android Region代码分析 
http://blog.csdn.net/fuyajun01/article/details/25551717


5.7 rebuildLayerStacks源码分析
按z轴值从大到小计算各个layer的可视区域、被遮盖区域, 并把脏区域、不透明区域汇总记入display中

5.8 DisplayDevice创建流程分析

5.9 使用opengl进行界面合成流程速览

5.10 hdmi

posted on 2018-06-21 16:24  拉风摊主  阅读(633)  评论(0编辑  收藏  举报

导航