Sign in with
Sign up | Sign in

Adobe Flash: Hardware Acceleration, GPU, Drivers, And Details

Adobe Flash: A Look At Browsers, Codecs, And System Performance
By

What about hardware acceleration? Well there are actually number of areas in the video playback workflow where hardware acceleration can be beneficial: video decoding, compositing, “presentation” (color conversion, scaling, blitting), and vector rendering. This actually makes the whole Flash debate actually a bit more complicated. Start with video decoding. If you have read the Flash 10.1 Release Notes, then you know it's a technology with a few quirks.

In general, there are two ways to decode video.

  1. Use the GPU's dedicated video decoding hardware
  2. Use the CPU via a software decoder

They are efficient, in that order, with regard to power consumption and battery life. Flash Player employs dedicated video hardware, when it's available, for processing the video data. However, the hardware-based acceleration that modern GPUs employ is generally are limited to H.264, MPEG-2, and VC-1. There is no spec for accelerating H.263 and VP6. This is the universal constant between Intel, AMD, and Nvidia, and it actually makes a lot of sense, simply because it is rare to see high bit rate VP6 and H.263. And since all three Flash codecs need to be licensed, it really isn't an issue of cost. Moreover, MPEG-LA (the custodian of H.264) has extended the royalty-free use of free Internet broadcast video until December 31, 2016.

The issue really becomes about codec efficiency. As multimedia consumers, we generally try to stay neutral on codec debates, but this isn't as simple as you might think. VP6 encoding quality is generally more consistent across the various encoders used. However, H.264 can vary widely depending on encoder because there are just so many encoders available. Even when you try to make an apples-to-apples comparison, you find there are different encoding parameters than can skew it. Once you throw audio into the mix, legitimate comparisons are hard to make unless you look at an entire library of videos. With that in mind, Hulu's CTO Eric Feng previously stated that H.264 has a 2:1 compression advantage over VP6. There is no reason to doubt this margin, given that Hulu programmers will have directly handled more video in a week than we would in month.

But does this mean that moving up to H.264 automatically incurs a higher processing burden? No. Flash Player 10.1 can take advantage of hardware-accelerated H.264 decoding, offloading the task from the CPU to the GPU, when that functionality is made available.

What about GPU compositing of video with other graphical elements? According to a developer post on Adobe and a recent one-on-one discussion with Adobe, GPU hardware compositing does not occur on Window PCs in Flash Player 10.1. The hardware compositing that was available in Flash Player 10 was really related more to animations where you have multiple bitmaps and vectors generated in real-time. For instance, imagine an animation where multiple objects and layers (such as grass, trees, and clouds) are all generated as bitmaps that need to be composed as a single image after all the additional vectors undergo rasterization. This could occur via the GPU using hardware compositing, similar to what we might see in 3D video game. But this was not carried over into Flash Player 10.1 because differences in content and fragmented graphics hardware/driver implementations often negated the gains of doing this in the GPU.

Tinic Uro summed up the end effect best. "Just because Flash Player is using the video card for rendering does not mean it will be faster. In the majority of cases, your content will become slower." To address the hardware fragmentation problem, Adobe is now relying more on native platform libraries. Thus, consistent acceleration with hardware compositing is now available in Flash Player 10.1 on Mac OS X, which takes advantage of Core Animation in browsers that support Core Animation (Safari).

At the end of the day, other operations are still done in software in Flash Player 10.1. After the H.264 video data is decoded, there is no real GPU assistance in rendering interactive graphics elements, doing color space conversion, or performing scaling on the video itself. All of those still remain CPU-oriented operations.

We should make this completely clear: there is no general-purpose GPU computing in Flash Player. There is no DirectCompute, no APP, no CUDA. And any requests to add that support are nutty, because it is self-defeating. GPGPU is for processing raw data in a highly parallelized manner. But there is more to video than just raw data. There is a lot of image processing that occurs. Modern GPUs already have a portion of their design specifically dedicated to decoding and processing video data. This is called the "fixed function decoder." It lives to decode and it does nothing else. Shifting that burden to more general-purpose compute resources would be one step away from moving it back onto the CPU itself, since in both cases you'd be working with a software-based decoder. This is why Flash Player (and other hardware-accelerated video players that handle H.264) rely on the GPU’s fixed-function decoding capability for video decode acceleration.

Requirements

Remember, there are specific hardware requirements that need to be satisfied to realize the decoding benefits of H.264.

Requirements for Hardware H.264 Flash Decoding
Hardware
Starting Driver Support
Intel

