Chromium: Accelerated h.264 video decode possible with Nvidia driver 390?

Hello all,

please let me askyou for your help.

I am using a rather old computer with Manjaro Linux and I am just wondering if hardware-accelerated video playback is possible at all on that rig, using Chromium or Firefox.

I am now entirely confused: There is chromium and chromium-vaapi - and it is said that they are redundant now because chromium also includes vaapi support.
However, chromium-vaapi (AUR) is continued to be maintained.

I am able to enable accelerated video decoding according to the information in the Arch Wiki. However, as soo as it is enabled, I am unable to get any clear video output. Instead of the video contents, fragments from my own desktop appear.
Audio remains fine.

See screenshot:

vainfo says:

vainfo: VA-API version: 1.10 (libva 2.10.0)
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG4Simple            :	VAEntrypointVLD
      VAProfileMPEG4AdvancedSimple    :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD

vdpauinfo says:

display: :0   screen: 0
API version: 1
Information string: NVIDIA VDPAU Driver Shared Library  390.138  Thu May 14 04:01:38 PDT 2020

Video surface:

name   width height types
-------------------------------------------
420     4096  4096  NV12 YV12 
422     4096  4096  UYVY YUYV 

Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
MPEG1                           0  8192  2048  2048
MPEG2_SIMPLE                    3  8192  2048  2048
MPEG2_MAIN                      3  8192  2048  2048
H264_BASELINE                  41  8192  2048  2048
H264_MAIN                      41  8192  2048  2048
H264_HIGH                      41  8192  2048  2048
VC1_SIMPLE                      1  8190  2048  2048
VC1_MAIN                        2  8190  2048  2048
VC1_ADVANCED                    4  8190  2048  2048
MPEG4_PART2_SP                  3  8192  2048  2048
MPEG4_PART2_ASP                 5  8192  2048  2048
DIVX4_QMOBILE                   0  8192  2048  2048
DIVX4_MOBILE                    0  8192  2048  2048
DIVX4_HOME_THEATER              0  8192  2048  2048
DIVX4_HD_1080P                  0  8192  2048  2048
DIVX5_QMOBILE                   0  8192  2048  2048
DIVX5_MOBILE                    0  8192  2048  2048
DIVX5_HOME_THEATER              0  8192  2048  2048
DIVX5_HD_1080P                  0  8192  2048  2048
H264_CONSTRAINED_BASELINE      41  8192  2048  2048
H264_EXTENDED                  41  8192  2048  2048
H264_PROGRESSIVE_HIGH          41  8192  2048  2048
H264_CONSTRAINED_HIGH          41  8192  2048  2048
H264_HIGH_444_PREDICTIVE       41  8192  2048  2048
VP9_PROFILE_0                  --- not supported ---
VP9_PROFILE_1                  --- not supported ---
VP9_PROFILE_2                  --- not supported ---
VP9_PROFILE_3                  --- not supported ---
HEVC_MAIN                      --- not supported ---
HEVC_MAIN_10                   --- not supported ---
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  --- not supported ---
HEVC_MAIN_444_10               --- not supported ---
HEVC_MAIN_444_12               --- not supported ---

Output surface:

name              width height nat types
----------------------------------------------------
B8G8R8A8         16384 16384    y  Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8 
R10G10B10A2      16384 16384    y  Y8U8V8A8 V8U8Y8A8 A4I4 I4A4 A8I8 I8A8 

Bitmap surface:

name              width height
------------------------------
B8G8R8A8         16384 16384
R8G8B8A8         16384 16384
R10G10B10A2      16384 16384
B10G10R10A2      16384 16384
A8               16384 16384

Video mixer:

feature name                    sup
------------------------------------
DEINTERLACE_TEMPORAL             y
DEINTERLACE_TEMPORAL_SPATIAL     y
INVERSE_TELECINE                 y
NOISE_REDUCTION                  y
SHARPNESS                        y
LUMA_KEY                         y
HIGH QUALITY SCALING - L1        y
HIGH QUALITY SCALING - L2        -
HIGH QUALITY SCALING - L3        -
HIGH QUALITY SCALING - L4        -
HIGH QUALITY SCALING - L5        -
HIGH QUALITY SCALING - L6        -
HIGH QUALITY SCALING - L7        -
HIGH QUALITY SCALING - L8        -
HIGH QUALITY SCALING - L9        -

parameter name                  sup      min      max
-----------------------------------------------------
VIDEO_SURFACE_WIDTH              y         1     4096
VIDEO_SURFACE_HEIGHT             y         1     4096
CHROMA_TYPE                      y  
LAYERS                           y         0        4

attribute name                  sup      min      max
-----------------------------------------------------
BACKGROUND_COLOR                 y  
CSC_MATRIX                       y  
NOISE_REDUCTION_LEVEL            y      0.00     1.00
SHARPNESS_LEVEL                  y     -1.00     1.00
LUMA_KEY_MIN_LUMA                y  
LUMA_KEY_MAX_LUMA                y  

