王者的某个场景的snapdragon profiler分析结果,利用抓帧在右上角的calculate stats自动分析该帧的内容,以下收集整理做个介绍。
API Calls:调用的api个数,每个dp下都有很多的gl函数调用api
Redundant Calls:冗余的call的数量和占比,占api call的比例
query call:暂无
重度的api的调用情况(以下的api都是相当影响性能的):
Texture Data Updates:贴图数据的update的次数
VBO Data updates:VBO是vertex buffer object,顶点缓冲对象,这个频率比较高,(自己理解)跟cache hit命中相似,说明再频繁更新数据,这个VBO本来就是为了防止频繁更新数据的。
https://blog.csdn.net/dcrmg/article/details/53556664
http://www.opengl-tutorial.org/cn/intermediate-tutorials/tutorial-9-vbo-indexing/
glFinish,glFlush:这两个是强制gl指令执行的命令,以往gl的指令是先放在指令执行队列里面的,这两个api直接强制执行,glFinish破坏了CPU和GPU的并行性,比较耗费。glFlush不详
glCompileShaderCall:字面意思也可以看出这个很耗,编译shader的
glProgramBinaryOES:从持久化Blob中读取数据并直接加载到程序中(存疑)
glLinkProgramCall:编译链接的程序对象的
glReadPixels:把已经绘制好的像素(它可能已经被保存到显卡的显存中)读取到内存,会强制CPU和GPU同步
glRenderbufferstorage call:创建存储空间
Render call:draw call数量,gldrawarray和gldrawelements,glclear不包括
几何体的相关数量:
total vertices一共顶点数
total primitive一般是3角形,片元
后面几个每次draw的顶点数,可以显示对应的顶点利用率
total texture usage:用到的贴图数量
overdraw:overdraw的严重程度