I’m experimenting a little to try and reduce the memory footprint of Coldfire Keep. I’ve been testing with a particularly large level.
Using the standard environment textures (a mixture of mostly 1024x1024 and some 512x512), and attaching the Profiler to the running iPhone build, I was seeing these figures:
Used Total = 202MB, Textures = 99MB
For fun, I then set the iOS option to override and change all of the textures to 128x128. When I run the build, I can see that the textures are very pixelated (as expected) so the change must have worked. However, the memory usage reports as:
Used Total = 198MB, Textures = 96MB
We’re talking about maybe 30 textures in total, so I would kind of expect to see a pretty significant drop in memory usage.
This might be a really stupid idea, but do you create (Render)Texture’s during runtime that could cause this issue? Have you tried to take a profiler sample in the detailed profiler view? It actually shows much more useful information than the standard simple memory overview in the profiler. I don’t know about iOS, is the deferred renderer supported there? Maybe the profiler also lists the gbuffer as textures in the profiler?
Otherwise texture size, format, mip maps and the Read/Write enabled settings define the memory-cost of a texture, but if all your 30 textures are 128x128 and lets assume the ‘worst case’ RGBA32, mip maps and Read/Write enabled turned on, they should still only make up about 12812841.3332*30 = 5 MB.