Intel 4-Series chipset family (like the GMA 4500MHD)

Core i3/i5/i7 processor family with Intel HD Graphics

15.16.5.2021
(8.15.10.2021)
AMD
Radeon HD 4000 or higher
Mobility Radeon HD 4000 or higher
Radeon HD 3000 (integrated) or higher
FirePro V3750, V7750, V8700, V8750 or later
ATI Radeon: Catalyst 9.11
ATI FirePro: driver 8.68
Nvidia
View list of latest list of support GPUs
starting support unknown, use latest
Broadcom
BCM70012
BCM70015
-
Apple
Hardware that Supports Mac OS X Video Decode Acceleration Framework (such as GeForce 9400M, 320M, GT 330M)
Mac OS X 10.6.4 or later


The requirements are pretty straightforward. Note that on the Mac side, Flash Player must rely on the Mac OS Video Decode Acceleration Framework to access hardware acceleration (included in Mac OS X 10.6.4 and later). This Mac OS framework does not support Intel GPUs, such as the GMA 950 and the new HD Graphics. The new MacBook Pros lean on the discrete Nvidia hardware for Flash-based H.264 decoding, which is supported by the Video Decode Acceleration Framework.

Things aren't as clear with regard to Nvidia as they are with AMD's graphic solutions. AMD only requires its second-generation Unified Video Decoder (UVD2 for discrete and UVD+ for integrated). It is as simple as that. If you have an older Nvidia graphics card, remember that the third generation of PureVideo (VDPAU decoder) has H.264 decoding restrictions. It cannot decode source video with the following horizontal resolutions: 769–784, 849–864, 929–944, 1009–1024, 1793–1808, 1873–1888, 1953–1968 and 2033–2048 pixel.This applies to products like the first-gen Ion, 8400 GS, 8200, 8300, 9300M GS, 9300 GS, and 9300 GE.

Ask a Category Expert

Create a new thread in the Reviews comments forum about this subject

Example: Notebook, Android, SSD hard drive

