Imagination PowerVR SDK Blog

IPad vertex data performance


#1

I am wondering if anyone can provide some references to the “geometric” performance of the ipad.





I have been running a couple of simple tests in which I am passing just the vertex and normal to the gpu and have very little code in the vertex and fragment programs:





attribute vec4 vertices;


attribute vec4 normals;


uniform mat4 ModelViewProjMatrix;


varying vec3 normal;





void main(void)


{


    gl_Position = ModelViewProjMatrix * vertices;


    normal = normals.xyz;


}





precision highp float;





varying vec3 normal;


varying vec3 v;





void main(void)


{


    gl_FragColor.rgb = normal;


    gl_FragColor.a = 1.0;


}





I am finding that for both interleaved and non interleaved vertex and normal data I am seeing the following frames per second (roughly) in instruments:





18 fps - 100,000 vertices and normals


18 fps - 75,000


19 fps - 60,000


22 fps - 55,000


25 fps - 50,000


25 fps - 45,000


60 fps - 40,000





When I reduce my shader to just use the vertex and to output a solid color (no normal) I find that I get similiar performance.





32 fps - 100,000 vertices


23 fps - 110,000 vertices


18 fps - 120,000 vertices





All of my vertices and normals are stored in vbos as floats. I am drawing with indexed triangle strips which are not in vbos (just yet).





I am wondering if anyone has run similiar tests and has ideas on whether I am hitting a memory limit or whether I should invest some time in moving my indexed strips into vbos or avoid using indices and duplicating the data to improve memory access?





Thanks in advance for any feedback.