2014-03-27 2 views
0

게임 플레이의 끊김 현상을 조사 할 때 게임에서 나오는 eglSwapBuffer()와 서페이스 플링어에서 postFramebuffer()를 발견했습니다. "SurfaceView"의 지연 시간은 0.5ms에서 10ms 사이인데, 이는 CPU에 무작위 적이며 관련성이없는 것으로 보입니다 하중. 이것이 실제로 무엇을 나타 냅니까? 그것은 VSYNC 포인트와 관련이 있습니까?systrace 결과에서 "SurfaceView"는 무엇을 나타 냅니까?

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

답변

0

그 행은 BufferQueue를 나타낸다. 요소의 높이 (추적의 가시 부분에있는 0 또는 1)는 큐에 버퍼의 수를 나타냅니다.

이 경우, SurfaceView Surface에 표시되는 그래픽 버퍼의 대기열입니다. 앱이 eglSwapBuffers()을 호출하면 버퍼에 대기열을 전송합니다. SurfaceFlinger가 VSYNC 신호에서 깨어날 때 대기열에서 버퍼를 사용할 수있는 경우 래치하고 다음 새로 고침을 위해 버퍼를 합성합니다.

업데이트 : BufferQueues 및 그 사용에 대한 자세한 내용은 here입니다. 부록 C는 systrace에서의 모양을 설명합니다.