SurfaceFlinger 是 Android 系统中的一个核心服务,负责管理图形缓冲区的合成和屏幕显示,是 Android 图形系统的关键组件。
一、启动流程
SurfaceFlinger 作为一个系统服务,在 Android 启动早期由 init 进程通过 servicemanager 启动。它是作为用户空间的一部分运行的,通常拥有 root 权限。在初始化阶段,SurfaceFlinger 通常还需要完成以下工作:
- 设置其运行环境,包括创建必要的线程(如主线程、处理消息的线程等)、初始化硬件模块(如 GPU 驱动)、以及配置显示设备等。
- 建立 DisplayHardware,SurfaceFlinger 会与硬件抽象层(HAL)交互,通过 HAL 与具体的显示硬件设备进行通信。这包括查询硬件支持的显示模式、分辨率、刷新率等信息,并根据系统配置选择合适的显示模式。
- 创建 ComposerClient,在某些Android版本中,SurfaceFlinger 会通过HWC(Hardware Composer)与图形硬件直接交互。它会创建一