Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linux VaapiVideoDecoder HEVC 硬解码支持的现况总结 #74

Open
FirstLieutenantJakeDunn opened this issue Jun 15, 2024 · 4 comments

Comments

@FirstLieutenantJakeDunn

TL;DR:

  1. Linux下目前 Chromium 的 AV1 和 HEVC 的实现只支持了 VAAPIVideoDecoder
  2. VAAPIVideoDecoder 需要 libva2 大于一定版本
    (测试过的最低成功版本是 Debian 12 官方库下的 libva2_2.17.0-1)
    (测试过的最高失败版本是 Ubuntu 22.04.4 LTS 官方库下的 libva2_2.14.0-1)
    (libva2 版本过低可通过第三方库尝试升级 或 直接从 https://github.com/intel/libva.git 拉取源代码本地编译安装最新版)
  3. VAAPIVideoDecoder 需要启用 Vulkan 渲染
  4. VAAPIVideoDecoder 需要 mesa-vulkan-drivers 大于一定版本(使用 Mesa 的情况下)
    (测试过的最低成功版本是 Debian 12 官方库下的 mesa-vulkan-drivers_22.3.6-1+deb12u1)
    (Mesa 22.0 Released With Vulkan 1.3)
    (mesa-vulkan-drivers 版本过低建议直接更新换系统)
    目前测试结果表现为需要实际安装的显卡驱动实现了 Vulkan 1.3 及以上版本,否则大概率不成功
  5. 需要 Chromium >= 124 (Electron >= 30) (使用 Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630] 核显测试)
    并且需要附加额外的启动参数:
    --use-gl=angle
    --use-angle=vulkan
    --enable-accelerated-video-decode
    --enable-features=Vulkan,VulkanFromANGLE,DefaultANGLEVulkan,VaapiIgnoreDriverChecks,VaapiVideoDecoder,PlatformHEVCDecoderSupport,UseMultiPlaneFormatForHardwareVideo
  6. 可能仅在 X11 环境下才行,Wayland 环境下未测试
  7. 目前的主流 Linux 发行版中,最低成功版本是 Debian 12 官方库下的 libva2_2.17.0-1, mesa-vulkan-drivers_22.3.6-1+deb12u1
@FirstLieutenantJakeDunn
Copy link
Author

验证方法:

  1. 视频播放时 chrome://media-internals 中应该显示 kVideoDecoderName: VaapiVideoDecoder)
  2. chrome://gpu 中应该显示 Video Decode: Hardware accelerated,
    Video Acceleration Information 中应该显示显卡正确的解码能力,
    例如:
    Video Acceleration Information
    ==============================
    Decoding :
    Decode h264 baseline : 16x16 to 8192x8192 pixels
    Decode h264 main : 16x16 to 8192x8192 pixels
    Decode h264 high : 16x16 to 8192x8192 pixels
    Decode vp9 profile0 : 16x16 to 8192x8192 pixels
    Decode vp9 profile2 : 16x16 to 8192x8192 pixels
    Decode hevc main : 16x16 to 8192x8192 pixels
    Decode hevc main 10 : 16x16 to 8192x8192 pixels
    Decode hevc main still-picture: 16x16 to 8192x8192 pixels
  3. chrome://gpu 中应该显示 Vulkan: Enabled
  4. vulkaninfo 显示 Vulkan Instance Version: 1.3.XXX

@FirstLieutenantJakeDunn
Copy link
Author

经过不同版本测试后总结:
以下是使用 Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630] 核显,
在 Chromium >= 124 (Electron >= 30) 下,
使用上文所述的附加参数启动,
可以正确调用 VaapiVideoDecoder 解码 HEVC 视频的系统及配套官方仓库软件版本:
Debian 12 Kernel Version 6.1 libc6_2.36-9+deb12u4_amd64.deb libva2_2.17.0-1 mesa-vulkan-drivers_22.3.6-1+deb12u1
Ubuntu 24.04 LTS Kernel Version 6.8 libc6_2.39-0ubuntu8 libva2_2.20.0-2build1 mesa-vulkan-drivers_24.0.5-1ubuntu1
deepin V23 RC Kernel Version 6.6 libc6_2.38-6deepin3 libva2_2.20.0-2 mesa-vulkan-drivers_24.0.1-1deepin3
openKylin 2.0 Beta1 Kernel Version 6.6 libc6_2.38-lok6.9 libva2_2.20.0-ok1 mesa-vulkan-drivers_24.0.5-ok1

@FirstLieutenantJakeDunn
Copy link
Author

对于 Intel 核显(使用 Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630] 核显测试):
统信UOS桌面专业版AMD64(1070 HWE版本)支持:Intel、AMD等新一代硬件,提供最佳兼容性
UOS 20 1070 HWE Kernel Version 6.1.32 libc6_2.28.30-deepin1 libva2_2.14.0-1 mesa-vulkan-drivers_23.1.2.3-1
vainfo 可以显示解码能力,但 chrome://gpus 内不显示解码能力。
搭建编译环境依赖,并从 https://github.com/intel/libva.git 下载源代码,本地编译安装后
目前代码仓库 libva2_2.22
Electron = 22 或 Electron >= 28
可以正确调用 VaapiVideoDecoder 解码 HEVC 视频
23 <= Electron <= 27
尝试调用 VaapiVideoDecoder 解码报错后退回至 ffmpeg 软解码

@maxkwok
Copy link

maxkwok commented Aug 19, 2024

对于 Intel 核显(使用 Intel Corporation CoffeeLake-S GT2 [UHD Graphics 630] 核显测试): 统信UOS桌面专业版AMD64(1070 HWE版本)支持:Intel、AMD等新一代硬件,提供最佳兼容性 UOS 20 1070 HWE Kernel Version 6.1.32 libc6_2.28.30-deepin1 libva2_2.14.0-1 mesa-vulkan-drivers_23.1.2.3-1 vainfo 可以显示解码能力,但 chrome://gpus 内不显示解码能力。 搭建编译环境依赖,并从 https://github.com/intel/libva.git 下载源代码,本地编译安装后 目前代码仓库 libva2_2.22 Electron = 22 或 Electron >= 28 可以正确调用 VaapiVideoDecoder 解码 HEVC 视频 23 <= Electron <= 27 尝试调用 VaapiVideoDecoder 解码报错后退回至 ffmpeg 软解码

你好,我正在测试摩尔线程的显卡,求教以下再统信下的chromium浏览器是编译安装还是下载deb包?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants