Measuring GPU performance?

I’m porting our company’s cross-platform game engine to the iPhone, and I’m nearly done with features, so I’d like to begin profiling.

How does one measure the performance of the MBX Lite GPU under OpenGL ES 1.1? On other OpenGL platforms, I used fences to mark different areas of the frame, and a separate thread to test when those fences were passed and generating timing information for them. But the MBX Lite doesn’t appear to have fences, and given its TBDR nature, I’m not sure fences would even make sense.

Any suggestion for how I should measure GPU performance separately from CPU performance? Even a very coarse granularity, like the time it takes to render each frame (i.e. no intra-frame times), would be fine.


As you mention, you can not test performance imposing fences to the application. The whole frame will be stored and processed later so you will measuring only the time the geometry data take to be submitted.

To measure performance of the different parts of the graphic core we disable different features and compare to the time the full application takes. For example, disabling all calls to glDraw you will have the CPU time. Rendering all geometry off screen you will have the vertex processing + CPU time, etc.

Hope this helps.



FWIW Gremedy have a version of gDEBugger out for the iPhone.

It’s currently in open Beta.

It is Simulator only at the moment, but they plan to offer live profiling on the device.

Even using it on the Simulator it can give you some insight into things that are less clear simply from your code.