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

185 Comments

View All Comments

  • CoryS - Thursday, January 19, 2012 - link

    Guys, this is a NEXUS it is a dev device. That primary reason I got it was because of this...better hardware will be right around the corner...but we won't see another Nexus..especially on Verizon for some time.

    It is refreshing to have a community to fix issues OEMS ignore (yes even Apple) for a change. This is my first unlocked device, and i can't see myself ever going back to anything else.
  • medi01 - Friday, January 20, 2012 - link

    Wake up, Smartphone market (worldwide):
    1. Samsung 24%
    2. Apple 18%

    Android vs Apple = 3 vs 1 and gap is raising.

    Most people turn to apple due to FUD, like this article. Google "steppit out of the shade of its competitor" having three times Apple's market share and much more usable interface (try to quickly access settings like wlan/bluetooth/gps on ios)
  • steven75 - Friday, February 10, 2012 - link

    LOL dont you get it? You don't *need* to fiddle with those settings on iOS necause the battery life is so dramatically better.

    Also, funny reading this comment after Apple's Q4 report where they dominated.
  • Omid.M - Wednesday, January 18, 2012 - link

    I hope Samsung puts out this phone based on GN aesthetics but Exynos 5250 (plus MDM9xxx multi-mode/LTE modem) and blows away the competition.

    @moids
  • Chumster - Wednesday, January 18, 2012 - link

    Could someone clarify on what GPU/CPU he was talking about coming in Q2 devices? Cray? Crate? It was hard to pick up on my headphones.
  • mmp121 - Wednesday, January 18, 2012 - link

    Krait

    Read below:

    http://www.anandtech.com/show/4170/qualcomms-annou...

    Enjoy!
  • Conficio - Wednesday, January 18, 2012 - link

    Really, Google can't survive once Walled Garden platforms like iOS gain traction.

    While it is nice to control the OS (Chrome OS) on PC like devices and nice to stick it to Microsoft, it is essential in the world of smart phones. Google clearly saw that Apple did the unthinkable, wrestle control of the phone's apps away from the networks. That is an existential thread for Google. If there is a billion PC users world wide, there is a multitude of smart phone users, sooner or later.

    If a hardware manufacturer and OS provider like Apple (or Microsoft) controls the apps that can be provided to the phone and features, move from browser to apps on phones, then this is the end of (a profitable) google sooner or later.

    From anther point of view, Google is a huge data center that provides you with data services on their computing power (and you pay for it with advertisement somehow). Apple is a hardware manufacturer that sees it necessary to control the software to deliver a good user experience. Sure, two different approaches to a smart phone OS.
  • hackbod - Tuesday, January 24, 2012 - link

    "Google clearly saw that Apple did the unthinkable, wrestle control of the phone's apps away from the networks."

    There is this weird thing I see expressed a lot, as if Android is a reaction to the iPhone.

    It is not.

    In this particular case, it is obvious: Android's SDK was made available a few months after the original iPhone was on sale, well before there was *any* native SDK for the iPhone. At that time Apple's very clear official policy was that web-based apps was the One True Way to create applications for their phone. There was no concept of an App Store, no phone apps except what Apple shipped built in to the iPhone, nothing wrestled away from the networks in that department.

    If Android was a reaction to anything, it was to the current situation on desktop PCs, with one company controlling that platform, and being able to quite strongly dictate and control its ecosystem and thus large parts of the computer industry.

    One of the goals of Android was to try to keep that from happening in the upcoming mobile industry, by creating an open platform so that everybody in the industry can compete as equally as possible.

    (And an aside -- this also makes it funny to see the recent stuff going around about Google "losing control" of Android. Android was very much set up so that no one company, not even Google, could have anything like the control that Microsoft does over Windows. This should be pretty obvious to anyone who wants to actually write thoughtful articles on the topic and not just link bait.)
  • bjacobson - Wednesday, January 18, 2012 - link

    Can you talk more about this? From Diane Hackborne's post here (https://plus.google.com/u/0/105051985738280261832/... it sounds like the "limitation" is memory bandwidth in that hardwares that are "laggy" are laggy because they can't render to the entire screen 2 and 3x per frame for all the overlays. Which wouldn't seem like so much of a Tegra2 limitation in my opinion considering it has the power to play games like Quake 3 at 1600x1200 @ 60fps (I think...right?). What are your thoughts?
  • hackbod - Tuesday, January 24, 2012 - link

    I don't know about the performance of Tegra 2 playing Quake, but you need to be very careful when comparing the traditional 3d workload that GPUs are highly optimized to support (as exemplified by Quake) vs. the performance rendering 2d graphics.

    Traditional 3d games tend to rely, for example, on triangle rendering as much if not more than raw pixel fill rate, and GPUs are designed to be able to do that fast. When drawing 2d scenes, there are very few triangles but those triangles cover very large parts of the screen and are rendered as overlapping layers.

    On all of the hardware I have seen, for 2d rendering raw memory bandwidth (determining the number of times every pixel can be touched per frame) is the #1 impact on performance.

    Look back at that post -- for a typical scroll of all apps in launcher, without using overlay tricks (which aren't available on Tegra when the screen is rotated), you are looking at touching every pixels about 4 times to render all the layers and composite them to the screen. This is just not a typical 3D game workload.

Log in

Don't have an account? Sign up now