SurfaceFlinger显示框架

假设现在有多个app1 2 3,如果它们随意访问fb,则屏幕显示必然是混乱不堪的。
因此系统必须要有一个统一的管理者SurfaceFlinger

SurfaceFlinger的任务

  • app提供buffer
    1.1、 通过gralloc模块向ashmen申请内存
    1.2 、得到一个fd
    1.3 、通过binderfd传给某个app
    1.4、 appmmap('fd')

  • app 1 2 3把各自界面发给它,它根据层次、大小进行合成,显示
    2.1、根据各个界面的z值(由WindowManagerService确定)决定前后顺序
    2.2、把这些排序后的buffer传给HardwareComposer

  • hwc不能处理(无hwc硬件、超出hwc层数)buffer时,使用图形库GL来处理

在这里插入图片描述

发布了247 篇原创文章 · 获赞 93 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_33487044/article/details/88828304