- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
是否有任何关于 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/
谁能告诉我 adb shell dumpsys 在内部是如何工作的?我想这个命令以某种方式读取了 /proc fs,但这只是我的理解。 好像是android sdk 19以后,不支持下面的命令- ad
我想知道到底是怎么回事 adb shell dumpsys 工作原理以及它是如何在 AOSP 中实现的。到目前为止,我的理解是大多数系统服务都实现了 @Override public void dum
在已获得 root 权限的 Android 手机上进行了大量测试后,我将为我客户的应用程序切换到 iOS。 iOS 中是否有类似 dumpsys 的实用程序,它提供与连接的 Wifi 网络、蜂窝连接、
每个 android 设备的 dumpsys 输出格式是否完全相同?在应用程序中读取转储服务的输出并执行精确的字符串匹配以解析返回的数据是否安全? 最佳答案 不要期望格式 100% 相同。不同的 An
我有一个应用程序,我在其中创建一个进程并调用 dumpsys telephony.registry 命令来获取有关移动网络状态的信息。 String[] cmds={"dumpsys telephon
如何编写自己的代码来使用“meminfo”系统服务?或者如何添加自己的系统服务?我的目标是在应用程序运行时自动采样内存使用数据,并分析数据事后分析。 最佳答案 How can I write my o
我正在 SurfaceFlinger 上开展一个项目。那么,“source-crop”区域何时不同于“frame”区域(这些值出现在 dumpsys SurfaceFlinger 输出中)。换句话说,
在这个命令之后 adb shell dumpsys activity p | grep 我得到这个输出: *APP* UID 10060 ProcessRecord{41941528 23873:c
我正在寻找 android shell 中命令“dumpsys cpuinfo”的结果的解释。 :# dumpsys cpuinfo Load: 17.78 / 16.97 / 16.29 CPU u
当我在 android 4.2 上运行“adb shell dumpsys meminfo”时,我得到的结果如下 Shared Pr
是否有任何关于 adb 命令“dumpsys SurfaceFlinger”的输出的文档? 特别是,我想了解 HWC 或 GLES 层类型之间的区别是什么,以及 numHwLayers 是什么意思?
我真的很困惑 dumpsys 生成的以下输出: 数据库 pgsz dbsz Lookaside(b) cache Dbname 1 3176
adb shell dumsys meminfo返回的内存是kB还是KB? 哪里: kB = 1000 bytes KB = 1024 bytes 最佳答案 它是 KB(1024 字节)或 ki
我在使用 awk 从日志文件输出特定列时遇到问题。 输入:文件中包含多个快照的 dumpsys meminfo 日志尝试的输出:PSS、堆大小、堆分配和堆空闲总计。 小旁注:我正在用 js 数组语法格
我正在使用 appium用于我的 Android 设备和 java 代码之间的交互。我遇到的问题是,在某些设备(包括模拟器)上按下主页按钮后,appium 返回不正确的当前 Activity (它返回
我正在寻找一种解决方案来从 adb 访问我们应用程序的内部状态以进行调试。我经常使用 dumpsys 来获取系统服务的内部状态,所以现在我想知道我是否可以将我们的应用程序的接口(interface)公
关于“adb shell dumpsys meminfo”的输出有很多问题,比如这个: adb shell dumpsys meminfo - What is the meaning of each
我正在使用命令“dumpsys gfxinfo package.name”来记录我的应用程序的性能数据。我注意到它只能为“绘制”、“处理”和“执行”记录 128 帧。我想自动运行应用程序几分钟左右并记
在使用Android adb shell时,我对procrank和dumpsys meminfo之间的区别感到困惑。我的应用程序的Pss,由command-procrank报告,总是高于dumpsys
正如我在问题中提到的,Lost RAM 出现在 Dumpsys meminfo 中。 出现在 Dumpsys 内存信息中的“Lost RAM”背后的概念是什么? 它在 Kitkat 中的意义是什么。如
我是一名优秀的程序员,十分优秀!