Armv6 armv7 big performance difference?

Hi,

Please forgive me if I have missed an explanation in the docs - I couldn’t find any.
Basically I have noticed a substantial difference in performance on the ipad depending on whether I build for opengl es 1.1 or 2.0. This is with the same standard mobile shaders and without doing anything fancy.

Does anyone know:

  1. Why is there a difference in performance. If anything shouldn’t a build for armv7 execute faster on the ipad?

  2. Can I adjust the project to execute faster with armv7 in any way?

  3. Is it safe (as in passing review) to build for armv6 only?

I would very much appreciate some info on the build option and how unity performance is affected? If this is indeed documented, please point me in the right direction.

Many thanks in advance!
Cheers,
Dan

  1. Because ARMV7 means pure shader which works pretty different. Also ARMV7 compilation means that it runs in the real cpu code for ipad not the pre 3GS cpu code basically.

  2. yes don’t use ARMV7 ogl es 2.0 unless you wrote shaders that utilize this really.

  3. Yes it is

Hi!

Many thanks for your reply!

Does this mean that Unity in its current shape - and specifically the stock shaders - is not well suited for targeting armv7? You need to build custom armv7 specific shaders to get good performance?

Also, is all this explained in docs somewhere? I would like to read up on this and related issues to ensure I am going about things the right way. :slight_smile:
Last but not least, where can I look for official word that armv6 is “legal” for distribution? Not that I don’t trust you, but it would be good to see this officially in black and white. I will have to take a closer look at the Apple guidelines I suspect… :slight_smile:

Again - many thanks!
Cheers,
Dan

I can confirm what dreamora say’s about ARM 6. We just released updates to our game, adding iPad and iPhone 4 native resolution. Submitted using ARM 6 alone and both the lite and full versions went live yesterday.

Great - thanks! Good luck with your release! Please note that I in no way doubt dreamoras information - I am merely keen to know if there is an official place where information such as this is collected?

Cheers,
Daniel

The related part on shader is in the docs yes (GLSL shader writting)

As long as apple allows you to distribute applications for iphone 2G, 3G and the corresponding itouches, distributing ARMV6 will remain legal :slight_smile: (unlike iOS 2.x as deployment target which is not allowed since 4.0 anymore)

Again, thanks!
But regardless of “legalities” I assume we will all want to transition at some point to armv7 since (and again I assume) it will performance better if properly done? If done in the short term it would require writing our own shaders from scratch since the stock unity shaders aren’t suitable for opengl es 2.0?

Sorry for all the ignorant questions - just trying to understand exactly what the issue is. :slight_smile:
Cheers,
Dan

The exact issue can not be defined as we don’t have the engine sources and can’t say much about your explicit setup.

generally its likely a combination of different things.

at the time you would just not go to ARMV7 unless you want programmable pipeline as you don’t get anything from doing it otherwise, aside of making the minimum size of your project to something around 30mb without a single asset

I understand. What I find hardest to wrap my head around at the moment is the big speed difference. I would have thought that a unity build would have been quite well optimized for armv7 with stock shaders, but this seems not to be the case. On the other hand armv7 support in Unity is relatively new altogether?

Btw, the current test project is really simple. Few polys and about 16 drawcalls, stock shaders. Fill rate is being tested a bit (some instances of larger transparent sprites), but again nothing extreme in any way.

Cheers,
Dan

OpenGL ES 2 is a different beast from the previous version. The newer builds of Unity 3 do a great job at optimising the existing shaders to work quite efficiently, but unless you’re specifically using custom shaders, arm6 is the way to go.