Chinaunix首页 | 论坛 | 博客
  • 博客访问: 257563
  • 博文数量: 69
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 900
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-07 16:35
文章分类

全部博文(69)

文章存档

2011年(1)

2010年(68)

我的朋友

分类: LINUX

2010-08-02 22:09:04

Note

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

surface flinger)简介

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


    当系统同时执行多个应用程序时,Surface Manager会负责管理显示与存取操作间的互动,另外也负责将2D绘图与3D绘图进行显示上的合成。

    surface manager 可以准备一块 surface(可以看作一个layer),把 surface fd (一块内存) 传给一个 app,让 app 可以在上面作画。 典型应用如下:



2、架构分析

Android中的图形系统采用Client/Server架构,如下:

Client:应用程序相关部分。代码分为两部分,一部分是由Java提供的供应用使用的api,另一部分则是由c++写成的底层实现

ServerSurfaceFlinger,负责合成并送入buffer显示。其主要由c++代码编写而成。

ClientServer之前通过BinderIPC方式进行通信,总体结构图如下:

    如上图所示,Surfaceclient部分其实是提供给各应用程序进行画图操作的一个桥梁,该桥梁通过binder通向server端的SurfaceflingerSurfaceflinger负责合成各个surface,然后把buffer传送到framebuffer端进行底层显示。其中每个surface对应2buffer一个front buffer, 一个back buffer,更新时,数据更新在back buffer上,需要显示时,则将back bufferfront buffer互换。

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

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