Android图形显示架构概览

图形显示系统作为Android系统核心的子系统,掌握它对于理解Android系统很有帮助,下面从整体上简单介绍图形显示系统的架构,如下图所示。

这个框架只包含了用户空间的图形组件,不涉及底层的显示驱动。框架主要包括以下4个图形组件。

1、图形流生产者

图形流生产者一般指的是各个应用,应用通过不同的方式生产出要显示的图形流。可以通过Skia、OpenGL ES等图形库绘制得到,也可以通过Camera拍摄得到,还可以通过Media Player解码得到。

图形流使用缓冲数据表示,图形流生产者通过Surface可以把缓冲数据直接传递到图形流消费者。

2、窗口位置管理

窗口位置管理由WindowManagerServiceWMS)完成。现代操作系统一般是多任务的系统,支持多个应用同时运行。当每个应用都需要显示界面时,如果没有窗口位置管理,就无法知道该显示哪个应用的界面。

窗口位置管理维护所有窗口的位置信息,包括窗口在屏幕中的位置、宽高、前后顺序、显示状态,这些信息称为窗口元数据(window metadata)。每当一个窗口的元数据发生了变化,会通知图形流消费者。

3、图形流消费者

图形流消费者负责处理图形缓冲,由SurfaceFlinger完成。对于图形显示而言,消费过程是将各个应用生产的图形数据进行汇总,根据窗口管理提供的窗口元数据将多个图形数据合成到帧缓冲(frame buffer)的过程。

帧缓冲保存的内容正是即将在屏幕中显示的图形数据,它通过硬件抽象层传递到显示屏幕。

4、硬件抽象层

硬件抽象层负责与底层驱动交互。硬件抽象层封装了与底层驱动交互的细节,对外提供简单的接口,有了硬件抽象层,图形消费者只需调用相关的接口即可与底层驱动进行交互,无须关心具体的交互细节。

在硬件抽象层有两个与图形显示系统相关的组件,分别是Gralloc和Hardware Composer,前者负责图形缓冲的分配,后者负责将图形缓冲的内容传递到底层驱动显示。

参考:

李先儒,《Android图形显示系统》,清华大学出版社。

相关推荐

  1. Android 下载、显示图片

    2024-04-08 14:56:03       13 阅读
  2. Android 图形渲染和显示系统关系

    2024-04-08 14:56:03       19 阅读
  3. Android应用图标到应用显示过程

    2024-04-08 14:56:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 14:56:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 14:56:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 14:56:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 14:56:03       20 阅读

热门阅读

  1. 面试前端八股文十问十答第八期

    2024-04-08 14:56:03       13 阅读
  2. mysql锁

    mysql锁

    2024-04-08 14:56:03      10 阅读
  3. docker 之 基本命令

    2024-04-08 14:56:03       13 阅读
  4. docker build 构建不出新镜像一直都是老镜像

    2024-04-08 14:56:03       13 阅读
  5. 第十四届蓝桥杯c++组B组做题笔记

    2024-04-08 14:56:03       13 阅读
  6. AJAX

    AJAX

    2024-04-08 14:56:03      17 阅读
  7. 机器学习(Machine Learning)知识点

    2024-04-08 14:56:03       15 阅读