Chinaunix首页 | 论坛 | 博客
  • 博客访问: 307417
  • 博文数量: 27
  • 博客积分: 1933
  • 博客等级: 上尉
  • 技术积分: 884
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-04 23:34
文章分类

全部博文(27)

文章存档

2013年(3)

2011年(24)

分类: LINUX

2011-10-18 15:20:50

本部分介绍的完全是用户空间显示部分的架构,与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。

阅读(8267) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~