Here is what inxi -Fxxxza -no-host says about that system:

System:    Host: gerd-desktop Kernel: 5.9.16-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 
           parameters: BOOT_IMAGE=/boot/vmlinuz-5.9-x86_64 root=UUID=345b76c0-f339-4ca7-8582-440f229512a1 rw quiet 
           acpi_enforce_resources=lax "acpi_osi=Windows 2009" loglevel=3 root=UUID=345b76c0-f339-4ca7-8582-440f229512a1 ro 
           resume=UUID=a9353f2a-2cf9-4d4e-ada9-f72d8602045e vga=off nvidia-drm.modeset=1 
           Desktop: Pantheon info: wingpanel, plank wm: gala dm: LightDM 1.30.0 Distro: Manjaro Linux 
Machine:   Type: Desktop Mobo: Foxconn model: H67M-S/H67M-V/H67M serial: <filter> BIOS: American Megatrends v: C29F1P03 
           date: 03/15/2013 
CPU:       Info: Dual Core model: Intel Core i3-2105 bits: 64 type: MT MCP arch: Sandy Bridge family: 6 model-id: 2A (42) 
           stepping: 7 microcode: 2F L2 cache: 3 MiB 
           flags: avx lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 bogomips: 24754 
           Speed: 1596 MHz min/max: 1600/3100 MHz Core speeds (MHz): 1: 1596 2: 1596 3: 1597 4: 1596 
           Vulnerabilities: Type: itlb_multihit status: KVM: VMX unsupported 
           Type: l1tf mitigation: PTE Inversion 
           Type: mds mitigation: Clear CPU buffers; SMT vulnerable 
           Type: meltdown mitigation: PTI 
           Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via prctl and seccomp 
           Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer sanitization 
           Type: spectre_v2 mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling 
           Type: srbds status: Not affected 
           Type: tsx_async_abort status: Not affected 
Graphics:  Device-1: NVIDIA GF116 [GeForce GTX 550 Ti] vendor: Gigabyte driver: nvidia v: 390.138 
           alternate: nouveau,nvidia_drm bus ID: 01:00.0 chip ID: 10de:1244 
           Display: x11 server: X.Org 1.20.10 driver: nvidia display ID: :0 screens: 1 
           Screen-1: 0 s-res: 3600x1080 s-dpi: 96 s-size: 953x286mm (37.5x11.3") s-diag: 995mm (39.2") 
           Monitor-1: DVI-I-2 res: 1920x1080 hz: 60 dpi: 82 size: 598x336mm (23.5x13.2") diag: 686mm (27") 
           Monitor-2: DVI-I-3 res: 1680x1050 hz: 60 dpi: 90 size: 474x296mm (18.7x11.7") diag: 559mm (22") 
           OpenGL: renderer: llvmpipe (LLVM 11.0.0 256 bits) v: 4.5 Mesa 20.3.1 compat-v: 3.1 direct render: Yes 
Audio:     Device-1: Intel 6 Series/C200 Series Family High Definition Audio vendor: Foxconn driver: snd_hda_intel v: kernel 
           bus ID: 00:1b.0 chip ID: 8086:1c20 
           Device-2: NVIDIA GF116 High Definition Audio vendor: Gigabyte driver: snd_hda_intel v: kernel bus ID: 01:00.1 
           chip ID: 10de:0bee 
           Device-3: Creative Live! Cam Chat HD [VF0700] type: USB driver: hid-generic,snd-usb-audio,usbhid,uvcvideo 
           bus ID: 1-1.3:5 chip ID: 041e:4097 serial: <filter> 
           Sound Server: ALSA v: k5.9.16-1-MANJARO 
Network:   Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet vendor: Foxconn driver: r8169 v: kernel port: d000 
           bus ID: 03:00.0 chip ID: 10ec:8168 
           IF: enp3s0 state: up speed: 1000 Mbps duplex: full mac: <filter> 
           Device-2: AVM Fritz!Card PCI v2.0 ISDN driver: N/A modules: avmfritz port: c000 bus ID: 05:01.0 chip ID: 1244:0e00 
Drives:    Local Storage: total: 1.35 TiB used: 361.33 GiB (26.2%) 
           SMART Message: Unable to run smartctl. Root privileges required. 
           ID-1: /dev/sda maj-min: 8:0 vendor: Intenso model: SSD SATAIII size: 447.13 GiB block size: physical: 512 B 
           logical: 512 B speed: 6.0 Gb/s serial: <filter> rev: 4A0 
           ID-2: /dev/sdb maj-min: 8:16 vendor: Seagate model: ST31000333AS size: 931.51 GiB block size: physical: 512 B 
           logical: 512 B speed: 3.0 Gb/s serial: <filter> rev: CC3H 
