Single page Print

GPU acceleration comes to Flash video


Is the bane of low-cost and low-power computing going away?
— 11:08 PM on December 7, 2009

The introduction of Intel's Atom and the rise of the netbook have unquestionably validated the market for low-cost, low-power computing. Compact little systems that are "just fast enough" for the general set of uses people have for computers—surfing the web, chatting via Skype, sending emails, balancing the checkbook, taking notes, conducting Ponzi schemes via Craigslist—have been selling like mad for the past couple of years, and they show no signs on slowing down in the future. Once you exclude a few tough cases like video editing and hard-core gaming, low-cost PCs tend to do very well on the most common sorts of PC applications, which is why consumers have been buying them in droves.

But there's long been one area of common PC usage where low-cost systems tend to choke: dealing with Adobe's Flash platform, especially the near-ubiquitous Flash-based videos plastered all over the web. Pull up that latest hilarious YouTube clip of babies and/or kittens on your hot pink MSI Wind, and you're in for deep disappointment. Those lovable little balls of flubber/fluff slow to a near-standstill. Meanwhile, the Wind works to earn it name; its fan kicks up, shooting a stream of hot air out of its side, to no great effect. You're stuck in slideshow land, from which the best escape is closing the browser tab—if only the system would respond to your clicks.

This is a tragic outcome for what is otherwise a dynamite little computer, made more infuriating by the fact that such systems will play a range of video formats just fine via Windows Media Player or the like. The difference is that traditional media players often employ some form of GPU acceleration, at least for scaling up the video to the size of the display or window in which it's being played—and perhaps even for decoding a highly compressed format like H.264. Trouble is, Flash doesn't make use of the video acceleration logic built into most graphics chips, so the poor low-power CPU is left to fend entirely for itself. A tragic kitten slideshow is the only possible outcome.

Until now, that is. Adobe has recently released a beta version of Flash 10.1 with built-in GPU acceleration. The support for GPUs is preliminary and is largely focused on video decoding alone, but it's already being facilitated by new video drivers from AMD, Nvidia, and Intel. The promise? Low-power computing just might be able to conquer its one long-standing bugaboo. Amazingly enough, given Flash's broad popularity, this is a development of pretty serious import in certain quarters. To see how much of a difference GPU acceleration can make, we rounded up a trio of low-power systems with integrated graphics and took the Flash 10.1 beta for a spin.

Intel Atom 330 and Nvidia Ion performance
Nvidia has generated a tremendous amount of press coverage and general goodwill for its Ion platform, which simply pairs up the GeForce 9400 chipset and IGP with an Atom processor. The not-so-subtle message of the Ion platform pitch is simple: that a small, commodity-class CPU will suffice for most users, so long as it's paired with a competent chipset and graphics solution. The fact that Intel tends to restrict the Atom to the time-worn 945G chipset and its moldy old IGP, with no H.264 decode acceleration and all the graphics power of a Lite Brite, only helps underscore Nvidia's point. A system based on the Ion platform has substantially more potential than your usual netbook or nettop, and for some practical purposes, it may rival PCs based on much more powerful CPUs.

Flash video acceleration, then, is a great test case for the Ion's mojo. We checked it out using an ASRock ION 330 nettop. Even its dual-core Atom 330 struggles with Flash video, though not quite as much as your average single-core Atom netbook.

For this test, we installed Windows 7 x64 on the ION 330, along with Firefox 3.5.5, the Flash 10.1 beta, and Nvidia's ForceWare 195.5 beta drivers with Flash video support. The ION 330 was driving a VGA monitor at 1600x1200 resolution and an 85Hz refresh rate. We used the Flash 10.1 beta for both sets of tests, simply disabling GPU acceleration for the CPU-only portion of our testing.

Those of you who have read one of our netbook or laptop reviews will likely be familiar with our simple red-yellow-green system of rating video playback performance. The rest of you had better be able to figure it out on your own. Heh. We're simply playing back a video and recording our impressions of the playback's fluidity, while taking notes about any quirks or problems.

We do have some approximate CPU utilization numbers taken from the Windows Task Manager for the windowed playback tests, but I wouldn't put too much stock into them, frankly. Many factors can throw off CPU utilization numbers, including the Atom's dual front ends used for Hyper-Threading. Anyone who has seen an Atom struggle to play back a video, dropping frames left and right while posting only 80% CPU utilization, will understand why utilization alone isn't a great indicator of performance. These numbers can help us understand the before-and-after comparison between GPU video acceleration and CPU-only playback on a given platform, though, so I've included them for reference.

