Android(安卓)display架构分析(六)
转http://hi.baidu.com/leowenj/blog/item/78c068dc443c961f48540361.html
Android display架构分析(六)
Surface manager 介绍
Note :
本部分介绍的完全是用户空间显示部分的架构,与 kernel 并没有直接的联系,主要是 JNI 以下到 HAL 以上的部分。
1、 Surface manager ( surface flinger )简介
Surface manager 是用户空间中framework 下libraries 中负责显示相关的一个模块。如下:
当系统 同时执行多个应用程序时, Surface Manager 会负责管理显示与存取操作间的互动,另外也负责将 2D 绘图与 3D 绘图进行显示上的合成。
surface manager 可以准备一块 surface (可以看作一个layer ),把 surface 的 fd ( 一块内存) 传给一个 app ,让 app 可以在上面作画。 典型应用如下:
2、Surface manager 架构分析
Android 中的图形系统采用 Client/Server 架构 ,如下:
Client 端 :应用程序相关部分。 代码分为两部分,一部分是由 Java 提供的供应用使用的 api, 另一部分则是由 c++ 写成的底层实现 。
Server 端 : 即 SurfaceFlinger ,负责合成并送入buffer 显示。其 主要由 c++ 代码编写而成。
Client 和Server 之前通过Binder 的IPC 方式进行通信,总体结构图如下:
如上图所示, Surface 的 client 部分其实是提供给各应用程序进行画图操作的一个桥梁,该桥梁通过 binder 通向 server 端的 Surfaceflinger , Surfaceflinger 负责合成各个 surface ,然后把 buffer 传送到 framebuffer 端进行底层显示。其中每个 surface 对应 2 个 buffer , 一个front buffer, 一个back buffer ,更新时,数据更新在back buffer 上,需要显示时,则将back buffer 和front buffer 互换。
下一部分我们重点研究一下Surfaceflinger 。
更多相关文章
- Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
- 杂谈-Android源码(AMS、PMS、WMS)及部分原理机制
- Android中ActivityLifecycleCallbacks监听Activity们的生命周期
- Android(安卓)Content Provider的共享数据更新通知机制分析
- 避免OOM的一种方式
- Android(安卓)Glide传Context引发的非法参数异常那些小坑
- Android应用程序避免Context相关的内存泄露的方法
- Android开发点滴(13) -- Android数据库随同Android应用一同发布
- 运行android程序访问网络,出错,需要加上权限