Firefox and Hardware Acceleration on Linux

24 Sep 2021

In some Firefox version after 88.0 it looks like they're enabling WebRenderer by default, and it also looks like my hardware (an Nvidia graphics card with the proprietary driver)[1] isn't whitelisted, so what Firefox does is enable "software WebRenderer" instead.

First things first, I had been trying WebRenderer for some time (more than a couple of month) by force-enabling it, and while it seemed to make things better at first, on the whole the experience was awful, and because WebRenderer, if I understand correctly, uses GPU acceleration, that affected the rest of the desktop, so after a while I disabled WebRenderer (and "Hardware Acceleration" in the preferences tab, and set the processes limit to 2, while I was there), and then things seemed to be better.

Due to the iffy state Firefox can be in sometimes, I had decided to skip updates for as long as I can, i.e. I update Firefox, then stick with the version I have until an extension I use no longer works, or there is a really compelling new feature in a new version of Firefox (which, sadly, doesn't seem to be as often as it was before the "rapid release" schedule Mozilla had adapted...). So here I was using Firefox 88.0, shut the machine down at night, turned it on in the morning, then when I was opening a link, Firefox started and all the tabs had the "your tab crashed" "reload this tab?" message, clicking that button had no effect.

So nothing worked, not restoring the previous tabs, disabling all extensions, moving ~/.mozilla and starting anew; a couple of online searches later, still nothing, then I looked at rpm -qa --last | less, now I think the reason is a glibc update, which broke Firefox, probably it would be fixed by rebuilding Firefox against the new glibc. Not really OpenSuse Tumbleweed's problem because the current version of Firefox in the repos is 92.0...

The bottom line is, either I build Firefox from source (takes a long time, consuming CPU and memory ...etc) or update update to Firefox 92.0. I opted for the latter; and was greeted with laggy UI/scrolling/interacting with the browser ... lots of fun.

Another online search later, and I found that "software" WebRenderer is enabled (confirmed by looking at about:support in Firefox) and to disable it I needed to set gfx.webrender.force-disabled to true in about:preferences.

[1] While I am here, the whole "you should have bought an AMD graphics card!" argument, that I have seen posted in many places whenever someone says he/she is using Nvidia with the proprietary driver, has never sit well with myself. When I was deciding which card to buy 7-8 years ago, the fglrx driver (which is the proprietary driver for AMD cards) back then was awful, all I heard about it were horror stories of users' complaints. The Nvidia proprietary driver was much better at that time. Some years later AMD decided to open-source their driver and upstream it (not sure) to the Linux Kernel, great, good news for users with AMD cards. But you know what? I can't see the future to know that 5 years after I bought that Nvidia card, AMD will become the better choice. So please, if you don't have a solution to the problem a user with an Nvidia card has, don't throw the "you shouldn't have gotten an Nvidia card" argument in there, saying nothing would be more helpful in that case. And you know what also? AMD being a corporation could at any minute stop supporting the open-source driver, right? I am not a lawyer, but I think if management decides it's not in their company's best interest, they could pull the plug. It's not like this hasn't happened before, Intel did stop developing/working on their gfx open-source driver, to the extent that distros were switching to the default Kernel ModeSetting driver.