当前位置: 代码迷 >> Android >> Android display架构分析(6)
  详细解决方案

Android display架构分析(6)

热度:38   发布时间:2016-05-01 18:30:19.0
Android display架构分析(六)

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

?

Android display架构分析(六)

?

Surface manager介绍

Note

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

1、Surface managersurface 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++写成的底层实现

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

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

?

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

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

?

?

  相关解决方案