Imagination PowerVR SDK Blog

Performance of glDrawElementsInstanced on iPhone 6 / GX6450



We are writing a benchmark program for OpenGL and have noticed a curiosity on the iPhone 6. Among other things we draw a bunch of trees and flowers, the same models but with different model matrices. If glDrawElementsInstanced is available we use it and if not we do it the old fashioned way with glDrawElements, one call for each tree and flower.

Most systems seem to benefit quite a lot from the instanced approach, but on the iPhone 6 (and the iPad Mini 2) we see a clear degrade in performance when drawing with instanced. (Systems that respond well includes both desktop, laptop and various android systems).

Is this a known issue or might we be doing something wrong, are there some special tricks to use or should be simply avoid instanced drawing on these platforms?




From your explanation, it seems this issue may be specific to Apple’s graphics driver. If you are able to reproduce the issue on PowerVR Android devices, please let me know and I’ll discuss the problem with our graphics driver team. If however the issue only occurs on iOS, I would recommend contacting Apple for assistance.



Hi Joe, thanks for the reply!

This might in deed be a flaw in the apple drivers. I have posted this issue also in the apple dev forum (in my experience it is very unusual for OEMs to write their own low level drivers), hoping for a respons from that end.

I take it then that from your perspective performance should benefit from instanced drawing and this is a bit strange. (If I manage to find a PowerVR android device I will test, of course)



Yes - I would expect instancing to be more efficient.

[blockquote]in my experience it is very unusual for OEMs to write their own low level drivers[/blockquote]
Each of our customers choose how much/how little the driver is customised for their devices. Some companies have more resources for this work than others.