We tested with a range of video clips on both Hulu and YouTube, ranging from low-res 360p to full-size 1080p HD. 720p videos are still rare on Hulu, but we tried one of the few 720p videos in Hulu's HD Showcase, the premiere episode of Legend of the Seeker, being sure to use the pop-out feature to display the full 720p image. We used a pair of movie trailers on YouTube, including one for Moon in HQ format and another for Star Trek in 720p. Our 1080p clip was a PureVideo demo posted by Nvidia. At Nvidia's suggestion, you may notice, I added some format strings to the ends of those YouTube URLs to work around some problems with GPU acceleration when the video is first opened in a lower-resolution format. In all cases, we tested at the native windowed resolution and then again when scaled to full-screen mode.

CPU only With GPU acceleration
CPU
utilization
Result CPU
utilization
Result
Fringe
Hulu 360p
windowed
24-37% Smooth 17-22% Perfect
Fringe
Hulu 360p
full-screen
- Some dropped frames - Smooth
Fringe
Hulu 480p
windowed
40-47% Smooth 20-30% Smooth
Fringe
Hulu 480p
full-screen
- Lots of dropped frames - Smooth
LoTS
Hulu 720p
windowed
66-80% Rough, dropped frames 42-51% Generally fluid, but
short pauses every
few seconds
LoTS
Hulu 720p
full-screen
- Slideshow - Generally fluid, but
short pauses every
few seconds
Moon
YouTube HQ
windowed
52-74% Perfect 14-20% Perfect
Moon
YouTube HQ
full-screen
- Perfect - Perfect
Star Trek
YouTube 720p
windowed
50-72% Rough, dropped frames 7-14% Perfect
Star Trek
YouTube 720p
full-screen
- Rougher, ~10 FPS? - Perfect
PureVideo demo
YouTube 1080p
windowed
74-99% Slideshow 17-24% Perfect
PureVideo demo
YouTube 1080p
full-screen
- Slideshow - Some dropped frames

As you can tell, the ION 330 struggles quite a bit when the dual-core Atom alone is asked to decode and play back our test videos. Even our episode of Fringe at a low 360p resolution dips into iffy yellow territory with dropped frames in full-screen mode, and anything above that on Hulu is hopeless. On YouTube, only the Moon trailer proves workable.

With some help from the Ion's PureVideo acceleration logic, though, the ION 330 is transformed into a much more competent media playback system. Suddenly, all but the most difficult videos play back smoothly, some of them even ranging into "Perfect" territory, where I consider playback entirely fluid.

There is one disappointing exception in the form of the 720p LoTS episode. Although playback is typically fluid and CPU utilization relatively low, the video pauses briefly every few seconds, though audio is uninterrupted.

I tried a number of things to resolve this issue. I started with Win7 x86 and installed a fresh copy of Win7 x64 hoping to sidestep the issue, but it persisted. I let the Hulu player queue up a 100% full buffer, to see if that would help, to no avail. I compared to playback on my own PC, using the same network and Internet connection; my Core 2 Quad-based system had no trouble playing the video flawlessly. I even tried dropping the display resolution and refresh rate on the monitor, to no apparent effect. In the end, I had to settle for vastly improved Hulu video playback that fell somewhat short of perfect with this video, though not quite into the red.

Still, the overall improvement is startling. The drop in CPU utilization with the 720p and 1080p YouTube clips is especially striking. The Star Trek trailer runs fluidly with Task Manager dipping into the single digits. Interestingly, the Ion is unique on the PC, as far as I know, in that it assists with scaling the video's size as well as decoding it. No doubt Nvidia made this extra effort due to the fact that the Atom could definitely use the help. That work seems to have paid off nicely.

This first beta of Flash GPU video acceleration remains fragile and incomplete, of course. I doubt most folks will bother with appending format strings onto YouTube URLs manually, for instance. Also, I ran into a problem with 480p Hulu video, unscaled in a window, looking as if it had been poorly scaled to a non-native resolution. Nvidia tells us this problem will be resolved when Adobe releases its next Flash 10.1 beta version.

Here's hoping subsequent improvements to the software and driver stacks involved here can also overcome the intermittent video pauses we saw in the 720p Hulu video format. If they can, the Ion will have nearly aced this test, which would be quite the revelation.