首页 > 移动平台 > 详细

Android显示系统(1)——显示框架

时间:2019-05-18 12:10:52      阅读:1116      评论:0      收藏:0      [点我收藏+]

1.Android系统显示框架参考文档
https://community.nxp.com/docs/DOC-93612

2. 涉及的概念:GPU DC HWC FB OverLay

GPU: (Graphic Process Unit)进行图像的混合渲染
FB : (Frame Buffer)帧缓冲,LCD显示的内容就对应一个帧缓冲。不但显示使用FB,Camera视频输入也使用了FB。
DC : (Display Controller)用于将FB中的数据搬移到LCD屏中
OverLay: 每个硬件图层称为一个Overlay图层。
HWC: (HardWare Composer)用于将OverlayLay图层混合后放到FB中。

3. FB表示的是帧缓冲,不但视频显示使用到,Camera视频输入也使用到,也就是说FB不是显示上特有的概念。

4. 不同的Soc上显示framebuffer的原理是一样的。

5. 每个FB使用一个fbX设备文件表示,tiny4412上的如下:
根据手册的1796页,fb0--fb3对应4个显示通道,其它的fb设备文件用于Camera输入接口、HDMI接口、视频编解码器等。

技术分享图片
shell@tiny4412:/ # ls /dev/graphics/                                           
fb0
fb1
fb10
fb11
fb2
fb3
fb4
fb5
fb6
fb7
fb8
fb9
View Code


6. 多任务系统的显示,必须有一个显示管理者,这个管理者就是SurfaceFlinger,它的作用:
(1) 给App提供buffer:通过gralloc向ashmem(匿名内存)申请内存,得到一个fd,通过binder将fd传给某个App,App得到fd‘后进行mmap(fd‘)。
(2) App1 App2 App3 把各自的界面发给SF,它根据Zorder,大小进行合成显示,显示。做两个事情:
① 根据各个界面的Zorder值(由WMS决定)决定前后顺序。
② 把这些排序后的buffer传给HardWare Controller.
(3) 当HWC不能处理(没有HWC或支持的层数不够)时,使用GL(Graphic Library)处理。


7.显示框架概图

技术分享图片

上图中的EGL就是libEGL.so,它的作用是加载硬件GL库或软件GL库。

Anroid上考虑所有硬件资源的情况:有的硬件上没有HWC,有些层数超过了HWC支持的层数,这时软件GL来实现。此时又区分是否有GPU,若有就通过GL来操作GPU,若连GPU也没有,那么只能使用纯软件来实现了。

8. SurfaceFlinger可以使用EGL接口,App也可以使用EGL接口,App使用EGL接口来话一些图形将非常的高效。

 

Android显示系统(1)——显示框架

原文:https://www.cnblogs.com/hellokitty2/p/10885213.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!