Request for Hardware-accelerated video decode (vaapi) on Linux!

Dear “Brave” developers, good afternoon!

I would ask you to add Hardware-accelerated video decode (vaapi) on Brave browser on Linux!

For some reason Google has removed that option form Chromium project on Linux by default, but there is a chromium project that patched vaapi! https://aur.archlinux.org/packages/chromium-vaapi-bin/

It’s very important for many of Linux users to have that option because without vaapi, when you watch a video with vp09 codec (Every video on YouTube nowadays) at 60fps or 4K, the system’s CPU, can load up to 90%!

On the other hand, with vaapi enabled CPU can decode a video in company with the GPU and as final result, the CPU’s load is about 25%!

In conclusion, you could use the available patch (https://aur.archlinux.org/cgit/aur.git/tree/chromium-vaapi.patch?h=chromium-vaapi) to bring back this very important feature!

Many thanks,
Mark A

1 Like

Yes. Brave community please take a look into this. I installed brave yesterday on kubuntu and there was an option to enable hardware-accelerated-video-decode but today brave received an update and that option is gone and I am back to software decode which is using too much of my CPU. Please take this as a priority issue!

1 Like

Surprising to me that this is still not supported. I spend most of my time on activities that benefit from hardware acceleration, and by my observation, Brave typically sits at at least double the CPU usage of Firefox. This is the only reason I use Firefox as my primary browser.

This is a good resource: https://wiki.archlinux.org/title/Chromium#Hardware_video_acceleration

On Fedora 40, I found that the flag --enable-features=VaapiVideoDecodeLinuxGL works for me.

Didn’t work for me on Fedora 41 and Brave 1.75.166

Here are my system specs:

$ inxi -S
System:
  Host: fedora Kernel: 6.12.10-200.fc41.x86_64 arch: x86_64 bits: 64
  Desktop: Cinnamon v: 6.4.6 Distro: Fedora Linux 41 (Cinnamon)

$ lspci | grep -E "VGA|3D" | grep -o -i -E "amd|intel|nvidia" | sort -u | tr '[:upper:]' '[:lower:]'
amd

$ echo $XDG_SESSION_TYPE
x11
chrome://version
1.75.166 Chromium: 132.0.6834.111 (Official Build) beta (64-bit) 

Tried with these sets of flags too
~/.config/BraveSoftware/Brave-Browser-Beta/brave-flags.conf

## X11 + AMD GPU Configuration
--use-gl=angle
--use-angle=vulkan
--enable-native-gpu-memory-buffers
--enable-gpu-memory-buffer-video-frames
--enable-zero-copy
--ignore-gpu-blocklist
--disable-gpu-driver-bug-workarounds
--enable-gpu-rasterization
--ozone-platform-hint=auto
--disable-breakpad
--enable-features=AcceleratedVideoDecodeLinuxGL,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE,VaapiIgnoreDriverChecks

Output from vainfo

$ vainfo
Trying display: wayland
Trying display: x11
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri-nonfree/radeonsi_drv_video.so
libva info: Trying to open /usr/lib64/dri-freeworld/radeonsi_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Mesa Gallium driver 24.3.3 for AMD Radeon Graphics (radeonsi, renoir, LLVM 19.1.0, DRM 3.59, 6.12.10-200.fc41.x86_64)
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc

you just need to change .desktop file with correct launch parameters like

sudo nano /usr/share/applications/brave-browser.desktop

Exec=brave --enable-features=VaapiVideoDecoder,VaapiIgnoreDriverChecks,Vulkan,DefaultANGLEVulkan,VulkanFromANGLE --ozone-platform=wayland %U

1 Like

I think many would agree - and be grateful for - that all those necessary switches (for VAAPI) came as defaults in what is already packaged & shipped by Brave, including Flatpacks.
It’s highest time for Brave dev to treat Linux devel a bit less like foster parents do.
many thanks, L.

1 Like