back
77 comments
Cool, have been using vulkan video decoding via mpv for a while now and it seems fine with little or no performance hits. Glad it's made its way here as getting hardware decoding to actually work in ff has felt like a house of cards (more options are welcome). Does something need to be done to enable/switch to it?
The primary advantage of dedicated hardware accelerators for the past ~15 years been power efficiency, rather than performance. Not much of a problem on a desktop, but very noticeable on mobile devices.
8K decoding needs HW acceleration, unless having 8-16 cores with AVX-512.
I could also imagine the decoded output being pluggable into Vulkan-based filters (mpv uses https://code.videolan.org/videolan/libplacebo) without slow device->host copying.
Yes, while the Chrome/Chromium hardware decoding, or any other uses of the GPU, like WebGL, was always impeccable on Linux, with Firefox that was always an adventure, much more often not working than working (at least with an NVIDIA GPU).

So I also hope that Vulkan decoding might solve this behavior of Firefox on Linux.

> Yes, while the Chrome/Chromium hardware decoding, or any other uses of the GPU, like WebGL, was always impeccable on Linux

Have you seen the massive blacklist Chromium maintains?

Nvidia drivers on Linux are not really display quality. The effort goes towards CUDA for headless rigs. They work great for AI and that's it. Pair them with an AMD and Intel card for display, graphics and video acceleration. Otherwise you end up with too many cases of booting into a black screen, random software breaking, games not working, bad performance and just jank in general.
Interesting, I've personally had the exact opposite experience: Chromium hardware decoding was always half-broken for me and nearly impossible to get working, whereas in Firefox, I had to modify a single setting in "about:config" 5 years ago and it's worked perfectly ever since.
I understand this is important mainly for Nvidia GPUs. Is there any benefit at all for this (vs the existing VA-API) on Intel and AMD graphics? VA-API seems to work very well on both of these platforms, as far as I've tested.
It is important in the sense that many Linux programs did not bother to support both the Intel video API and the NVIDIA video API, so they work only with the Intel video API, which is also supported by AMD GPUs.

Programs that are converted to Vulkan should work with any GPUs.

VA-API works very well with the GPUs that support it, while the NVIDIA video API also works very well with the GPUs that support it, i.e. the NVIDIA GPUs.

The Vulkan video API has worked well for some time on NVIDIA, I switched my video player to it long ago.

Eventually the Vulkan video API should work well on all GPUs, so there will be a unified video API on Linux.

Considering Intel has vulkan video disabled in Mesa for recent chips, I’m guessing very little.

https://www.phoronix.com/news/Intel-Vulkan-Video-Disable-New

No, that is not true.

That link says that only the Vulkan video encode functions have been disabled, due to bugs.

Vulkan video decoding remains enabled also in the Intel GPU drivers.

VA API has some caveats and also requires one to disable sandboxing of the media process.
Sorry my comment was related to the nvidia vaapi driver
Interesting - will see if I can toy with it.

Word of caution though. I’ve found that on my machine (Linux/nvidia) unaccelerated video is way more power efficient. The second video is playing it kept the GPU in a high power state and that uses incrementally more power than the cpu doing software decoding

I had always assumed gpu would obviously be more efficient until I measured it

Are you using nvidia-vaapi-driver? If so, you'll need to set `CUDA_DISABLE_PERF_BOOST` in your environment.
Oh that’s interesting. I shall investigate thanks.

edit: very quick test with MPV seems to confirm this works - eliminates the gnarly additional GPU draw. Measuring draw at wall now puts CPU and GPU route on equal footing...both basically the machines idle draw. Tested both 264 and 265...same outcome. 3090.

Thanks!

Interesting.

through, from a pure power POV you probably would want to exclusively use the integrated graphics most CPUs have (1) with the external GPU powered down for most "daily/office-style" usage (browser, news, email, coding (not gamedev,etc.)) and only switch to external GPUs for Gaming, GPGPU, and I guess some edge cases like too many monitors or insisting on running a coding IDE at >240Hz ;)

EDIT, forgot the food note (1): Even the very very minimal GPU recent (non APU) AMD processors have are good enough for many peoples daily "office" needs.

No iGPU on my CPU (5800x3d). So was straight software decode (well maybe AVX2?) against GPU decode. GPU route was 80W more.

joebonrichie's comment was excellent though - there is a new nvidia tweak that eliminates the GPU going to a high power state the second it sniffs video. So now GPU & CPU get me the same draw.

>enough for many peoples daily "office" needs

Yeah been considering using my mac air for when not gaming / messing with LLMs, but frankly struggling with it on UX.

the story is kind of complicated, it's impossible to guess the culprit, you must profile. HDR content for example can sometimes incorrectly request a bespoke tonemapping instead of a video engine silicon one, like it does in libavcodec, or you have a privacy setting in your browser that breaks GPU compositing. so many little things can go wrong unfortunately.
I haven't been able to get Firefox GPU acceleration to work on Linux in forever.
Works out of the box for me on CachyOS, both amd and nvidia
i am bit confused, what does it mean by vulkan video decoding? does it mean that it will be done via gpu or via hardware accelerator sepcific to decoder via some vulkan extension? if it is via extension gpu would be free to do gpu specific things?
It's a Vulkan extension to use dedicated video decoders like QuickSync, NVDEC and VCN. It's not using shaders.
All modern CPUs come with an iGPU, so it's unlikely to be software decoding. Just iGPU driver's decoder being more efficient than dGPU one.
"All" really isn't true, most AM4 Ryzen chips don't have iGPU (unless they are specificly APUs), and a lot of Intel chips have popular 'F' SKUs without an iGPU.
The iGPU's video decoder could even be drastically less efficient than the dGPU's decoder, and it would still be better to use the iGPU, because just powering up the PCIe link and VRAM for the dGPU costs far more power than the video decoding itself.
What makes you think the unaccelerated path would use the accelerated iGPU path? Typically hardware decoding is disabled because of driver/reliability issues and thus would switch to software decoding to sidestep these concerns.
I assumed the OP/comment means "software vs. hardware accelerated rendering" when they say "it uses the CPU. And iGPU is still hardware accelerated rendering.

But some modern video codecs are designed to work quite okay with software rendering, especially if it's lower resolutions, and modern higher end dGPUs often have a pretty high "power overhead" on low utilization. To add to it the driver might keep it in a more high power state then strictly needed due to "expecting" more utilization, or similar.

Neither of the last two processors I've purchased in the last few years had any iGPU.
Not all, most desktop have two options with or without igpu.
Does this mean that AV1 on Youtube will finally not melt my CPU, while my nvidia GPU is asleep, or is this just an enabler that will require more work to build upon?
If the GPU is new enough to include a hardware AV1 decoder.

For NVIDIA, that means Ampere or newer (RTX 30xx or newer).

Turing or older (RTX 20xx or older) do not have support for AV1.

Vulkan has the advantage of providing a unified interface for video decoding.

Previously on Linux some programs were written to use only the Intel API or only the NVIDIA API. Fewer programs could use any of the 2 video APIs. (The AMD GPUs also supported the Intel API.)

With Vulkan, the same program should work with any GPU.

Vulkan has specific functions for different video codecs. To be able to use the hardware GPU support for AV1, the program that uses Vulkan for video decoding must also include support for AV1, i.e. it must invoke the corresponding Vulkan functions.

For now, it is not clear if Firefox already includes support for all codecs. In the initial version they could have included only partial Vulkan support, for instance only for H.264 video decoding, with the intention to add complete Vulkan support in some future version.

Hopefully this will be supported on Intel Arc cards that have hardware encoding and decoding.
Note that Firefox 153 Stable and ESR are not released until tomorrow (Tuesday July 21). Mozilla generally uploads them to the servers the day before.
Was there a link to the project on Github? I think that you've mistakenly shared Github's search tool/path
Here's the Bugzilla link which was closed last month: https://bugzilla.mozilla.org/show_bug.cgi?id=2021722
Yup, it's pointing to https://github.com/search
I expect it's the https://github.com/search?q=repo%3Amozilla-firefox%2Ffirefox... link that phoronix used in lieu of linking to an actual github issue.
How is the built-in website translation story in Firefox? To be honest, the only reason I'm forced to use Chrome is the way translate quite seamlessly works, both the detection (with mixed-language content in sites with English ads) and the actual translation.

I did try Bergamot but that was a year ago, and the experience was not as good as Chrome...

Support for in-place website translations has been introduced in FF 118, initially for a handful of western languages, now 50 languages. There is also support for translating highlighted text and user text with about:translations.

It's fully local, which means the translation might not be as good as what Google can do, but it's good enough to use, and in my experience it's usually faster, as there is no network latency (except for the first translation between a language pair, which takes a little while to download the weights).

There are a couple built-in ways you can translate, all of them fully local. First is the full page translation and another that allows you to translate a selection (from the context menu.) Fully local nature, of course, reduces the translation capabilities, but I found the quality to be good enough to very rarely need an external service.
>How is the built-in website translation story in Firefox?

It's broken.

The button is there and is clickable, and there even is an animation near the address bar, but it doesn't actually do anything.

Really good. I use it frequently and haven't had any reason to switch to an external offering. It can translate the whole page or just a snippet that you highlight.