Skip to content
阅读进度

Surface SurfaceControl BufferQueue 和 fence 分别是什么? ​

返回 Framework 与系统服务 目录

标准回答 ​

Surface 通常代表内容生产端可以绘制或提交缓冲区的目标;SurfaceControl 管理合成图层及其位置、缩放、透明度、裁剪、父子关系等状态。BufferQueue 在生产者和消费者间协调缓冲区的申请、排队、获取与复用,缓冲区可以通过句柄共享,传递并不是每帧把整张图复制到系统服务。fence 用于同步异步 GPU 和显示硬件工作,避免消费者读取尚未写完的内容,或生产者过早复用仍在使用的缓冲区。现代版本还会涉及 BLASTBufferQueue 和事务内提交缓冲区,具体实现要看分支。

延伸追问 ​

acquire fence 和 release fence 对应不同使用阶段;Fence 的等待可能发生在下游,不应只看主线程耗时。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。