Skip to content
阅读进度

如何理解BufferQueue、缓冲与 fence? ​

返回 View 与显示链路 目录

标准回答 ​

生产者取可写缓冲,完成绘制后提交;消费者获取内容,用完后归还可复用状态。多个缓冲允许生产与消费流水运行,减少双方完全串行等待。

GPU和显示硬件是异步的,fence用于表明某项工作何时完成、缓冲何时可安全读写或复用。提交缓冲或收到对象不代表底层工作已经结束。过早复用可能导致错误,过晚释放则增加等待和内存占用。

缓冲更多不一定延迟更低。队列堆积会使屏幕显示落后于最新输入;实际缓冲数、模式和丢弃行为与生产者、消费者及版本有关,不能说所有BufferQueue永远固定三张。

追问与回答 ​

dequeueBuffer很慢一定是分配太慢吗 ​

还可能是在等消费者释放槽位或相关同步完成。看发生在首次分配还是稳定运行期,并检查消费速度与fence。

参考资料 ​

内容来源 ​

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