So you want to help us with hardware acceleration

Right now, Firefox has layers/compositing hardware acceleration enabled on Windows, and we have clean test runs on OS X too. However, enabling our implementation of accelerated composition using OpenGL on Linux currently causes a lot of test failures, and we’d be ecstatic if you would try to help us fix them.

So, let’s say you want to debug Firefox’s hardware acceleration test failures. Here is how to go about doing that:

  1. Build Mozilla. Follow the instructions in https://developer.mozilla.org/En/Developer_Guide/Build_Instructions.
  2. As part of step 1, you created your object directory. cd to it, and then execute the following:export MOZ_ACCELERATED=1
    make reftest

    This will take a while. Make sure to give the reftest window focus, because some tests require focus to finish.

  3. The reftest will generate a lot of output, all of which is  saved in reftest.log, which is probably saved in your object directory.  Grep the reftest for UNEXPECTED – each of these is failures. The output  will also contain data: URIs for the output – both for the reference  image (correct) and the actual output. Open those in Firefox and compare  the images. This will hopefully give you hints as to what the problems are.
  4. Debug the problem(s). All of our OpenGL code is in gfx/layers/opengl and gfx/thebes/GL*. We are also available to help debug on irc.mozilla.org channel #gfx.

10 comments

  1. Any merit on performing these tests on Windows or are they platform specific?

    • Almost none of our tests are platform-specific; getting them to work on Windows with OpenGL is not a terrible idea, but since we use Direct3D 9 to perform the same task that OpenGL will fulfill here, and will continue to do so, it might be of limited benefit to Windows users. However, it could reveal hardware-specific bugs, which will benefit both OS X and Linux users, so it’s probably worth doing!

      The only modification you’ll need to do to the above instructions is set the layers.prefer-opengl pref to true when running reftests by prepending this command to your make reftest call:

      EXTRA_TEST_ARGS=’–setpref=layers.prefer-opengl=true’

      Thanks for your interest!

  2. Can you please update the add-on for Firefox 4.0b7pre ? I really wish that addons didn’t need to updated every time a new beta is released …

  3. OK, I’ve built Firefox (on Linux), run reftests, got some UNEXPECTED failures. But I’ve no experience with FF code or free time to make that failures. Is reftest.log itself any of use?

    • The reftest log itself is not of zero use, but we have lots of them on our test servers too. Feel free to upload it to a pastebin, though!

  4. I’m seeing blurred/unsharp fonts in Ff4 B6 with HW accelation enabled (on Win7 64bit, nVidia GeForce 9300M GS, Aero Glass enabled).
    Both the text on the chrome (addressbar, tab titles) and on the actual webpages is affected. But the problem is worst on the chrome. It’s almost hurting my eyes!

    I think the problem I’m seeing is being described here: https://bugzilla.mozilla.org/show_bug.cgi?id=594325
    I thing this should be a blocking bug for Ff4 final…

  5. Joe, pastebin isn’t happy with 3+ megs log file. So I’ve uploaded bzipped log here: http://www.load.to/aM2nHD7ED5/reftest.log.bz2

    PS. I run Ubuntu 10.04.1 with NVIDIA binary Xorg driver 195.36.24-0ubuntu1~10.04, on GeForce 9600

  6. Hi,
    after installing firefox 4pre7 during browsing web, Comodo security asked firefox access to some component, during that firefox was freeze, after granting access, firefox continued working but lost it’s aero theme:
    http://pic-ups.com/images/ff4b7pre.png

  7. Does the grafxbot addon do the same?

  8. Grafxbot does run a subset of tests, yes. It’s certainly a good starting point!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>