Android性能:Double Buffer双缓冲/Triple Buffer三缓冲丢帧Jank与无丢帧No Jank
双缓冲丢帧与无丢帧:
App 连续两帧生产都超过 Vsync 周期,错过 SurfaceFlinger 合成时机),出现掉帧:
与之对应的trace:
三Buffer轮转情况下,基本不会有这种情况的发生,渲染线程一般在 dequeueBuffer 时,都可以顺利拿到可用的 Buffer (如果 dequeueBuffer 本身耗时那就也会拉长时间)。
三缓冲:
SurfaceFling 消费 FrontBuffer,GPU 使用一个 BackBuffer,CPU使用一个 BackBuffer:
对比,Double Buffer 掉帧两次,Triple Buffer 只掉一帧: