OS-Wide OpenGL ES Rendering

Although smartphone and tablets still lag behind the technology we have in modern day PCs by several years, their evolution is a highly accelerated version of what we saw in the PC industry. It took decades to go from the first GUIs to the GPU composited and accelerated UIs we have on the desktop today. Android has made a very similar transition in just three years.

Prior to Honeycomb, the majority of screen drawing in Android was done using its skia libraries. These libraries were almost exclusively CPU based and did very little work on the GPU. Over time Google rewrote key elements of Android to use new OpenGL ES rendering paths instead of skia for screen drawing. We saw the first major transition in Gingerbread where parts of the OS became GPU accelerated, but things like the browser were still being rendered to the screen using skia. Honeycomb was a significant step towards GPU accelerated drawing, and ICS all but completes the transition. The other component is the drawing model, which is completely revamped in 3.x and above. 

From Romain Guy's Android Accelerated Rendering Google I/O 2011 Presentation

Honeycomb based tablets were significantly smoother than Gingerbread devices but even they showed some UI performance issues depending on what you asked of them. We later found out that this was a Tegra 2 limitation, something that would surely contribute to NVIDIA not being chosen as the lead SoC partner for ICS.

Also from Romain Guy's Android Accelerated Rendering Google I/O 2011 Presentation

With Ice Cream Sandwich, the OS, browser and all first party apps are OpenGL ES accelerated. The result is absolutely noticeable. App launches, scrolling and window transitions are all buttery smooth. Web browsing is unbelievably smooth and easily comparable to iOS and Windows Phone at this point.

Third party apps have to opt-into the OpenGL ES rendering path, which will likely require an update for those apps that haven't already done so. Google also provides the handy option of forcing all apps to use GPU accelerated apps and ignoring the opt-in (hardwareAccelerated="true" from the AndroidManifest.xml file). The obvious downside is not all third party apps will work gracefully with hardware acceleration enabled, though most do right now. The Southwest Airlines app, for example, will crash as soon as you try to check into a flight if you force GPU accelerated drawing, and Speedtest.net shows a blur for its line graph of throughput during the test. Google has outlined the draw operations that are unsupported in 3.x and 4.x already, which thankfully aren't many. 


While it would be nice for Google to allow GPU acceleration settings on a per application basis, the truth of the matter is that many of them work just fine. Those that don't work are likely a simple update away from getting on board, otherwise they risk obsolesce as more platforms get ICS in the future.

If the sluggish UI held you back from Android in the past, ICS almost completely addresses the issue. I say almost completely because there are still some minor hiccups and a couple of more reasonably sized problems with the OS' responsiveness.

Task Switcher with CPU use overlay (new in ICS) enabled

The biggest issue for me is the delay when operating any of the ICS buttons: back, home or the task switcher. While tapping a folder on any of the home screens results in an instantaneous display of its contents, hitting any of the three ICS buttons just isn't as responsive. There's a noticeable delay between when you hit the home button and when you actually appear back at the home screen. It's a delay that's, at least in my opinion, a bit too long. More frustrating is the delay in bringing up the list of recently used apps. It's less than two seconds but it should be in the milliseconds.

I monitored CPU usage while bringing up the task switcher and saw a small spike in CPU usage (~15%) and an associated increase in clock frequency, but nothing significant enough to lead me to believe we're CPU bound here. If anything I wonder if this is a GPU performance limitation similar to what we saw with Tegra 2 and the app launcher on Honeycomb. Given the incredible resolution of the Galaxy Nexus' display and the fact that we're still dealing with a 307MHz PowerVR SGX 540, it's quite possible that the platform just needs a faster GPU. I'm curious to see how well Tegra 3 will do here.


The Android vs. iOS Debate The UI: Holo Evolved
Comments Locked


View All Comments

  • gamoniac - Wednesday, January 18, 2012 - link

    The article is co-authored, yet I keep seeing the use of "I" as the pronoun in sentences throughout. As a daily AT reader, I find it a bit awkard when trying to put a face to the article. I like the writing style; it just bugs me when I can't figure out whether it is Anand or Brian who is making the statement that I am reading. Perhaps the use of "we" makes more sense?

    Thanks. Great work as usual.
  • Omid.M - Wednesday, January 18, 2012 - link

    As an editor, I agree with this comment.

    It's not a huge deal, but it's nice to see:

    AL: I think that...

    BK: I disagree with Anand, but...

    Just don't do it everywhere because it'll seem like an interview.


    The videos have been the best new thing AT has done in a long time. Thanks! Good to put faces to names, even better to add voices. Next, comment system ;)


  • bjacobson - Wednesday, January 18, 2012 - link

    Perhaps writers at Anand should be required to speak in terms of The Collective.
  • Brian Klug - Thursday, January 19, 2012 - link

    This is definitely something we've struggled with in the past and admittedly continue to struggle with. Most of ICS is Anand (though we collaborated and always wind up agreeing about most things), then the hardware and onwards is myself.

    Think of us as a hivemind (or collective) and the problem goes away :P

  • Zoomer - Thursday, January 19, 2012 - link

    Or write in 3rd person like a technical paper. Though that can be boring to read.
  • just4U - Friday, January 20, 2012 - link

    "Think of us as a hivemind (or collective) and the problem goes away :P


    It does NOT!! Ok, which bonehead asimilated Brian & Anand? There goes the neighborhood (...grin)
  • thebitdnd - Wednesday, January 18, 2012 - link

    I've had my GNex since the day after launch. It surpasses any experience I've had with a smartphone (including HTC Incredible, iPhone 3GS, and a HTC EVO) as a web browser and mobile computer device, but the single complaint I have is with using it as a...(wait for it) PHONE.

    I've had over a dozen calls now where I'll be conversing away and all of the sudden my microphone cuts out and the other person can't hear a word I'm saying. The call is still connected and I can hear them just fine, but I have to hang up each time and call them back.

    Google directed me to Verizon, Verizon says it's a Samsung/Google problem, but I've been assured it's a software problem and there will be a fix in 'an upcoming update'.

    As much as I like the hardware and software, not making reliable calls is a real kick in the junk for a smartphone.
  • jalexoid - Wednesday, January 18, 2012 - link

    Well, what did you want with CDMA or LTE? No bugs?
  • mhaager2 - Wednesday, January 18, 2012 - link

    Great review as always Anand. My only criticism is that it felt like it took you a very long time to get this review out compared to how quickly the iphone 4S review came out. I think your comments about the hardware are correct; its certainly not leaps and bounds ahead of other phones. Being my first phone since the iphone 3G I do wish it was more bleeding edge to future proof it a bit. However it actually works very well, both as a content consumption device, as well as (gasp) as a phone, and I just love, love, love that fact that its penta band. Now when I visit the US I no longer have to endure the legal extortion that used to be the norm with carrier locked devices. That feature alone makes this phone better than any other out there,, old GPU and all.

    Has anyone overclocked this to its 1.5 ghz spec? I wonder if there is any appreciable differerence and what the battery life trade off is.
  • tipoo - Wednesday, January 18, 2012 - link

    I can only speak from my experience with my Nexus S, but the max CPU speed has little battery life impact compared to the impact the CPU governor does. 1.3GHz with the Lazy governor (available in Trinity Kernel) lasts longer than the stock 1GHz on OnDemand.

Log in

Don't have an account? Sign up now