The Care and Feeding of the Android GPU 307
bonch writes "Charles Ying argues that Android's UX architecture has serious technical issues because, unlike the iPhone and Windows 7, Android composites the interface in software to retain compatibility with lower-class devices. Additionally, Android runs Java bytecode during animation, and garbage collection blocks the drawing system. Google engineers dismiss the desire for hardware-accelerated compositing and cite more powerful hardware and an avoidance of temporary objects as a solution to the collection pauses, but Ying argues that will just lead to [a lower] average battery life compared to devices like the iPhone."
Re:Java, the original sin (Score:4, Informative)
until the iphone came around RIM and others would have low end, mid and high end devices with different hardware. i've even seen dumb phones run java. it allowed hardware makers to have a ton of devices out there for every niche and cut down on dev costs. Java was cool since you only write the app once.
then the iPhone came and killed that model. the cost of the iphone is something like $2200 over 2 years. Droid is about the same. any other smartphone on AT&T or VZW will be within $200. i tell people to get the best phone they want since the cost is negligible over 2 years.
Feeding the what? (Score:4, Informative)
Let me tell you one thing about that: Java isn't the problem. In my definition of feeding the GPU: triangles/sec, fillrate and OpenGLES objects/sec, Java is just 10% behind a raw C benchmark like glbenchmark 1.1/2.0. They quoted 880kT/s, I managed 750kT/s in non native code. And to get that, you have to carefully feed the GPU with the right batch sizes, don't issue too many state changes, pack things interleaved in the video buffer, don't use dynamic point lights, etc etc. It isn't as bad as an NDS, but the Snapdragon GPU is quite hard to tame.
The problem with using the GPU is that every context switch requires a complete reinitialization of the GL context, even on a PC, alt tabbing into and from fullscreen games takes ages - it's fine when specific applications which requires the speed use it directly, but it's not when going from one activity to another gives you a loading screen.
Animation performance and touch responsiveness? Is that the best he can come up with for such a title? I have no idea what he's talking about, but scrolling the browser works just fine here on a not-so-recent HTC Desire. The only time things break down is when the garbage collector halts everything for a third of a second (see DDMS/logcat messages), and those pauses are reduced to sub 5ms in the new builds. That's tons more useful than rendering surfaces to quads and using OpenGL ES to draw them, and IMO, the Android team made the right decision.
Re:Doesn't Optimizing for GPU Exacerbate Fragmenti (Score:2, Informative)
No, that one game everyone talks about doesn't count; it's not a result of OS fragmentation, but a result of some devices not meeting minimum hardware requirements.
What do you think fragmentation is?
What I find funny about this argument is that the same group of people claiming fragmentation will never be an issue is also the same group of people that claims that PC games aren't as good as they could be (graphically) because they cater to the lowest common denominator.
Re:Lead to... as in the future? (Score:4, Informative)
All the expensive devices uses capacitive screens, nice multitouch ones too.
Resistive is usually the cheap kind.
Java bytecode? (Score:4, Informative)
Additionally, Android runs Java bytecode during animation
Except in the real world, where Android uses a non-Java VM with its own bytecode, and doesn't run Java bytecode at all.