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
POST A COMMENT

185 Comments

View All Comments

  • TedG - Wednesday, January 18, 2012 - link

    I am looking forward to ICS on my RAZR. It seems similar in power and size to the Nexus. Reply
  • Jonathan Dum - Wednesday, January 18, 2012 - link

    Any comments on the quality of the touch sensors? My biggest gripe with my Nexus One is the absolutely inane touch accuracy in comparison to an iPhone. If these new ICS phones have significantly improved touch sensors, I may be coaxed into sticking with Android. Reply
  • jalexoid - Wednesday, January 18, 2012 - link

    Synaptics touchscreen controller on N1 was to blame. Even the HTC's "copy" Desire had a much better touchscreen experience due to a better touchscreen controller.

    All devices after that should have a really good controller.
    Reply
  • tipoo - Thursday, January 19, 2012 - link

    Same with my Nexus S. The locational accuracy is good, but it actually senses a tap with my finger a few millimeters above the screen, which can cause problems with the keyboard and other precise apps. Reply
  • Brian Klug - Thursday, January 19, 2012 - link

    That was always my bug with the Nexus One as well, and it remains an unsolved problem to this day on that phone.

    I've seen no touch recognitions at all on the Galaxy Nexus. For the most part honestly these issues have gone away as the OEMs stopped being cheap with their capacitive layers and controllers. The Nexus One was especially bad.

    I've seen some people complaining about issues with recognition in the bottom right corner - hardware swaps fix those problems.

    -Brian
    Reply
  • Skiddywinks - Wednesday, January 18, 2012 - link

    ... is the GN still going to be the best Android on the market? I upgrade in March, and it basically comes down to the S2 or the GN. Each has their advantages, but personally it largely comes down to the display and the GPU.

    I like to play emulated games on my phone, but I don't know how they work in terms of whether they are software only, or can GPU accelerate. The better GPU in the S2 doesn't really do much if the GN can play everything else on the market at no apparent deficit. Better display all the way in that case. GN wins.

    I'm not liking the lack of mSD in the GN either, though.

    BAH. Decisions, decisions.
    Reply
  • tipoo - Thursday, January 19, 2012 - link

    Yeah, the Mali 400 in the GS2 might benchmark way higher than the Galaxy Nexus, but there are no games that exclusively run on it, or even that have more features on it like Tegra phones. I'd guess that even with its relatively weak GPU the Galaxy Nexus will never leave you wanting in games for the next year or two, and its screen is better. My Nexus S can still play top end games like Shadowgun, and that was built for more powerful tablets. With Android developers aim for middling hardware. Reply
  • medi01 - Wednesday, January 18, 2012 - link

    @Android is an OS that, although more closed than many would like, still allows more flexibility than iOS@

    And that comparing Open Source OS to something as closed as it gets. It is merely "still allows more than iOS", hilarious.
    Reply
  • doobydoo - Thursday, January 19, 2012 - link

    The openness of Android wasn't being compared to iOS, the flexibility was.

    Two separate points.
    Reply
  • Gwynbleidd - Wednesday, January 18, 2012 - link

    Two things, though:

    1. You wrote "Business is as usual for Windows users as ICS based devices just appear as a drive letter thanks to native MTP support." - that's not true, because of MTP Nexus appears in My Computer in Windows as a multimedia device and does not have a letter assigned, so sadly it's not possible to use traditional file managers like Total Commander to deal with files on it without additional plugins.

    2. Did you notice any screen quality issues in your devices? Mine shows ugly pinkish smudges visibly especially on gray backgrounds, here's photo (it's out of focus on purpose, otherwise there would be a rainbow goo on screen):

    http://img812.imageshack.us/img812/7794/nexussmudg...

    So when scrolling webpages you can see that text is pinkish at the top, then white stripe, then pinkish again... Apparently I'm not the only one having this issue with Nexus, and there is a long thread on xda forum about the same problem with Galaxy Note Screens

    http://forum.xda-developers.com/showthread.php?t=1...

    A little investigation, maybe? ;)
    Reply

Log in

Don't have an account? Sign up now