Partition: ID-1: / raw size: 438.54 GiB size: 430.65 GiB (98.20%) used: 103.37 GiB (24.0%) fs: ext4 dev: /dev/sda1 
           maj-min: 8:1 
           ID-2: /home raw size: 915 GiB size: 899.64 GiB (98.32%) used: 257.96 GiB (28.7%) fs: ext4 dev: /dev/sdb1 
           maj-min: 8:17 
Swap:      Kernel: swappiness: 60 (default) cache pressure: 100 (default) 
           ID-1: swap-1 type: partition size: 16.51 GiB used: 0 KiB (0.0%) priority: -2 dev: /dev/sdb2 maj-min: 8:18 
Unmounted: ID-1: /dev/sda2 maj-min: 8:2 size: 8.59 GiB fs: swap label: N/A uuid: 93a8c883-d1aa-4065-b4e4-3ebec6573726 
Sensors:   System Temperatures: cpu: 29.8 C mobo: 27.8 C gpu: nvidia temp: 56 C 
           Fan Speeds (RPM): N/A gpu: nvidia fan: 61% 
Info:      Processes: 219 Uptime: 1h 04m wakeups: 0 Memory: 7.74 GiB used: 2.79 GiB (36.0%) Init: systemd v: 247 Compilers: 
           gcc: 10.2.0 clang: 11.0.0 Packages: pacman: 1541 lib: 420 Shell: Bash v: 5.1.0 running in: io.elementary.t 
           inxi: 3.2.01 

Works with standard chromium from official repo. The pkg manjaro-vaapi make things easier.
Have you set correct flags ?


My old notebook also runs nvidia 390xxx.

Any Nvidia cards, any Nvidia drivers does not support any hardware acceleration in any browser

No, this is about igpu.

That’s kind of overkill as all that’s needed is libva-vdpau-driver for NVIDIA.

This is what I have installed:

❯ pacman -Qs vdpau
local/lib32-libva-vdpau-driver 0.7.4-6
    VDPAU backend for VA API (32-bit)
local/lib32-libvdpau 1.4-1
    Nvidia VDPAU library
local/libva-vdpau-driver-chromium 0.7.4-7.1
    VDPAU backend for VA API. (special version for chromium)
local/libvdpau 1.4-1
    Nvidia VDPAU library
local/vdpauinfo 1.4-1
    Command line utility for querying the capabilities of a VDPAU device

I also have the enhanced-h264ify extension installed.

Not true at all. I have hardware acceleration working in Chromium just fine.

experimental, unstable without guarantees and promises for the future

Apparently there are issues with acceleration in Chromium with the NVIDIA driver <=390:

https://bbs.archlinux.org/viewtopic.php?pid=1945253#p1945253

Thank you very much for your responses / thoughts.

I reset to an earlier state using timeshift. Unfortunately, there, I only had chromium 85, with no hardware accelerated video playback as well.

So I tried to update everything step by step.

First, MojoVideoDecoder failed to initialize:

|00:00:05.563|info|"Failed to initialize MojoVideoDecoder"|

chrome://gpu says:

879:879:1223/234300.465268:ERROR:vaapi_wrapper.cc(962)] : vaQuerySurfaceAttributes failed, VA error: invalid parameter
[879:879:1223/234300.465555:ERROR:vaapi_wrapper.cc(919)] : FillProfileInfo_Locked failed for va_profile VAProfileH264Main and entrypoint VAEntrypointVLD
[879:879:1223/234300.465662:ERROR:vaapi_wrapper.cc(962)] : vaQuerySurfaceAttributes failed, VA error: invalid parameter
[879:879:1223/234300.465737:ERROR:vaapi_wrapper.cc(919)] : FillProfileInfo_Locked failed for va_profile VAProfileH264High and entrypoint VAEntrypointVLD
[879:879:1223/234300.532655:ERROR:sandbox_linux.cc(374)] : InitializeSandbox() called with multiple threads in process gpu-process.
[879:879:1223/234306.355458:WARNING:gl_surface_glx.cc(840)] : Could not disable vsync: driver does not support swap control
[879:879:1223/234312.538081:WARNING:gl_surface_glx.cc(840)] : Could not disable vsync: driver does not support swap control

This was due to libva-vdpau-driver-chromium still missing.
But as soon as I had it installed, MojoVideoDecoder is loaded but I get the error shown in my first post. Same happens with libva-vdpau-driver-vp9-git :frowning:

Please do not post on the Arch forums for support unless you are using Arch. Arch is not Manjaro; Manjaro is not Arch. I see you’ve already been called out.

Indeed, it looks like a Manjaro problem, as the Manjaro version of nvidia-390xx-utils fails to extend the module path for X. See chromium: hardware video acceleration with VA-API (Page 20) / Applications & Desktop Environments / Arch Linux Forums for details.