Jump to content

  • Log In with Google      Sign In   
  • Create Account


iPhone Game Optimizations. Ultimate Guide


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
12 replies to this topic

#1 StiX   Members   -  Reputation: 167

Like
11Likes
Like

Posted 09 October 2012 - 05:07 AM

I made a ppt presentation, where i described a lot of optimization best practices. Almost everything i know.
You can find it here.
Feel free to post your proposals, bug reports and feedback ;)
P.S. English isn't my native language, so i will be thankful any comments about my writing style

Sponsor:

#2 frob   Moderators   -  Reputation: 20250

Like
0Likes
Like

Posted 09 October 2012 - 09:41 AM

Interesting reading.
Check out my personal indie blog at bryanwagstaff.com.

#3 L. Spiro   Crossbones+   -  Reputation: 13279

Like
0Likes
Like

Posted 09 October 2012 - 11:04 AM

I have accumulated a vast stockpile of iOS and OpenGL ES 2.0 optimizations over several years and even I learned a few things here.


L. Spiro
It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums

#4 StiX   Members   -  Reputation: 167

Like
0Likes
Like

Posted 09 October 2012 - 11:18 AM

Thanks! I plan to write few articles, that will dive deeper into optimizations described here. Probably one article per weekend or two...

#5 MrDaaark   Members   -  Reputation: 3551

Like
0Likes
Like

Posted 09 October 2012 - 12:26 PM

A few slides were a bit ambiguous. You want to align to 4 bytes manually, or let GPU do it for you?

#6 StiX   Members   -  Reputation: 167

Like
0Likes
Like

Posted 09 October 2012 - 12:38 PM

You have to align them manually, otherwise, driver will do it for you.

#7 jbadams   Senior Staff   -  Reputation: 17969

Like
0Likes
Like

Posted 09 October 2012 - 08:33 PM

Thanks for sharing!

#8 onfu   Members   -  Reputation: 310

Like
0Likes
Like

Posted 11 October 2012 - 07:13 PM

Thanks for sharing this. Really great read.

#9 Ed Welch   Members   -  Reputation: 472

Like
0Likes
Like

Posted 14 October 2012 - 09:01 AM

Thanks for the info Stix, it's quite a gold mine of information.
One tip that sounds a bit funny:
"Driver will pad your NPOT textures to next biggest POT value"
I never heard of anything like that. Just wondering it that's really true.
I did hear of a different bug regarding NPOT. If you have a NPOT width that isn't multiple of 4 it will allocate too much memory.

#10 StiX   Members   -  Reputation: 167

Like
1Likes
Like

Posted 14 October 2012 - 12:33 PM

I meant, that your NPOT texture, that is of 480x480x32, that will eat 700kb of your client memory will be padded to 512x512x32 by the driver and will eat 800kb of "video" memory...

#11 Ed Welch   Members   -  Reputation: 472

Like
0Likes
Like

Posted 14 October 2012 - 02:40 PM

I meant, that your NPOT texture, that is of 480x480x32, that will eat 700kb of your client memory will be padded to 512x512x32 by the driver and will eat 800kb of "video" memory...

That's crazy. I thought the whole purpose of NPOT textures was to save memory.

#12 return0   Members   -  Reputation: 444

Like
0Likes
Like

Posted 18 November 2012 - 05:53 AM

By "still need to sort opaque geometry" you mean to minimise statechange and not to avoid overdraw, right?

#13 L. Spiro   Crossbones+   -  Reputation: 13279

Like
0Likes
Like

Posted 23 November 2012 - 02:22 AM

That is correct. Sort only by shader and textures. If you add depth to that test your FPS will go down.

A few slides were a bit ambiguous. You want to align to 4 bytes manually, or let GPU do it for you?

StiX already answered but I wanted to give some more detail and an idea of how critical this is.
When you call glDrawElements() or glDrawArrays() there are a few things that can cause it to take a slower path which causes it to copy your entire vertex buffer to a new location in “GPU” RAM (of course there is no such thing in a unified memory model but it is easier to think of memory managed by the driver as GPU RAM).
One way is to simply not use VBO’s. Another way is to pass misaligned data (attributes not aligned to 4 bytes).
These copies obviously involve a lot of extra cycles, even though it uses an optimized memcpy() when possible (it can’t when realignment is necessary), and to give you an overhead of just how much that is, on an average game it means the difference between 20 and 45 FPS.

In going into extreme detail, if you benchmark with Time Profiler and you see a function called glDraw[Arrays|Elements]_ACC_ES2Exec() taking a large amount of time, check your vertex alignments.
If you see glDraw[Arrays|Elements]_IMM_ES2Exec() taking a lot of time then your problem is likely the lack of a VBO.


L. Spiro

Edited by L. Spiro, 23 November 2012 - 02:37 AM.

It is amazing how often people try to be unique, and yet they are always trying to make others be like them. - L. Spiro 2011
I spent most of my life learning the courage it takes to go out and get what I want. Now that I have it, I am not sure exactly what it is that I want. - L. Spiro 2013
I went to my local Subway once to find some guy yelling at the staff. When someone finally came to take my order and asked, “May I help you?”, I replied, “Yeah, I’ll have one asshole to go.”
L. Spiro Engine: http://lspiroengine.com
L. Spiro Engine Forums: http://lspiroengine.com/forums




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS