首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解哑巴SurfaceFlinger

如何理解哑巴SurfaceFlinger
EN

Stack Overflow用户
提问于 2014-02-08 14:20:36
回答 2查看 20.6K关注 0票数 7

有没有关于adb命令"dumpsys“输出的文档?

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

下面是我正在讨论的dumpsys部分:

代码语言:javascript
复制
  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
EN

回答 2

Stack Overflow用户

发布于 2014-02-09 03:26:53

好的,我已经想出了足够的答案来回答我自己的问题,但是如果有人有任何额外的意见,请在评论中留言。还有一些额外的东西,我将在下面注意到,这些东西仍然不清楚。

首先,下面的链接帮助解释了一些关于图像渲染和合成是如何通过SurfaceFlinger实现的:http://source.android.com/devices/graphics.html

如果您在链接中注意到,有两种方式将图像发送到显示器。一种是在将图像发送到显示器之前用GPU对其进行处理,另一种是使用显示器的硬件覆盖来绕过GPU直接将图像发送到显示器。后一种方法的性能更好,但您仅限于一定数量的层/覆盖(通常为4个)。如果你有更多的层,就必须由GPU来处理。

在我的问题的中心,dumpsys的一部分显示了调用dumpsys时有多少层,以及这些层是由硬件编写器(HWC)还是GPU (GLES)处理的。

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

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

在上面提到的代码中,我看到了一个“背景”和一个"FB目标“复合类型。当你在adb中输入"dumpsys“时,FB目标似乎总是存在。我认为FB Target仅仅是完整图像将被写入的帧缓冲区(请确认一下)。

谢谢!

票数 15
EN

Stack Overflow用户

发布于 2016-05-18 14:57:52

我可以在上面的评论中添加一些东西。在dumpsys输出中,我们可以看到类型是GLES for imagewallpaper,luncher,status bar,导航栏,这意味着这些图层缓冲区由表面flinger和复合处理,并渲染到FB目标中。

谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21642734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档