"首先解释下Composition,就是合成了
你所看到的显示界面,都是由多个图层合成起来的,比如启动器界面,一般就是3层:一层背景壁纸,一层应用图标,还有一层系统通知栏
所以GPU做的时候,就是先读取一层壁纸,再读取一层应用图标,再读取系统通知栏,最后写入到帧缓存:总共就是三层读,一层写。这些读写操作,就会消耗系统的RAM带宽——特别是一些变态应用,典型的比如地图,往往会有很多层,甚至7-8层,这时候带宽跟不上,就不能保证60FPS,就会有卡顿的感觉。"
而1080P下,一层图层,32bit色,计算就是 1920*1080*32/8/1024=8MB (实际是7.9多,求个约数,下同)
那么1层读1层写,每帧需要16MB,达到60FPS需要0.96GB/S带宽
同理,4层读1层写,达到60FPS需要2.4GB/S带宽
8层读1层写,达到60FPS需要4.32GB/S带宽
720P下,一层图层,32bit色,计算就是1280*720*32/8/1024=3.6MB
那么1层读1层写,60FPS,需要0.432GB/S带宽
4层读1层写,60FPS,需要1.08GB/S带宽
8层读1层写,60FPS,需要1.944GB/S带宽
你所看到的显示界面,都是由多个图层合成起来的,比如启动器界面,一般就是3层:一层背景壁纸,一层应用图标,还有一层系统通知栏
所以GPU做的时候,就是先读取一层壁纸,再读取一层应用图标,再读取系统通知栏,最后写入到帧缓存:总共就是三层读,一层写。这些读写操作,就会消耗系统的RAM带宽——特别是一些变态应用,典型的比如地图,往往会有很多层,甚至7-8层,这时候带宽跟不上,就不能保证60FPS,就会有卡顿的感觉。"
而1080P下,一层图层,32bit色,计算就是 1920*1080*32/8/1024=8MB (实际是7.9多,求个约数,下同)
那么1层读1层写,每帧需要16MB,达到60FPS需要0.96GB/S带宽
同理,4层读1层写,达到60FPS需要2.4GB/S带宽
8层读1层写,达到60FPS需要4.32GB/S带宽
720P下,一层图层,32bit色,计算就是1280*720*32/8/1024=3.6MB
那么1层读1层写,60FPS,需要0.432GB/S带宽
4层读1层写,60FPS,需要1.08GB/S带宽
8层读1层写,60FPS,需要1.944GB/S带宽