내 응용 프로그램이 Android의 버퍼링 시스템과 상호 작용하는 방식을 더 잘 이해하려고합니다. 특히 Vsync 신호와 관련하여 내 프레임이 SurfaceFlinger의 BufferQueue에 추가 될 때 최적화하고 싶습니다.systrace에서 BufferQueue 상태 가져 오기
내가 그들을 사용하는 경우 BufferQueue 정보가 SurfaceViews 내부에 포함되어 있는지 이해 :
Binder_1-276 ( 171) [001] ...1 34110.301903: tracing_mark_write: C|171|SurfaceView|1
surfaceflinger-171 ( 171) [001] ...1 34110.314233: tracing_mark_write: C|171|SurfaceView|0
내가이 TextureView을 사용하고있는 경우는 어떻습니까? 이 경우에는 SurfaceView 카운터가 없습니다. SurfaceView를 사용하지 않을 때 버퍼 상태를 나타내는 다른 표시기가 있습니까? 응용 프로그램 카운터도 BufferQueue 상태를 나타 냅니까?
Binder_2-279 ( 171) [000] ...1 34169.029234: tracing_mark_write: C|171|com.android.grafika/com.android.grafika.PlayMovieActivity|1
BufferQueueProducer.cpp 및 BufferQueueConsumer.cpp 모두에서 다음 줄이 제안하는 것,하지만 난 가능하면 신임 투표 사용할 수 있습니다
이ATRACE_INT(mCore->mConsumerName.string(), mCore->mQueue.size());
https://source.android.com/devices/graphics/architecture.html#tracking을 참조하십시오. – fadden
이전에 읽었지만 찾고있는 흔적에 SurfaceView가 표시되지 않습니다 ... 나는 모든 systrace 카테고리를 사용할 수있게했습니다. – Shookit
실제로, 나는 더 큰 흔적을 통해 그냥 덮쳤다. youtube는 SurfaceView를 가지고 있지는 않지만 VLC *는 *; 왜 이것이 될 수 있는지 아십니까? – Shookit