“SurfaceView”在systrace结果中表示什么?

时间:2014-03-27 00:37:27

标签: android systrace surfaceflinger

在调查一个游戏口吃问题时,我发现游戏中的eglSwapBuffer()和faceflinger中的postFramebuffer(),“SurfaceView”总是有一个延迟,持续时间从0.5ms到10ms,这似乎是随机的,与CPU负载。这究竟代表什么?它与VSYNC显示点有什么关系吗?

http://i.stack.imgur.com/n8MvG.png

1 个答案:

答案 0 :(得分:0)

该行代表BufferQueue。元素的高度(跟踪的可见部分中的0或1)表示队列中存在多少缓冲区。

在这种情况下,它是SurfaceView Surface上显示的图形缓冲区队列。当您的应用调用eglSwapBuffers()时,它会向队列提交缓冲区。当SurfaceFlinger唤醒VSYNC信号时,它会从队列中锁存一个缓冲区(如果有),并将其复合以供下次刷新。

更新:详细描述了BufferQueues及其用途here。附录C提到它们在systrace中的出现。