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 是用户空间中frameworklibraries 中负责显示相关的一个模块。如下:

Android display架构分析(六)

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

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

Android display架构分析(六)
Android display架构分析(六)

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

 

 

你可能感兴趣的:(android)