安卓显示系统介绍

一、安卓显示系统介绍
在这里插入图片描述
内存中开辟一段内存framebuffer用来存储显示数据,Display Controller从framebuffer拿数据发送到LCD上进行显示。应用程序要显示数据时,首先要写数据到framebuffer,然后Display Controller会源源不断的将framebuffer数据送到LCD上进行显示。
只有一个framebuffer的缺点:
(1)当APP写FB(framebuffer)速度慢时,LCD图像变化慢。
(2) 当APP写FB速度不快不慢,就会有闪烁。
改进:
使用多个FB,DisplayController使用FB0时,APP写FB1;DisplayController使用FB1时,APP写FB0;

绘制图片方面:以前在linux中是对在FB中绘制整个空间的数据,如果需要绘制手机界面,步骤如下:状态栏、导航栏、背景、图标;每个界面都需要上述四个步骤

在Android中引入层的概念:状态栏和导航栏为一层、背景为一层、图片为一层,最后把绘制好的层合并,合并使用硬件HardwareComposer
每一层对应一个驱动:/dev/fbx;APP操作某层时,直接写对应的Framebuffer,硬件会自动合并它们。
比如4410的芯片:
在这里插入图片描述
二、显示系统框架初步分析

1.SurfaceFlinger给APP提供buffer

  • 通过gralloc模块向ashmem申请内存。
  • 得到一个fd。
  • 通过binder把fd传给某个app。
  • App再mmap(fd)

2.APP1,2,3把各自的界面发给sufaceflinger

  • 根据各个界面的Z值决定前后顺序(z值由windowmanagerService确定)。
  • 把这些排序后的buffer,传给HardwareComposer,由它合成。

3.当HWC不能处理(由于有的硬件没有hwc或者超出了hwc的层数)时,使用软件GL库来处理。
注意:GL库有硬件的GL库,也有软件的GL库,如下:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值