gpt4 book ai didi

android - 如何理解 dumpsys SurfaceFlinger

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:38 70 4
gpt4 key购买 nike

是否有任何关于 adb 命令“dumpsys SurfaceFlinger”的输出的文档?

特别是,我想了解 HWC 或 GLES 层类型之间的区别是什么,以及 numHwLayers 是什么意思?

这是我正在谈论的 dumpsys SurfaceFlinger 部分:

  mDebugForceFakeVSync=0
Display[0] : 768x1280, xdpi=319.790009, ydpi=318.744995, refresh=16666667
numHwLayers=5, flags=00000000
type | handle | hints | flags | tr | blend | format | source crop | frame name
------------+----------+----------+----------+----+-------+----------+---------------------------+--------------------------------
GLES | b7e1c440 | 00000002 | 00000000 | 00 | 00100 | 00000002 | [ 334, 56, 1102, 1190] | [ 0, 50, 768, 1184] com.android.systemui.ImageWallpaper
GLES | b7e1d7c8 | 00000002 | 00000000 | 00 | 00105 | 00000001 | [ 0, 50, 768, 1184] | [ 0, 50, 768, 1184] com.android.launcher/com.android.launcher2.Launcher
GLES | b7e701e0 | 00000002 | 00000000 | 00 | 00105 | 00000001 | [ 0, 0, 768, 50] | [ 0, 0, 768, 50] StatusBar
GLES | b7e1df68 | 00000002 | 00000000 | 00 | 00100 | 00000001 | [ 0, 0, 768, 96] | [ 0, 1184, 768, 1280] NavigationBar
FB TARGET | b7dd3ab0 | 00000000 | 00000000 | 00 | 00105 | 00000001 | [ 0, 0, 768, 1280] | [ 0, 0, 768, 1280] HWC_FRAMEBUFFER_TARGET

最佳答案

好的,我有足够的想法来回答我自己的问题,但如果有人有任何其他意见,请在评论中留下。还遇到了一些其他问题,我将在下面注明,但仍不清楚。

首先,下面的链接有助于解释一些关于如何通过 SurfaceFlinger 进行图像渲染和合成的事情: http://source.android.com/devices/graphics.html

如果您在链接中注意到,可以通过两种方式将图像发送到显示器。一种是在将图像发送到显示器之前用 GPU 处理图像,另一种是使用显示器的硬件覆盖绕过 GPU 并将图像直接发送到显示器。后一种方法性能更好,但您只能使用一定数量的图层/叠加层(通常为 4 个)。如果您有更多层,则必须由 GPU 处理。

dumpsys SurfaceFlinger 的部分是我问题的中心,它向您展示了调用 dumpsys 时有多少层,以及这些层是由 Hardware Composer (HWC) 还是 GPU (GLES) 处理的.这解释了 HWC 和 GLES 的含义。此外,numHwLayers 是显示器支持的覆盖层数量(通常为 4 个)。

此外,还有“源裁剪”和“帧”坐标。源裁剪是将要显示的图像部分。例如,如果它是一张跨越多个显示屏的墙纸(想一想当您在屏幕上滑动时您在主屏幕上看到的内容),那么在给定的时刻您将只需要显示该较大墙纸图像的一小部分。这意味着源裁剪只是告诉您目前正在使用整个图像的哪个部分。它的框架部分是源图像的那部分将实际显示在屏幕上的地方。

dumpsys SurfaceFlinger 命令这一部分的代码位于此处:\frameworks\native\services\surfaceflinger\DisplayHardware\HWComposer.cpp

它在一个名为“HWComposer::dump”的函数中

以上回答了我最初的问题,但下面是我注意到的一些额外内容:

看起来组合类型比 HWC 和 GLES 多。在上面提到的代码中,我看到了一个“BACKGROUND”和一个“FB TARGET”复合类型。当您在 adb 中键入“dumpsys SurfaceFlinger”时,FB TARGET 似乎始终存在。我认为 FB Target 只是将完整图像写入的帧缓冲区(请有人确认这一点)。即使设备处于 sleep 状态,您也会看到此 FB TARGET。我不明白的是,这个 BACKGROUND 类型是什么?我什至无法猜测那个。如果您知道这是什么,请发表评论。

谢谢!

关于android - 如何理解 dumpsys SurfaceFlinger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642734/

70 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com