转http://hi.baidu.com/leowenj/blog/item/78c068dc443c961f48540361.html

Android display架构分析(六)

Surface manager 介绍

Note

本部分介绍的完全是用户空间显示部分的架构,与 kernel 并没有直接的联系,主要是 JNI 以下到 HAL 以上的部分。

1、 Surface manager surface flinger )简介

Surface manager 是用户空间中frameworklibraries 中负责显示相关的一个模块。如下:


当系统 同时执行多个应用程序时, 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 bufferfront buffer 互换。

下一部分我们重点研究一下Surfaceflinger

更多相关文章

  1. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  2. 杂谈-Android源码(AMS、PMS、WMS)及部分原理机制
  3. Android中ActivityLifecycleCallbacks监听Activity们的生命周期
  4. Android(安卓)Content Provider的共享数据更新通知机制分析
  5. 避免OOM的一种方式
  6. Android(安卓)Glide传Context引发的非法参数异常那些小坑
  7. Android应用程序避免Context相关的内存泄露的方法
  8. Android开发点滴(13) -- Android数据库随同Android应用一同发布
  9. 运行android程序访问网络,出错,需要加上权限

随机推荐

  1. 美国质疑海外版抖音数据回传中国;华为补助
  2. Uber的合成训练数据将深度学习的速度提升
  3. 华为海外开发者可拿9成广告收入,谷歌却单
  4. 「回顾」AI如何让广告投放进入“自动驾驶
  5. php+jquery实现登录验证
  6. Win10系统隐藏此电脑中的3D对象等七个文
  7. 「回顾」机器学习与推荐系统实践
  8. 什么是PHP单例模式?
  9. 桌面文件误删咋恢复?
  10. 主流: KHB法测度中介效应, 无论线性还是