[Android禅修之路] Android 图形系统开篇

语言: CN / TW / HK

theme: channing-cyan

[Android禅修之路] 图形系统开篇

一 概述

Android 的图形系统可以说是 Android 中最重要的系统之一, 它包含了 Android 系统的显示, 刷新等机制, 贯穿了 Android 的硬件层 和 native 层, 以及应用层。在我们探究 Android 的刷新机制,卡顿原因,显示原理等等方面时,图形系统都是必须了解的。

要想学习这样一个系统,必然不可能一蹴而就,所以本文,也将作为图形系统源码研究的大纲和目录。当然,虽说是大纲和目录,但是实际上也是边写边改,因为很多的观点随着学习的不断深入都会发生改变。

1.1 学习方法

Android 的图形系统是一个非常复杂的系统,在探究 Android 图形系统的时候,经常会遇到一些机制(或者说是知识点),如果不了解这些机制,就会对系统中的一些代码似懂非懂。但是如果深入的研究这些机制,又容易陷入浩瀚的源码海洋中,迷失最初的目标。

基于上述原因,所以我决定在阅读源码的时候,按照以下几个步骤进行

  1. 先制定每一步想要学习的目标,针对制定的目标理清图形系统的主要流程。
  2. 了解制定目标的主要流程以及一些细节。但对于其中的涉及到其他较为复杂的机制的部分,先假设自己已经了解。
  3. 针对不同的机制点,单独研究,了解这些机制的工作原理。
  4. 将已经熟悉了的机制带入系统的工作流程,巩固之前的学习。

鉴于以上的学习步骤,对于系统源码的研究,必然不可能只是一遍而过,更多时候会是先学习A点而忽略B点,学习完A点之后再学习B点,最后学习完B点之后再把B带入A中再学一遍,这将会是以上螺旋上升的过程。

二 目录

2.1 SurfaceFlinger 工作原理

SurfaceFlinger的启动过程:SurfaceFlinger是 Android 系统中非常重要的一个服务,Android 系统会在启动系统服务的时候启动它。所以我们需要了解 SurfaceFlinger 是如何启动的,即它的启动过程

SurfaceFlinger的工作原理:SurfaceFlinger 在启动之后,就会启动它的工作线程。我们需要了解 SurfaceFlinger 是如何工作的,它的工作流程和原理是什么。

2.2 SurfaceFlinger 中的机制解读

解读 Vsync 机制:Vsync 机制是 Android 系统刷新机制中非常重要的机制之一,它是由硬件产生的,最后传递到软件的。那么它是如何产生的,如何传递的。这其中的涉及到的硬件有哪些,软件又有哪些?

Android 系统的刷新涉及到多个进程,甚至还涉及到了CPU和GPU,那么这些图像数据是如何保存的,图像的数据比一般的数据大很多,是通过什么方式传递的呢?

多个进程同时使用这些图像数据的时候,又是如何同步的呢?

解读 Fence 同步机制:Android 图形系统中,同步就是通过 Fence 机制完成的。\

解读 GraphicBuffer:图像就是通过 GraphicBuffer 保存的。

未完待续...