【问题标题】:Getting BufferQueue state in systrace在 systrace 中获取 BufferQueue 状态
【发布时间】:2015-01-09 16:55:06
【问题描述】:

我试图更好地了解我的应用程序是如何与 Android 的缓冲系统交互的。具体来说,我想在将帧添加到 SurfaceFlinger 的 BufferQueue 时针对 Vsync 信号进行优化。

我了解在使用 SurfaceView 时,BufferQueue 信息包含在其中:

      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());

【问题讨论】:

  • 我之前已经通读过这个,但是在我正在查看的跟踪中没有看到 SurfaceView...我也启用了所有 systrace 类别。
  • 其实,我只是摸索了一大堆痕迹... youtube没有有SurfaceView,但VLC;你知道为什么会这样吗?
  • 我不知道 youtube 应用程序是使用 SurfaceView 还是 TextureView(请注意拱文档中关于 SV 与 TV 的 cmets)。在应用程序运行时执行adb shell dumpsys SurfaceFlinger 以查看 Windows SurfaceFlinger 和 HWC 知道什么。如果您没有看到视频的单独窗口,那么它可能正在使用 TextureView。查看差异的最简单方法是运行 Grafika 并比较基于 SurfaceView 和基于 TextureView 的视频播放器的结果。 (最简单,因为它们非常简单,并且共享大量代码,因此您可以有意义地并排比较它们。)
  • 这是一个很棒的电话,我会检查并发布我的发现。顺便说一句,感谢您在 Graphika 上所做的工作,这对于更好地理解图形子系统非常有用。

标签: android vsync systrace surfaceflinger


【解决方案1】:

BufferQueue 信息可在 systrace/atrace/ftrace 中找到,但有一些注意事项。

在跟踪中您可能会看到 SurfaceView 调试信息;这将向您显示 BufferQueue 状态(但仅在使用 SurfaceView 时!)。

Binder_4-1188  (  171) [000] ...1 12563.059605: tracing_mark_write: C|171|SurfaceView|1

在这种情况下,BufferQueue = 1

如果您在非 SurfaceView 应用程序(例如 TextureView)中需要此信息,则该数据在包名下仍然可用:

Binder_2-279   (  171) [000] ...1 12668.678680: tracing_mark_write: C|171|com.google.android.youtube/com.google.android.apps.youtube.app.WatchWhileActivity|1

此外,还有多个 BufferQueue,这仅告诉您该 BufferQueue 的状态。

【讨论】:

    猜你喜欢
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2018-07-23
    • 2012-05-28
    • 2010-11-20
    相关资源
    最近更新 更多