There’s been much fervor regarding Google’s inclusion of “full” hardware acceleration into Android 4.0 Ice Cream Sandwich. And this is with good reason—the 2D software rendering in Android 2.x made for a noticeably less smooth experience than competing OSes.
While the inclusion of a greater extent of hardware acceleration into the OS is a wonderful thing, there are many misconceptions surrounding what it brings to the table. First off, Android has had elements of hardware acceleration for tasks such as window compositing for years. This means that all window animations were also always hardware accelerated.
Unlike window compositing, drawing inside of a window has traditionally been accomplished by the CPU in Android 2.x and below. In Android 3.0 Honeycomb, however, these functions could be offloaded to the device’s GPU as long as android:hardwareAccelerated=”true” was placed in the application’s manifest. The only difference with Android 4.0 is that ICS turns on hardware acceleration by default as long as API level 14 or higher is targeted. Thus, hardware acceleration in ICS is no more “full” than in Honeycomb. (Note: You can force all applications in ICS to utilize hardware acceleration in 4.0 through the developer options settings pane—something I have wanted in Honeycomb for eight months.)
OK. Now, hardware acceleration is on by default in API 14+ apps, and we have a way to force hardware acceleration in all apps regardless of the contents of the manifest. All is gravy, right? That’s unfortunately not the case. In the case of the PowerVR drivers used in the Nexus S and even Google’s new flagship, simply enabling hardware acceleration in any process eats up 8 MB of memory—per process! While not much on its own, 8 MB here and 8 MB there will lead to much higher memory consumption that could also lead to much slower multitasking. As a result, the Android team is putting considerable effort into fine tuning exactly what parts of the Android UI will use GPU rendering on the Nexus S.
Long story short? When compared to Android 2.x, ICS brings great features to the table thanks to its increased reliance on hardware acceleration. However, other than being turned on by default, ICS’s hardware acceleration cannot be considered any more “full” than what we already had in Honeycomb. Furthermore, hardware acceleration isn’t the magic bullet that many consider it to be—but it will certainly help!