外观
如何理解BufferQueue、缓冲与 fence?
标准回答
生产者取可写缓冲,完成绘制后提交;消费者获取内容,用完后归还可复用状态。多个缓冲允许生产与消费流水运行,减少双方完全串行等待。
GPU和显示硬件是异步的,fence用于表明某项工作何时完成、缓冲何时可安全读写或复用。提交缓冲或收到对象不代表底层工作已经结束。过早复用可能导致错误,过晚释放则增加等待和内存占用。
缓冲更多不一定延迟更低。队列堆积会使屏幕显示落后于最新输入;实际缓冲数、模式和丢弃行为与生产者、消费者及版本有关,不能说所有BufferQueue永远固定三张。
追问与回答
dequeueBuffer很慢一定是分配太慢吗
还可能是在等消费者释放槽位或相关同步完成。看发生在首次分配还是稳定运行期,并检查消费速度与fence。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q040