Hardware acceleration problem with browsers

Hardware acceleration works with vlc but not with chromium and firefox. I want to use the intel Xe graphics card.

What I have done so far:

  • Gone through the whole arch wiki and nothing seems to work.
  • Used combination of many different flags for chromium still doesn’t work and changed stuff in firefox about:config.
  • I have installed the intel-media-driver and verified my vaapi and vdapau configs also.
  • CPU goes to 100% if i try to watch just 2 seconds of a 8k video. Please help.
> inxi -G
  Device-1: Intel TigerLake-LP GT2 [Iris Xe Graphics] driver: i915 v: kernel
  Device-2: NVIDIA GP108M [GeForce MX330] driver: nvidia v: 510.47.03
  Device-3: Realtek Integrated_Webcam_HD type: USB driver: uvcvideo
  Display: x11 server: X.org driver: loaded: intel,nouveau
    resolution: <missing: xdpyinfo>
  OpenGL: renderer: Mesa Intel Xe Graphics (TGL GT2) v: 4.6 Mesa 21.3.5
> cat /etc/environment                                                                    ✔ 
# This file is parsed by pam_env module
# Syntax: simple "KEY=VAL" pairs on separate lines

You should start by sharing what vainfo shows.

Thanks a lot for replying sir.

vainfo: VA-API version: 1.13 (libva 2.13.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 21.4.3 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileNone                   : VAEntrypointStats
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointFEI
      VAProfileH264Main               : VAEntrypointEncSliceLP
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointFEI
      VAProfileH264High               : VAEntrypointEncSliceLP
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointVLD
      VAProfileJPEGBaseline           : VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointFEI
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointVLD
      VAProfileHEVCMain               : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointFEI
      VAProfileHEVCMain               : VAEntrypointEncSliceLP
      VAProfileHEVCMain10             : VAEntrypointVLD
      VAProfileHEVCMain10             : VAEntrypointEncSlice
      VAProfileHEVCMain10             : VAEntrypointEncSliceLP
      VAProfileVP9Profile0            : VAEntrypointVLD
      VAProfileVP9Profile1            : VAEntrypointVLD
      VAProfileVP9Profile2            : VAEntrypointVLD
      VAProfileVP9Profile3            : VAEntrypointVLD
      VAProfileHEVCMain12             : VAEntrypointVLD
      VAProfileHEVCMain12             : VAEntrypointEncSlice
      VAProfileHEVCMain422_10         : VAEntrypointVLD
      VAProfileHEVCMain422_10         : VAEntrypointEncSlice
      VAProfileHEVCMain422_12         : VAEntrypointVLD
      VAProfileHEVCMain422_12         : VAEntrypointEncSlice
      VAProfileHEVCMain444            : VAEntrypointVLD
      VAProfileHEVCMain444            : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_10         : VAEntrypointVLD
      VAProfileHEVCMain444_10         : VAEntrypointEncSliceLP
      VAProfileHEVCMain444_12         : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointVLD
      VAProfileHEVCSccMain            : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain10          : VAEntrypointVLD
      VAProfileHEVCSccMain10          : VAEntrypointEncSliceLP
      VAProfileHEVCSccMain444         : VAEntrypointVLD
      VAProfileHEVCSccMain444         : VAEntrypointEncSliceLP
      VAProfileAV1Profile0            : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointVLD
      VAProfileHEVCSccMain444_10      : VAEntrypointEncSliceLP

same thing easy to read - http://0x0.st/o8-e.txt

Assuming you are on x11, you need to launch chromium with --use-gl=desktop --enable-features=VaapiVideoDecoder

Then use chrome://gpu from inside the browser to check the configuration.

You want to see:

Canvas: Hardware accelerated
Compositing: Hardware accelerated
Video Decode: Hardware accelerated
WebGL: Hardware accelerated
WebGL2: Hardware accelerated

@dalto I have tried that. Every single one of them from https://bbs.archlinux.org/viewtopic.php?id=244031&p=26.

Doesnt work on firefox too.

Then share the result. What is chrome://gpu showing when you use those flags? Also, don’t use all those flags from that topic. Just the two I posted.

Of course not, that is only for chromium-based browsers

It is enabled. Are you sure your hardware supports decoding whatever codec is being used on that 8k video?

How to know if it does or not. VLC works as intel gpu top shows some percetnage in video section.

Hardware info
  Type: Laptop System: Dell product: Inspiron 5502 v: N/A
    serial: <superuser required> Chassis: type: 10 serial: <superuser required>
  Mobo: Dell model: 0HWH1N v: A00 serial: <superuser required> UEFI: Dell
    v: 1.8.0 date: 10/01/2021
  ID-1: BAT0 charge: 20.4 Wh (41.8%) condition: 48.8/53.0 Wh (92.0%)
    volts: 14.4 min: 15.0 model: SMP DELL 9077G0A type: Li-poly serial: <filter>
    status: Discharging
  Info: model: 11th Gen Intel Core i5-1135G7 bits: 64 type: MT MCP
    arch: Tiger Lake family: 6 model-id: 0x8C (140) stepping: 1 microcode: 0x88
  Topology: cpus: 1x cores: 4 tpc: 2 threads: 8 smt: enabled cache:
    L1: 320 KiB desc: d-4x48 KiB; i-4x32 KiB L2: 5 MiB desc: 4x1.2 MiB L3: 8 MiB
    desc: 1x8 MiB
  Speed (MHz): avg: 2007 high: 2236 min/max: 400/4200 scaling:
    driver: intel_pstate governor: powersave cores: 1: 1873 2: 1997 3: 2186
    4: 1894 5: 1749 6: 2079 7: 2236 8: 2046 bogomips: 22120
  Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  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: Enhanced IBRS, IBPB: conditional, RSB filling
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
  Device-1: Intel TigerLake-LP GT2 [Iris Xe Graphics] vendor: Dell
    driver: i915 v: kernel bus-ID: 0000:00:02.0 chip-ID: 8086:9a49
    class-ID: 0300
  Device-2: NVIDIA GP108M [GeForce MX330] vendor: Dell driver: nvidia
    v: 510.47.03 alternate: nouveau,nvidia_drm bus-ID: 0000:2b:00.0
    chip-ID: 10de:1d16 class-ID: 0302
  Device-3: Realtek Integrated_Webcam_HD type: USB driver: uvcvideo
    bus-ID: 3-6:4 chip-ID: 0bda:5538 class-ID: 0e02 serial: <filter>
  Display: x11 server: X.org compositor: kwin_x11 driver:
    loaded: intel,nouveau resolution: <missing: xdpyinfo>
  OpenGL: renderer: Mesa Intel Xe Graphics (TGL GT2) v: 4.6 Mesa 21.3.5
    direct render: Yes
  Device-1: Intel Tiger Lake-LP Smart Sound Audio vendor: Dell
    driver: sof-audio-pci-intel-tgl
    alternate: snd_hda_intel,snd_sof_pci_intel_tgl bus-ID: 0000:00:1f.3
    chip-ID: 8086:a0c8 class-ID: 0401
  Sound Server-1: ALSA v: k5.15.21-1-MANJARO running: yes
  Sound Server-2: PulseAudio v: 15.0 running: no
  Sound Server-3: PipeWire v: 0.3.45 running: yes
  Device-1: Qualcomm Atheros QCA6174 802.11ac Wireless Network Adapter
    vendor: Dell driver: ath10k_pci v: kernel bus-ID: 0000:2c:00.0
    chip-ID: 168c:003e class-ID: 0280
  IF: wlp44s0 state: up mac: <filter>
  Device-1: Qualcomm Atheros type: USB driver: btusb v: 0.8 bus-ID: 3-10:5
    chip-ID: 0cf3:e007 class-ID: e001
  Report: rfkill ID: hci0 rfk-id: 1 state: down bt-service: disabled
    rfk-block: hardware: no software: no address: see --recommends
  Hardware-1: Intel Volume Management Device NVMe RAID Controller driver: vmd
    v: 0.6 port: N/A bus-ID: 0000:00:0e.0 chip-ID: 8086:9a0b rev: class-ID: 0104
  Local Storage: total: 476.94 GiB used: 99.93 GiB (21.0%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Toshiba
    model: KBG40ZNS512G NVMe KIOXIA 512GB size: 476.94 GiB block-size:
    physical: 512 B logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD
    serial: <filter> rev: 10410106 temp: 75.8 C scheme: GPT
  ID-1: / raw-size: 250.54 GiB size: 245.61 GiB (98.03%)
    used: 74.96 GiB (30.5%) fs: ext4 dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
    used: 300 KiB (0.1%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
  Kernel: swappiness: 10 (default 60) cache-pressure: 100 (default)
  ID-1: swap-1 type: file size: 4 GiB used: 228.5 MiB (5.6%) priority: -2
    file: /swapfile
  System Temperatures: cpu: 68.0 C mobo: N/A
  Fan Speeds (RPM): cpu: 5309
  Processes: 275 Uptime: 1h 30m wakeups: 13949 Memory: 7.5 GiB
  used: 3.01 GiB (40.2%) Init: systemd v: 250 tool: systemctl Compilers:
  gcc: 11.1.0 clang: 13.0.1 Packages: pacman: 1316 lib: 334 Shell: Zsh v: 5.8
  running-in: konsole inxi: 3.3.12

Its late here dalto. I hope I can get some help tommorrow. Thanks a lot.

For Firefox, you need to launch it from terminal: MOZ_LOG="PlatformDecoderModule:5" firefox
Then, open a youtube video and watch the logs

This :point_up: Chromium will only support VP9 and h264

Also, there’s a couple of comments in this reddit thread that indicate video decoding might be broke in version 98

For Firefox did you see this section of the Arch wiki?

It works now on firefox with these properties in about:config

    gfx.webrender.all → true
    media.ffmpeg.vaapi.enabled → true
    media.av1.enabled → false #most important

Will report back if I am able to get it work in chromium. Thanks.

Just FYI, starting with Firefox 97 setting media.ffvpx.enabled and media.rdd-vpx.enabled should not be necessary anymore.

Yes i reverted back those settings and it still works. Thanks. edited the post

Also I just read that about a month ago AV1 decoding was also finished. But I’m not sure if it already is merged to Firefox or under what hardware it is possible.

Found something new today…

In this website, you can configure the preference for AV1 and VP9 in Youtube…

1 Like

Now works on chromium 98 too -

--disable-features=UseChromeOSDirectVideoDecoder #most important
1 Like

Want to add my experience, maybe it helps someone:

I also followed the arch wiki but couldn’t get firefox to work but chromium worked. The solution was to force hardware WebRender with the environment variable MOZ_WEBRENDER=1.

Setting the flag gfx.webrender.all in about:config to true did not work and the decision log in about:support still displayed

hw_compositing: blocked by env: Acceleration blocked by platform
webrender: disabled by env: Not qualified

Confirmed I got the same problem. Just moved back from Manjaro.

  • On Manjaro, I just need to follow guide from Arch Wiki ( media.ffmpeg.vaapi.enabled to true)
  • On EndeavourOS, I need to add MOZ_WEBRENDER=1 as @daniel suggested, on top of Wiki guide

The main problem is WebRender is forced to be software WR, which doesn’t satisfy the requirement from Arch Wiki:

Ensure you are not running Software WebRender as that will not work as of August 2021. If necessary WebRender can be force enabled…

You got hardware acceleration working on Chromium98?

May I ask what desktop environment you are using please?