hardware acceleration on linux -- google says no

Google says it has no plans to enable Chrome hardware acceleration on Linux — not even as an experimental option.

The news is certain to be greeted with groans by those who struggle to stream HD YouTube videos and other rich media content smoothly in Chrome on Linux.

Google say ‘our choice is not to enable these acceleration features on Linux’

For Linux laptop users in particular the lack of hardware video decoding in Chrome has a major drawback: shorter battery life, and a much warmer lap.

But based on recent comments from a Google Chrome team member, the situation is not going to change…

Chrome Hardware Acceleration on Linux

What is hardware acceleration?

If you notice stuttering, tearing, dropped frames or system slowdowns when watching online video in Google Chrome it’s probably because of software decoding/no hardware acceleration.

Hardware acceleration allows your graphics card (or integrated GPU) to take on intensive tasks like video decoding.

Hardware acceleration uses your GPU, freeing up your CPU to do other things

Since GPUs are (by design) better equipped at handling graphics-related tasks than a traditional general-purpose CPU this resutls in smoother, faster playback with fewer issues and system slow downs.

Or to put it another way, hardware decoding leaves your CPU free to focus on running the rest of the operating system, rather than buckle under the weight of having to do ‘all of the things’.

Those with powerful rigs and high-end modern processors are unlikely to notice any major issues with software decoding, making the “issue” a subjective one.

But for others, including myself, streaming high-definition video on YouTube in Google Chrome or Chromium on Linux is neither as smooth or as power efficient as it is on other operating systems.

False Flag

Google Chrome (and Chromium, its open-source counterpart) both include a hidden option (known as a ‘flag’) which supposedly lets you “override the software rendering list” — i.e. force-enable hardware decoding.

Accordingly, if you visit chrome://gpu with the flag enabled you’ll see some text which reads: “Video Decode: Hardware accelerated“.

Done? Not quite. It turns out that, in spite of what the browser says, the flag does not enable hardware accelerated video decoding.

Don’t believe me? Stream some HD video from YouTube or Vimeo in Chrome on Linux while you keep an eye on your system’s CPU usage via top or the System Monitor app and you’ll notice that it’s fairly busy…

Hardware Acceleration Patch for Chrome on Linux

A patch to “enable VAVDA, VAVEA and VAJDA on linux with VAAPI only” in Chrome & Chromium has been available since 2017.

This patch supports VA-API with the vaapi-driver on Linux to offer hardware accelerated video video playback from well-known sites on well-known hardware from AMD and Intel. It also works with the vdpau-va-driver for Nvidia cards.

Although the patch it’s said to be both functional and working well for many, it’s yet to be merged with the Chromium codebase.

And based on recent comments from developers we’re told that Google has “no intentions” of merging the VA-API patch any time soon.

“No intentions”

If the patch is a) available, b) works well (for some, with caveats) and c) can be hidden behind a flag and not enabled by default, what, you might ask, is the hold up?

In comment on a bug report to track hardware acceleration in Chrome for Linux, Chromium developer Antoine Labour cites stability and security concerns as a key reason why the feature can’t just be tacked on.

And as ever, the wild-west of varying Linux graphics drivers also seems (partly) to blame.

Antoine states:

“Our goal is to have a Stable and secure browser first, and a GPU-accelerated one second, when possible.

As we found out time and again, any sort of GPU acceleration has a lot of maintenance associated with it, between the multitude of configurations our users run, the general lack of quality of drivers (in particular on Linux), and the constant stream of incoming issue due to new hardware, driver, or distribution release.”

The developers goes on to explain that ‘they’ (presumably the wider Chrome team) “do not have the resources to commit” to both merging the patch and dealing with any issues, errors and code maintenance that comes from carrying it.

“We don’t want to compromise the first goal (stable and secure browser), our choice is not to enable these acceleration features on Linux.”

With “no plans” to support the feature going forward it is left to the open-source community to fill the void.

Remember: this is open source

As Chromium is open source code anyone with the skill, inclination and care who is interested in maintaining this patch within a fork, can do so.

In fact, it’s already possible to enable hardware acceleration in Chromium on Ubuntu and other Linux distributions manually.

This method involves building an unstable and unsupported version of Chromium for Linux from source with the VA-API patch applied (though there’s a PPA to make things easier on Ubuntu).

It also requires generating some API keys, and adding a Chrome extension to force h264 HTML5 video playback on all sites.

With some further jiggery pokery it even possible to get hardware decoding working with “protected content” steams from services like Netflix.

Do you use hardware acceleration in Chrome for Linux? Do you want to?
Share your thoughts on this news in the comments below.
chromium google chrome Google Chrome graphics drivers hardware acceleration NVIDIA