RK3399平台开发系列讲解(系统篇)1.3、安卓系统SurfaceFlinger显示框架

举报
内核笔记 发表于 2021/06/09 01:18:20 2021/06/09
【摘要】 假设现在有多个app1 2 3,如果它们随意访问fb,则屏幕显示必然是混乱不堪的。 因此系统必须要有一个统一的管理者SurfaceFlinger SurfaceFlinger的任务 给app提供buffer 1.1、 通过gralloc模块向ashmen申请内存 1.2 、得到一个fd 1.3 、通过binder把fd传给某个app 1.4、 app再mmap('...

假设现在有多个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来处理

在这里插入图片描述

文章来源: xuesong.blog.csdn.net,作者:内核笔记,版权归原作者所有,如需转载,请联系作者。

原文链接:xuesong.blog.csdn.net/article/details/88828304

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。