090212 / iPhone Atom

previous | next

Updates on the iPhone Atom Port

One and a while an idea pops into your head which you just cannot ignore. At 256x128 I have enough fill rate in theory to port the nice looking older Atom engine to the iPhone. Nice looking as in this engine,

Yeah my old fragment shaders just sample from 2 textures, and should be easy to port to the fixed function GLES 1.1 texture stages. Last night I worked on the initial modifications, doing a 256x128 framebuffer with an upsample pass to draw to a 480x320 target overlayed with a scan line pattern to hide the upsample. Not bad, will show screen shots later. Had to do a lot of work to insure I didn't either overload the polygon limits (I'm sticking to about 4K quads max a frame) or the overdraw blending limits (at 256x128 I'm attempting to average under 16x) which I have predicted for the iPhone for 30Hz (hoping for 24Hz). Had to remove the motion blur (too fill intensive), had to limit the drawing of large particles (too fill intensive), and had to more aggressively LOD, (a little pop). Building in a dual screen view for development which shows simulated iPhone output along with an overdraw visualization and histogram reduction for an actual real-time fill rate number. This way I can tune the content to insure a good FPS after I get initial tests finished on a real device.

I hope all works out on the actual device. In theory I've got a few things going for me here: no depth buffer (save on bandwidth), what should be awesome texture cache performance (50% samples from very coherent 256x128 framebuffer texture feedback, 50% samples from small texture atlas regions), and one draw call per frame. Assuming that the PowerVR MBX will bucket all overlapping draws to a 32x32 tile at a time, that is 32 tiles total, where each tile gets 50% of samples from about a 16KB region of framebuffer feedback (fractal framebuffer does a 2x reduction so 64x64 source region for tile).

Still working on recoding vectorized SSE code back into basic C to get something to test on the device (yes I will eventually re-vectorize for the iPhone, assuming the port isn't GPU bound!). More later, now my Flower download is 94% complete...