外观
Surface SurfaceControl BufferQueue 和 fence 分别是什么?
标准回答
Surface 通常代表内容生产端可以绘制或提交缓冲区的目标;SurfaceControl 管理合成图层及其位置、缩放、透明度、裁剪、父子关系等状态。BufferQueue 在生产者和消费者间协调缓冲区的申请、排队、获取与复用,缓冲区可以通过句柄共享,传递并不是每帧把整张图复制到系统服务。fence 用于同步异步 GPU 和显示硬件工作,避免消费者读取尚未写完的内容,或生产者过早复用仍在使用的缓冲区。现代版本还会涉及 BLASTBufferQueue 和事务内提交缓冲区,具体实现要看分支。
延伸追问
acquire fence 和 release fence 对应不同使用阶段;Fence 的等待可能发生在下游,不应只看主线程耗时。
内容来源
- Android Framework 知识手册 · 原条目
2-9