Do users actually get hardware acceleration?

In order to get hardware acceleration, users need to have recent graphics drivers in addition to good hardware. Have they?

To find out, I used a script that parses Firefox 4 crash reports, which now report on attempted/successful/failed graphics features. Below are some findings, based on crash reports collected since the Firefox 4 release. The implicit approximation made here is that crashiness is overall independent from these graphics features, so that numbers of crashes are proportional to numbers of users. This should be a decent approximation, since crash stats show that these graphics features are not among the top causes of crashes.

Layers (compositing, etc.) acceleration

Layers acceleration is what handles compositing, image resizing/rotation, and video colorspace conversions.

Here are success rates per operating system and per graphics system used. Notice that Windows Vista and Windows 7 try both Direct3D 10 and Direct3D 9, so the total success rate there is not just the sum of the two.

OS Direct3D 9 Direct3D 10 OpenGL Total
Windows XP 8 % - - 8 %
Windows 2003 (NT 5.2) 21 % - - 21%
Windows Vista 10% 7% - 17%
Windows 7 9 % 38 % - 44 %
Mac OS X 10.6.3+ - - 99 % 99 %
Linux (disabled by default) - - 79 % 79 %

Our decision to support Direct3D 9, instead of only supporting Direct3D 10, is paying off: it greatly increases the number of users who get hardware acceleration. Even on Direct3D 10-capable Windows versions, having Direct3D 9 as a fallback gives a nice boost to our stats. But the really important part is Windows XP. Those 8 % of XP users might seem few, until one realizes that XP users account of half of the world’s Internet users. 8 % of all XP users would be more than 50 million people. While most (92 %) of XP users have outdated graphics drivers and/or hardware, those 8 % include many people who are tech-conscious enough to have recent graphics drivers installed: it is safe to bet that many of them also care about getting hardware acceleration in their browser. Also, we’ll see below that 21% of Windows XP users actually get WebGL, which means that they have recent enough drivers, so it seems that the reason why only 8 % get accelerated layers is lack of support for features we require there, such as 4Kx4K textures. Then again, we must be very conservative with layers acceleration, as enabling it on too slow graphics systems can ruin the user experience.

The 99% figure on Mac is to be taken with a grain of salt: this is only among users of Mac OS 10.6.3 and newer. Most of hardware acceleration is disabled on older versions. The 79% figure on Linux, too, is a bit tricky: hardware-accelerated layers on Linux are disabled by default, and require manually enabling. Moreover, on Linux, they are correlated with Flash crashes, so this number might be completely biased.

WebGL

Let’s now turn our attention to WebGL.

OS WebGL success rate
Windows XP 21 %
Windows 2003 38 %
Windows Vista 24 %
Windows 7 58 %
Mac 80 %
Linux 40 %

The 21 % WebGL success rate here on Windows XP is surprisingly higher than the 8 % Direct3D 9 layers success rate. I suppose that the extra requirements we currently place on hardware to enable Direct3D 9 layers, such as the 4Kx4K textures requirement, are ruling out a lot of users.

The 80 % success rate on Mac is really among all Mac users. WebGL is only enabled on Mac OS 10.6, so what this tells is that 80% of Firefox 4 Mac users are on 10.6 and have good hardware.

The 40% success rate on Linux is going to get much higher soon, when we whitelist more recent drivers.

Finally, the Direct2D and DirectWrite success rates are basically the same as the above Direct3D 10 success rates.