Display all 61 comments.
This thread is closed for comments
  • 2 Hide
    Scott2010au , January 11, 2011 3:13 AM
    Notify Mozilla - they care!
  • 6 Hide
    Tamz_msc , January 11, 2011 3:17 AM
    Detailed and interesting article.
  • 4 Hide
    Anonymous , January 11, 2011 3:48 AM
    Another interesting article they should do in regards of flash is games/applications in flash vs java and other methods. I know a majority of the flash games that are on facebook have a tendency to put netbooks into a crawl whereas other methods perform a lot better. Also, an article on how to possibly improve flash performance on netbooks would be a really useful article as well.
  • -4 Hide
    reprotected , January 11, 2011 5:32 AM
    This article should have not been released. Now Apple, Chrome and Opera is going to race against Firefox and IE for the best flash playing browser. MORE HYPE!
  • 3 Hide
    Anonymous , January 11, 2011 6:34 AM
    What about performance of flash in different operating systems. For example speed in Ubuntu and Windows?
  • 0 Hide
    acku , January 11, 2011 6:42 AM
    Quote:
    What about performance of flash in different operating systems. For example speed in Ubuntu and Windows?


    Installing Flash in Ubuntu isn't straight forward unless you are on the 32-bit version. I hear 64-bit is a nightmare. And I'm talking about the official version. That says nothing about the poor performance of Gnash and swfdec. Now there is nothing wrong with using Linux, but it wasn't intended for that type of usage. I code in Linux occasionally. That said, we might look into it down the road.

    Can you clarify what you mean by speed comparisons? I'm not sure I follow. Video is video. Regardless of operating system, the difference is going to be performance overhead.

    Andrew Ku
    TomsHardware
  • 1 Hide
    Anonymous , January 11, 2011 7:24 AM
    What baffles me is the frame rate drop in full screen mode on Chrome/Safari/Opera.

    And it would be very interesting to see results on a Mac.
  • 0 Hide
    acku , January 11, 2011 7:57 AM
    UmrathWhat baffles me is the frame rate drop in full screen mode on Chrome/Safari/Opera.And it would be very interesting to see results on a Mac.


    Yeah, we only can speculate as to why that is for those three. There defiantly is something going on. As for Macs, point taken I'll be sure to address that in the future.
  • 3 Hide
    randomizer , January 11, 2011 8:22 AM
    Quote:
    Installing Flash in Ubuntu isn't straight forward unless you are on the 32-bit version. I hear 64-bit is a nightmare. And I'm talking about the official version.

    The 32-bit version works fine on 64-bit Linux, you just need to install the 32-bit libs. Flash player 10.2 beta has a 64-bit version I believe, and it doesn't need to pull in all those extra dependencies. I've used it on Arch Linux without an issue. Hopefully 10.1 officially gets replaced soon :) 

    Quote:
    That says nothing about the poor performance of Gnash and swfdec.

    Gnash is an admirable project, but it's too far behind Adobe's Flash player to be relevant. I don't think it even works with some more recent videos.
  • 0 Hide
    acku , January 11, 2011 8:33 AM
    Quote:
    The 32-bit version works fine on 64-bit Linux, you just need to install the 32-bit libs. Flash player 10.2 beta has a 64-bit version I believe, and it doesn't need to pull in all those extra dependencies. I've used it on Arch Linux without an issue. Hopefully 10.1 officially gets replaced soon :) 

    Gnash is an admirable project, but it's too far behind Adobe's Flash player to be relevant. I don't think it even works with some more recent videos.


    https://help.ubuntu.com/community/RestrictedFormats/Flash#Flash%20for%2064-bit%20%28x86_64%29
    While 64-bit Flash for linux is still beta, Ubuntu mentions that it provides
    # Greater stability
    # Greater speed and performance
    # Fewer dependencies to install

    over using 32-bit Flash in 64-bit Ubuntu. I haven't tried it myself, so I can't say for sure. I'm trusting Ubuntu's internal tests on this one.

    We're of the same mind on gnash.

    Andrew Ku
    TomsHardware
  • 2 Hide
    scrumworks , January 11, 2011 9:51 AM
    Interesting article in theory but apples to oranges comparison makes no sense. AMD got the worst treatment again of course. Two generation old low end Radeon on a single core Neo mini-laptop system. That must be the crappiest AMD system available.
  • -2 Hide
    acku , January 11, 2011 10:09 AM
    scrumworksInteresting article in theory but apples to oranges comparison makes no sense. AMD got the worst treatment again of course. Two generation old low end Radeon on a single core Neo mini-laptop system. That must be the crappiest AMD system available.


    Actually this is very apples to apples. If you look at a k625 system, the numbers may not be 50% cpu but it still will be higher than 20%. UVD3 doesn't come into play unless you are using Cayman or a brand spanking new Brazos notebook. Remember that the Radeon HD 4200 series is still the most powerful of the integrated graphics solution that AMD is providing, at the moment. 4225 has a slower clock speed sure, but this has little to do with the performance of the fixed function decoder.

    Andrew Ku
    TomsHardware
  • 1 Hide
    knightmike , January 11, 2011 10:44 AM
    Adobe Flash disables the ability for my monitor to turn off after x amount of time even after I have closed my browser and returned to desktop. I hate that.
  • 2 Hide
    Corning , January 11, 2011 11:26 AM
    Thank you SOOO mutch for wrighting out the acronyms. I hear these terms all the time, its nice to see where they come from.
  • 1 Hide
    Yuka , January 11, 2011 11:49 AM
    Superb article Mr. Andrew.

    Keep up the good work and we all know you guys at Toms are HW wizards 8)

    Looking forward to that HTML5 vs Flash article!

    Cheers!
  • 0 Hide
    feeddagoat , January 11, 2011 11:57 AM
    How will video change with the release of HTML5? seems flash is horribly fragmented with different standards trying to cover so many possible hardware set ups. In which case who does responsibility for compatibility and improving performance fall to? Hardware vendors like Intel, Nvidia or AMD or software developers like Mozilla, Google, Microsoft or the actual content providers/web developers?
  • -1 Hide
    kevith , January 11, 2011 12:14 PM
    The installation on Ubuntu Amd-64 has become a breeze. I run 10.04 LTS, and was a bit worried when I saw the "does-not-support-64-bit"-warning.

    It's one -1!- commandline operation and you're happy. It's this:

    sudo add-apt-repository ppa:sevenmachines/flash && sudo apt-get update && sudo apt-get install flashplugin64-installer

    After you restart Firefox it works with no flaws at all.
  • 1 Hide
    shadowmaster625 , January 11, 2011 12:55 PM
    What I want to know is why when I play an Adobe Air based game (League of Legends) my framerate drops to 5fps when I have Firefox running with a couple youtube videos in the background. Quad core with decent video card, all running very close to idle load and temperatures. It is beyond retarded that I am forced to run a 2nd pc if I want to have a video playing at the same time, especially since the game barely uses any cpu or gpu. I am starting to agree with Steve Jobs. Adobe is a big steaming pile of malware.
  • 1 Hide
    jnjkele , January 11, 2011 1:43 PM
    Very nice article! Great breakdown of respective flash video performance issues. The thing that keeps nagging at me is the validity of the various claims I've seen regarding the impace flash has on overall system performance and battery life when it comes to flash use on websites. This covers the web video questions - what about Stevie Job's assertion that there's no flash on their mobile devices because it kills battery life? I know from personal experience that flash can be really buggy, but what about performance impacts on mobile devices?
  • 1 Hide
    mariushm , January 11, 2011 2:07 PM
    Seriously, Tom's Hardware, do you really have something against making proper reviews and tests? It almost looks like you intentionally want to screw up tests.

    Let's see the hardware configurations you chose :

    1. Atom - Ion 2 : Low CPU - High video
    2. Core2 - Intel : Medium CPU - Low video
    3. i3 - Intel : High CPU - Low to medium video
    4. i5 - nVidia : High CPU - High video
    4. Neo - 4225 : Low CPU - Low video

    note: low and high video are in regard to 2D/3D performance in desktop, not games.

    We have 4 generations of Intel processors from low performance and power usage (Atom), to middle Core2 and i3 (office usage), to relatively high performance (i5).
    Yet we have only one AMD processor that's designed to compete against Atom, paired with the only AMD video card, one that's also designed for notebooks and has the lowest performance out of all the cards, by design.

    On the first platform, Flash is basically using Ion2 to decode the video in hardware.
    On the Core2 and i3, the intel video cards are not good enough and don't have drivers good enough - everything is decoded in software
    On the i5, both the processor and the video card can easily decode the video, and the video card is powerful enough to do the compositing in window mode
    On the Neo, you have both low performance processor and low performance video card - while the card can decode the video in hardware the processor is barely enough to do the compositing with various other Flash layers, while still handling the 3D Aero.

    Also, the lowest performance nVidia card used is a 600 Mhz part using the 4th generation of hardware decoding, VP4, introduced in 07/2010. In contrast, the AMD's only presence is an old chip running at 380 Mhz, using UVD2 and introduced in 01/2010. AMD is now at UVD4 with the 6xxx series. Hell, it's so slow the Firefox CPU usage was high because there was a flash or gif animation on the same page with the video making the video card sweat.

    Where the hell is a mid-high CPU coupled with a decent AMD video card, like 4670 or 5450? I'm currently using an Intel Q6600 coupled with an AMD 4850 - in window mode, 1080p content is barely using 20-25% cpu while in full screen it's barely going over 15%. It's obvious hardware acceleration is working perfectly fine in both cases.

    There are plenty of laptop video cards from AMD, parts labeled 6xxx part that are actually chips from the Radeon 5xxx series, which have UVD3 and have much better performance than the HD4225.

    Naturally, in Full Screen, Flash can use other hardware acceleration features that can't be used in 2D so the performance is much better.

    I also don't see any mention of Flash 10.2, currently in beta, which introduces a completely new rendering technique which allows in most cases complete hardware rendering of everything in Flash. I'll quote from the official beta page:

    http://labs.adobe.com/technologies/flashplayer10/

    Quote:

    Flash Player 10.2 introduces new features and enhancements, including a new video hardware acceleration model that enables dramatically enhanced video playback performance.

    Key new capabilities in the Flash Player 10.2 beta include:

    * Stage Video hardware acceleration — A new method for video playback in Flash Player will allow developers to leverage complete hardware acceleration of the video rendering pipeline, enabling best-in-class playback performance. Stage Video can dramatically decrease processor usage and enables higher frame rates, reduced memory usage, and greater pixel fidelity and quality.
    * Internet Explorer 9 hardware accelerated rendering support — Flash Player takes advantage of hardware accelerated graphics in Internet Explorer 9, utilizing hardware rendering surfaces to improve graphics performance and enable seamless composition.
    * Native custom mouse cursors — Developers can define custom native mouse cursors, enabling user experience enhancements and improving performance.
    * Support for full screen mode with multiple monitors — Full screen content will remain in full-screen on secondary monitors, allowing users to watch full-screen content while working on another display.



    I have this running on my system and the performance IS improved compared to the old one, but the most important reason I actually installed it is the possibility of watching a movie in full screen on the second monitor, which works as advertised.

    When was this article done, October- November 2010?

    PS. And by the way, Youtube also uses 960x540, mostly for their live streaming at events but also on some videos. Usually they cheat when people select 1080p and the video is too popular or the person has bandwidth issues, it falls down to 960x540.
Display more comments