Thanks for taking your time to explain these things, it can be quite frustrating to just not understand why they don't just enable GPU acceleration. It seems so simple. But of course things are rarely as simple as they seem.
What I don't understand though, is why these optimizations can't just be contained in the driver for a specific GPU? I presume neither HTC nor Samsung produce their own GPUs, but license a driver from an SoC-manufacturer (or so I've heard). Why can't these optimizations just all be put in the driver, thus letting the GPU manufacturer worry about these optimizations?
Or are you talking about higher-level optimizations, ie. even enabling GPU acceleration in Skia, for example? As I understand it, Skia has so far been software (CPU) only, so if HTC or Samsung would like to use a GPU to render the 2D user interface of Android, they'd have to dig inside Skia and change the code to take advantage of the GPU - are these the optimizations you are talking about?
Yes, I think what's happening appears to be what you are describing in the last paragraph.
I'm not sure if the driver model might produce the performance you need. That's why Android appears to go increasingly "native". Let's put it in another way, WP7 has a provision to create native apps that directly access the hardware.
Is this what the manufacturers are waiting for, so they don't have to go through all the hoops of enabling GPU acceleration themselves?
The SOC makers definitely would have their reference code.
The case of Android has been like this. It has been a big advantage for the SOC manufacturer if the latest Android version appeared on it first.
If Android 2.x appears on SOC Chip A, Chip A has the initial advantage, since it would take some time to port, test and debug Android 2.x on Chip B and C. Do people ever wonder why an Android port sometimes take longer for one chipset? It has nothing to do with the UI like Sense or Touchwiz. Its the whole job of porting Android to all the different chipsets.
Android 1.0 to 1.6
First appearance - Qualcomm MSM7200 series
Android 2.0
First appearance - OMAP 3630 (CPU used on Droid)
Android 2.1
First appearance - Qualcomm MSM8250 Snapdragon (Nexus One)
Android 2.2
First appearance - Qualcomm MSM8250 Snapdragon
Android 2.3
First appearance - Samsung Hummingbird
Android 2.4 (Honeycomb)
Likely first appearance - nVidia Tegra 2
When the first Android version appears for one SOC maker, the others gets a little ticked because of it, but grumble is all they do and just work on porting the new Android version to their chipsets as soon as they can.
So Google tries not to create as much hardware dependencies into Android to make it as easier and quicker to port into different chipsets. The FRG83D Froyo on the Nexus One is practically the same that is being ported to Droid and the MyTouch 3G/HTC Magic.
This leaves the SOC makers to write references for these optimizations so the handset makers can follow and adopt to their own UIs.
That has been the case until Android 2.2.
Android 2.3, Google broke its own rules and did hardware optimizations to the Hummingbird / PowerSGX 540. Does it surprise you the Gingerbread port will take a while to appear on the Qualcomm Snapdragon powered Nexus One? I'm pretty sure Qualcomm, nVidia and Texas Instruments (maker of the OMAPs) is pretty miffed with that but in the end, all will just suck it up.
But the customers (who don't really know what's going on behind the scenes and what's really good for them) want optimizations and you get optimizations but as a result don't expect the latest Android version to come their way just as quickly.