Gou*_*sha 4 android surfaceflinger
在systrace工具中,当我看到由surfaceflinger执行绘图命令和窗口组合时,这真的很奇怪,这是在CPU上运行而不是在GPU上运行.但是根据Romain Guy的谷歌谈话,他们告诉我这个组合和绘图命令的执行是在GPU上执行的.我的设备有GPU,即使这样他们也在使用CPU核心.我认为如果CPU核心是免费的,那么它使用CPU核心,否则它使用GPU.
表面组合有三种方法:
screenrecord
.在某些设备上,如果没有更新任何表面,硬件编写器将使用GPU组合曲面,然后只显示单个缓冲区.如果没有任何变化,这比覆盖平面更有带宽效率(因为你不必遍历所有表面,这意味着你需要更少的内存带宽,这意味着你可以降低时间,这意味着你可以使用更少的功率).它究竟在做什么因设备而异,并随着时间的推移而发展.如果你想确切地看到它在做什么,试试吧adb shell dumpsys SurfaceFlinger
.硬件作曲家的细节(靠近底部)是最有趣的部分.在运行命令时,您可能需要在设备显示屏上主动滚动某些内容以避免GLES优化.
我猜你在systrace中看到的是prepare()
和set()
调用和缓冲区管理,而不是实际的像素组成.
更新2:现在已经在Android系统级图形文档中概述了整个系统.
归档时间: |
|
查看次数: |
5185 次 |
最近记录: |