28 Responses to “Do users actually get hardware acceleration?”

  1. Gen says:

    44% on 7 is awfully low, you should gather statistics but my guess is that the 9? month driver cutoff is the culprit.

    Some ancdotal evidence: I noticed bad performance on XP with an 8800GT with recent enough drivers, which performs really well on 7. That’s the only time I’ve tried layers accel on XP. I’ve seen a lot of people on forums and the like complaining about poor perf; have HW layers been tested enough on XP? The XP video driver model is quite different from Vista/7’s and apparently has more performance pitfalls.

  2. Jim B says:

    The plugins page will tell you if your various plugins are up to date or not. Considering how important acceleration is to the FF experience, it would be nice if there was some similarly simple and obvious mechanism that would inform the user that their driver is preventing browser acceleration.

  3. bjacob says:

    We already have that: it’s about:support. It even gives a suggestion for driver version. It’s getting some fixes at the moment, too.

  4. bjacob says:

    Please file bug reports about any performance issues on XP. While this has been carefully tested, nothing will replace actual bug reports. Select product ‘Core’, component ‘Graphics’ when filing bugs. Make sure that bug reports contain a copy of the Graphics section in about:support.

  5. Robert O'Callahan says:

    Thanks Benoit!

    It would be very interesting to report those numbers as estimated user populations.

  6. Those numbers are really interesting, though there’s one more related metric that would seem to be interesting and possibly able to be derived from this data (roughly): How many of our total users have hw accel and WebGL available?

  7. bjacob says:

    @ Robert: according to my script, 47% of final users who tried WebGL got WebGL.

  8. Jim B says:

    Benoit, although typing “about:support” is indeed simple, it isn’t widely known and not discoverable.

    It would be great if the first time a user attempted to use the browser a special tab would open up (ala the “welcome to the upgrade” page) describing the situation and how to fix it. Or the first time the browser attempted to render webgl content, it would do something similar.

  9. Considering that most driver blacklisting happened in response to WebGL crashes and Firefox bothers to attempt D3D9 on Vista/7 if 10 is not OK, I’m wondering why D3D9 layers acceleration isn’t enabled on drivers that are older than what WebGL needs but that might work if the GPU support 4K by 4K textures. Is this just a matter of person hours or are there technical obstacles?

  10. bjacob says:

    @ Henri, no, it isn’t true that most driver blacklisting happened in response to WebGL crashes. If you look at the bugs linked to from https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers , a majority of them are actually about Layers crashes. We also do per-feature blacklisting, so when we know that e.g. a bug happens only with Direct3D 10, we blacklist only Direct3D 10 features. When a bug affects only WebGL we disable only WebGL. By the way, WebGL on Windows currently uses Direct3D 9 (via ANGLE) by default.

    Regarding 4Kx4K textures, this is really specific to Layers, WebGL doesn’t care about that. Layers require 4Kx4K textures for two reasons: 1) because when you view a large image we need to fit it into a single texture and it’s not easy to emulate with smaller textures (or else drivers would long have been doing that); and 2) allowing Layers on hardware not supporting 4Kx4K textures, which is presumably less powerful hardware with a lower fill-rate, is risky: we are already getting complaints that on some slow GPUs Layers can make Firefox feel slower, so allowing even less powerful GPUs could make that worse.

  11. vsync says:

    How can I get this to work?

    I keep wanting to try these demos but it keeps telling me my video card is “too old”. I have a quad-core Phenom II and a recent Radeon. glxgears works fine and glxinfo says “direct rendering: Yes”.

    I don’t really get this whitelist business but whatever. I set webgl.force-enabled to true but still the same smug message on the demo site. How do I just turn this on?

    Thanks!

  12. Paul says:

    Because WebGl didn’t work in FireFox with the default drivers for ATI cards that come with Windows 7, I installed ATI’s most recent drivers from their homepage. Now WebGl worked, but suddenly fonts in FireFox looked lousy as ClearType in FireFox got disabled. I had to disable 2d hardware acceleration in FireFox to get nice fonts back. You should definitely work on this, as nice fonts are much more important than 2d hardware acceleration.

  13. bjacob says:

    @ vsync: Sounds like you’re on Linux, so you should read this: https://wiki.mozilla.org/Blocklisting/Blocked_Graphics_Drivers#On_X11 . You only need to defined the MOZ_GLX_IGNORE_BLACKLIST environment variable.

  14. bjacob says:

    @ Paul: sounds like what you wanted to disable was directwrite — you can disable that without disabling 2d acceleration. It would be useful that you write a bug report (bugzilla.mozilla.org -> Core -> Graphics) with the contents of the Graphics section of the about:support page on your machine.

  15. Peter says:

    @Paul: I can confirm this. Just ran into it.
    Windows 7, older Thinpad, ATI X1300, Driver 8.xx –
    All FireFox hardware acceleration disabled by default install
    Tried WebGL, didn’t work, so I started googleing around:
    1. hit about:config & see about:support –
    webgl.force-enabled set to true,
    webgl.prefer-native-gl set to true,
    webgl worked (but not really smooth)
    2. learned about direct2d and directwrite – huh MS stuff, lots….
    gfx.font_rendering.directwrite.enabled set to true and
    had to create an integer mozilla.widget.render-mode set to 6 –
    works, nobody knows why……
    tried gfx.direct2d.force-enabled set to true,
    kinda works but brings up black bars where there is usually text in the tab titles.
    Disbled it again, done.
    Stuff seems faster, generally slicker. Will try the settings for some time. Will see what comes out of WebGL and hardware accel.
    Hope the best.

    Thanks all for the effort.

  16. Alex says:

    I wish I could get some hardware acceleration, but I had to turn it off because it was making text intolerably fuzzy.

  17. Bob says:

    From the article,

    “The 99% figure on Mac is to be taken with a grain of salt: this is only among users of Mac OS 10.6.3 and newer. Most of hardware acceleration is disabled on older versions. The 79% figure on Linux, too, is a bit tricky: hardware-accelerated layers on Linux are disabled by default, and require manually enabling. Moreover, on Linux, they are correlated with Flash crashes, so this number might be completely biased.”

  18. Henry says:

    Wow, Mac users seems to have been benefitting more from WebGL acceleration…

  19. Florian says:

    Heya there mozilla. Nice that you care about WebGL. Let me rant for just a second here.

    You don’t support OES_texture_float (while chrome does). No big deal right? Wrong. Much of modern graphics relies on the ability to capture and process depth and height fields (just think of SSAO, shadow mapping, heightmapping, normal mapping, deferred lighting, etc.) as well as image processing techniques (such as tone mapping) of high-dynamic range images (presumably produced as floating point color fields).

    I’ll let you ponder this deficiency and hope you’ll figure out how to provide support for graphics that are not so 90ties.

  20. bjacob says:

    @ Florian:

    > Heya there mozilla. Nice that you care about WebGL.

    For your information, we (specifically, Vlad) started the whole WebGL thing.
    http://en.wikipedia.org/wiki/WebGL#History

    > You don’t support OES_texture_float (while chrome does).

    You do realize that that’s an extension, right? Not supporting it yet is not something you can call a “deficiency”.

    Google created this extension specification, so it’s no surprise that they’re the first to support it. We too want to support it, it’s just that so far there have been higher priorities. You’re welcome to submit a patch if you want that to happen faster.

  21. bjacob says:

    @ Alex, it sounds like what you don’t like is DirectWrite text rendering. You can disable it specifically in about:config while keeping the rest of hw acceleration.

  22. pafnucy says:

    [...] such as the 4Kx4K textures requirement, are ruling out a lot of users [...]

    Yes, for example hundreds of thousands of laptop users with Intel 915GM onboard.

  23. Danny Moules says:

    @Florian

    I think you need to do a little more reading on what floating-point textures actually means. You can “capture and process depth and height fields (just think of SSAO, shadow mapping, heightmapping, normal mapping, deferred lighting, etc.)” without using OES_texture_float. Just normalise your values to 0..1

  24. Carl says:

    We feel a little deceived by Mozilla on this one. One of the big new features we were waiting for to deploy Firefox 4 instead of the competition was hardware acceleration. It was highly touted by Mozilla and advertised as one of the great new things about Firefox 4. But as your own tests indicate, only 8% of users of the world’s most popular operating system will see any benefit. Now we have to reevaluate our decision.

    We understand the tradeoffs involved, but we think Mozilla should have indicated early on that such a small percentage of users will actually be able to take advantage of hardware acceleration.

  25. bjacob says:

    @ Carl: All browsers face the same issues with old graphics drivers, and as a result, the competition is using essentially the same driver blacklist as we do, for example:
    http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/resources/software_rendering_list.json
    So it’s important to realize that this is not going to be a competitive criterion between browsers. This issue has nothing to do with browsers and everything to do with drivers.

  26. MrX1980 says:

    @ Florian:

    “OES_texture_float” is now (2011-05-21) implemented
    https://bugzilla.mozilla.org/show_bug.cgi?id=630672

  27. Yuhong Bao says:

    On the driver blacklisting on Windows, are you incorrectly basing it on whether XP or Vista or 7 is installed, or are you correctly based it on what *driver model* is installed (XPDM vs WDDM)?

  28. bjacob says:

    We’re using the windows version, not the driver model. Thanks for this. Would you care to file a bug at bugzilla.mozilla.org -> Core -> Graphics, CC me, and explain the issue? Sounds like something we should fix.