好吧,我有足够的想通了,回答我的问题,但如果任何人有任何额外的输入,请让他们在注释。还有一些额外的东西我会在下面注明,但仍不清楚。
首先,下面的链接有助于解释关于图像渲染和合成是如何发生的通过SurfaceFlinger的几件事情: http://source.android.com/devices/graphics.html
如果您在链接注意到,有两种方法图像发送到显示器。一种是在将图像发送给显示器之前用GPU处理图像,另一种是使用显示器的硬件覆盖层绕过GPU并将图像直接发送到显示器。后一种方法表现更好,但限制在一定数量的图层/叠加层(通常为4)。如果你有更多的图层,必须由GPU来处理。
在我的问题中心的dumpsys SurfaceFlinger的一部分显示了在调用dumpsys的时候有多少图层,以及如果这些图层是由硬件编辑器(HWC)或GPU(GLES )。这解释了HWC和GLES的含义。此外,numHwLayers是显示器支持多少覆盖(通常为4)。
此外,还有“源作物”和“框架”坐标。源作物是将要显示的图像的一部分。例如,如果它是跨越多个显示屏幕的壁纸(想想当你在屏幕上滑动时在主屏幕上看到的内容),那么在给定时刻,您只需要显示该较大壁纸图像的一小部分。这意味着源作物只是告诉你目前你正在使用的整个图像的哪一部分。它的框架部分是源图像的那一部分将实际显示在屏幕上的位置。
为dumpsys SurfaceFlinger的命令的这部分代码位于: \ \框架本地\ SERVICES \ SurfaceFlinger的\ DisplayHardware \ HWComposer.cpp
它在调用的函数 “HWComposer ::倾销”
上面的答案我的原始问题,但下面是我注意到的一些额外的东西:
它看起来有比HWC和GLES更多的组成类型。在上面提到的代码中,我看到了“背景”和“FB目标”复合类型。当您在adb中输入“dumpsys SurfaceFlinger”时,FB TARGET似乎总是存在。我认为FB Target只是完整图像将被写入的帧缓冲区(有人请确认这一点)。即使设备在睡觉,你也会看到这个FB目标。我不明白的是,这是什么背景类型?我甚至无法猜测那一个。如果你知道这是什么,请留下评论。
谢谢!