WMS 专项 - Surface 创建与渲染链路

WMS 不仅管理窗口逻辑,还是图形渲染的“中转站”。它协助应用获取绘制所需的画布 —— Surface

1. Surface 的本质

在 Android 中,Surface 对应 SurfaceFlinger 中的一个 Layer。它本质上是一块图形缓冲区队列(BufferQueue)的生产者端。

2. 创建流程:从 WMS 到 SurfaceFlinger

角色 执行动作
应用进程 relayout 请求中设置 SURFACE_CREATING 标志。
WMS 调用 WindowSurfaceController 开始创建流程。
SurfaceControl WMS 与 Native 层的桥梁,向 SurfaceFlinger 申请创建 Layer。
SurfaceFlinger 分配内存缓冲区,并返回句柄。

3. 渲染“三步走”

  1. **申请 (Lock)**:应用通过 lockCanvas() 或 EGL 申请缓冲区。
  2. **绘制 (Draw)**:应用调用 Canvas 或 GPU 绘图指令。
  3. **提交 (Unlock & Post)**:将绘制好的缓冲区入队,通知 SurfaceFlinger 进行合成显示。
, ,