A test done by the UK mobile games house Distinctive Developments shows that the iPhone has much better 3D rendering capability than the Google/HTC Nexus One. As described by Engadget
, the test showed that the iPhone was able to sustain a frame rate almost one and a half times faster despite the Google phone having a more powerful 1 GHz Snapdragon CPU. The main difference appears to be the lack of optimized code that takes advantage of the ARM processor core.
DD ran the same 3D animation on both devices. Side-by-side pinpoint tests revealed that the iPhone 3GS was able to render 60 frames per second (fps) while the Nexus could only achieve between 30 to 35 fps. As more models were added to the scene, both phones' frame rates dropped until at 8 models the iPhone was running at 29fps on the iPhone and the Nexus at only 21fps, yielding a result of 138% faster frame rate for the iPhone.
In investigating the results, DD first noted that a significant difference is the fact that the Nexus has a much higher resolution screen. Thus, rendering the same models, the Nexus has 2.5 times the number of pixels to draw than the iPhone does. However, after changing the viewport size to 480×320 on the Nexus, the engineers at DD saw an improvement to 40 fps with two models on screen, but the performance was identical at 21 fps with 8 models.
Since the resolution of the screen did not affect the outcome, DD tested the hypothesis that there was a CPU-related bottleneck. By turning off the "animation bone & skinning calculations," the CPU was less stressed, but even so drawing to the full screen on the Nexus with the animation disabled yielded the exact same frame rate count as before. Doing the same test on the iPhone saw the frame rate increase from 20 fps up to 25fps.
The conclusion that the DD engineers drew from their test is that the Nexus is primarily limited by fill-rate processing that was done by the Snapdragon's integrated GPU. Apparently the Android Native Development Kit (NDK) has no access to floating-point instructions in the ARM Neon single instruction multiple data (SIMD) instruction set, which means the CPU is overtaxed by rastering operations and writing pixels to the screen.
As a result, DD is recommending that Google update the NDK to a new version of GCC in order to take better advantage of Neon float-point instructions. They expect that if that's done, Droid and Nexus phones will enjoy an advantage over iPhones, at least until faster (A4
?) processors are added to a future Apple phone.
image via Distinctive Developments