Imagination PowerVR SDK Blog

IPad vertex data performance


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 =;


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.