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

  • HooDooMagic - Friday, January 20, 2012 - link

    I think it's already been mentioned that 4.03 fixed the task switcher lag. I have alpha ICS 4.03 roms running on a Nexus One, Nook Color and Samsung Galaxy Tab 10.1 and everything runs very smoothly on all 3 devices. Even the very underpowered Nook has surprisingly little lag and stutter when using the task switcher and transitioning between screens/app drawer etc. Reply
  • Chloiber - Wednesday, January 18, 2012 - link

    The Galaxy Nexus is a very nice phone indeed, but there are just some things that I don't like about it. As mentioned in the review, the GPU is not the best, which is actually the main reason I won't buy the phone. I buy smartphones which should last about 2 years. Buying one with a GPU from the beginning of last year is just not good enough. As Anand mentions: better wait for Q2, maybe Q3. At the moment, the GN is certainly the best phone (in my opinion) money can buy, but it's not the right moment to buy an android phone.
    The review is very late indeed...but very thorough - thank you!

    One question remains: are microSD slots a thing of the past? Google mentioned that there is a good reason why they didn't include one (slow speeds for apps). But I still think that's a very bad reason not to include a slot. While it is true, that the mSD cards are pretty slow compared to internal storage, there is just no way in hell I'm gonna pay 100$+ for 16GB of additional internal NAND. Additionally, you don't need high speeds for music, pictures and movies (the main reason to get an SD card).

    I hope for a phone in Q2/Q3 with a) better SoC, b) an SD card slot and c) a 720p IPS or SAMOLED+ screen.
    Reply
  • humancyborg - Wednesday, January 18, 2012 - link

    I agree. The GPU is a terrible oversight on this phone, particularly considering the inclusion (finally) of OpenGL rendering throughout Android.

    With the 4S GPU being 3-4x faster it's tough to see how this phone is going to stand the test of time. Presumably the iPad3 and next iPhone will be packing an even more powerful SoC and GPU.

    This is one of the main reasons that I think Apple is in a great position going forward with regards to hardware. With the exception of Samsung, everyone else is relying on TI, Qualcomm, Intel, etc to make the right decisions with regards to CPU/GPU etc combination and clearly those chip makers do not always have the best insight with regards to product pipeline or requirements.

    A retina display-ish version of the iPad is going to take a GPU far beyond anything the current SoC guys are manufacturing.
    Reply
  • tipoo - Wednesday, January 18, 2012 - link

    The next generation of PowerVR SGX graphics chips are supposedly 20x as powerful as the current ones. I'm guessing Apple will still be using the dual core variant of the 6** series. That's good, if the 4x screen resolution rumours are true.

    Yeesh, Android devices still haven't caught up to the old GPU now a new one is around the corner. Nvidia is stuck with their own GPU's of course, but TI or Samsung should switch to PowerVR if this performance domination continues.
    Reply
  • trob6969 - Wednesday, January 18, 2012 - link

    What performance domination?! Android phones are easily the most powerful on the market! Reply
  • Greg512 - Wednesday, January 18, 2012 - link

    Not when it comes to GPU power. The iPhone 4S has a GPU 3-4 times as powerful as the one in the Nexus. Android phones do tend to have higher clocked processors, however, so they do have a healthy advantage on that front. Android phones also have more RAM, though many would debate that iOS is memory efficient, negating the hardware advantage. Reply
  • KoolAidMan1 - Wednesday, January 18, 2012 - link

    You're kidding, right? The Tegra 3 is slower than the eight month old A5. Everything in Android world is playing catch-up with old parts, which is odd given that they have a more frequent upgrade cycle. Problem is that they've been behind since the beginning. Reply
  • doobydoo - Thursday, January 19, 2012 - link

    trob6969 - the leading Android phones have CPU's which are largely comparable to the CPU in the iPhone 4S - in some cases they even boast up to ~10% extra performance (as a result of, in some cases, 50% higher clock speed), but only in CPU limited tasks, and that <10% is barely noticeable.

    Graphically, the GPU in the Nexus Prime is far slower than even the Samsung Galaxy S2 - using an older GPU which is up to 3x slower than the GPU in the iPhone 4S. The GPU in the SG2 (the fastest Android GPU) is also far slower than the iPhone 4S (as the benchmarks in this review show)

    Because iOS is hardware accelerated (and tightly intertwined with the iPhone), the performance of the iPhone 4S and iOS is far superior to any Android phone out at this moment in time.
    Reply
  • zorxd - Thursday, January 19, 2012 - link

    uh?
    50% faster clock speed gives you 50% more performance in CPU limited tasks. Don't forget that it's the same architecture (Cortex A9).

    I hope you are not making that 10% claim based on javascript bencmarks. They are browser benchmarks more than CPU benchmarks.
    Reply
  • Zoomer - Thursday, January 19, 2012 - link

    Not really, the A9 ISA have many different architecture implantations. TI does their own, Apple probably did their own, and I believe nVidia has their own too. Reply

Log in

Don't have an account? Sign up now