在调查一个游戏口吃问题时,我发现游戏中的eglSwapBuffer()和faceflinger中的postFramebuffer(),“SurfaceView”总是有一个延迟,持续时间从0.5ms到10ms,这似乎是随机的,与CPU负载。这究竟代表什么?它与VSYNC显示点有什么关系吗?
答案 0 :(得分:0)
该行代表BufferQueue。元素的高度(跟踪的可见部分中的0或1)表示队列中存在多少缓冲区。
在这种情况下,它是SurfaceView Surface上显示的图形缓冲区队列。当您的应用调用eglSwapBuffers()
时,它会向队列提交缓冲区。当SurfaceFlinger唤醒VSYNC信号时,它会从队列中锁存一个缓冲区(如果有),并将其复合以供下次刷新。
更新:详细描述了BufferQueues及其用途here。附录C提到它们在systrace中的出现。