免责声明

本文记录本人在 Fedora Workstation 43 上折腾 Intel Arc 130T/140T 系列核显,所有步骤在我本机上测试有效(目前还没炸机),不对准确性和可靠性做保证。

万一出现电脑花屏、驱动罢工、浏览器崩溃,或者(更坏的情况)电脑冒烟、风扇起飞、显卡瘫痪、地球爆炸——那可真对不住了,本人概不负责硬件维修费、精神损失费。

配置有风险,折腾需谨慎。备份好系统、准备好 LiveCD,在电脑前双手合十默念三次「玩得开心,显卡别生气」。然后,我们开始吧!

以下操作均不影响 Fedora Workstation 的 UEFI 安全启动, 这一点可以放心

先决条件

参考 Fedora 文档 ,在 Fedora 上启用 free 和 non-free 的 RPMFusion 存储库。

安装所需解码器

sudo dnf group install multimedia
sudo dnf install intel-media-driver \
                 libva libva-utils \
                 libavcodec-freeworld \
                 gstreamer1-vaapi \
                 ffmpeg \
                 igt-gpu-tools \
                 mesa-dri-drivers \
                 mesa-vulkan-drivers-freeworld \
                 linux-firmware \
                 mpv \
                 --allowerasing

编辑环境变量

# ~/.bashrc or ~/.zrhrc
# iGPU settings
export LIBVA_DRIVER_NAME=iHD
export ANV_DEBUG=video-decode,video-encode
# for Firefox
export MOZ_DISABLE_RDD_SANDBOX=1

设置 GNOME 桌面强制启用硬件加速

gsettings set org.gnome.Epiphany.web:/ hardware-acceleration-policy 'always'

OpenCL 加速

darktable 是一款强大、跨平台、支持 RAW 处理的开源图像处理工具,它能使用 OpenCL 进行加速计算。

对于 Intel ARC 系列核显或独显,使用 intel-compute-runtime 即可提供所需的加速库;而对于老款 Core 或 Xeon 系列,则使用 intel-opencl-runtime。对于其他显卡或硬件组成,Arch Wiki 里的「基于 GPU 的通用计算」部分提供了详细、准确的说明和解释。

以 ARC 140T 核显为例,安装 intel-compute-runtime 即可:

sudo dnf install intel-compute-runtime clinfo

首次启动 darktable 会自动检测并构建 OpenCL 加速库

darktable.webp

以后使用 darktable 进行 RAW 图像处理,可以获得较为显著的加速效果

opencl.webp

NPU 加速

该步骤适用于 Intel 系列带 NPU 的处理器设备,检查 NPU 设备是否正确识别

ls -l /dev/accel/accel*

示例输出结果如下

crw-rw-rw- 1 root render 261, 0 Dec 24 18:13 /dev/accel/accel0

安装 Intel 相关加速库

sudo dnf install intel-compute-runtime \
         intel-vpl-gpu-rt \
         openvino \
         openvino-plugins

赋予当前用户可访问 NPU 设备的权限

sudo usermod -aG render $USER
sudo usermod -aG video $USER

NPU 硬件加速是实现高效 WebNN 推理的关键,但受限于 Linux 下 Chrome/Chromium 官方构建版未编译 OpenVINO 后端支持,导致该特性目前处于不可用状态。

这种局限性并不意味着相关驱动库毫无用处。它们依然是本地 LLM 环境和 Intel OpenVINO 架构的核心组件。即便当前适配的模型有限,这种底层准备也为未来浏览器实现 AI 硬件协同提供了技术可能性。

修改内核参数

查看显示设备的硬件 ID

lspci -nnd ::03xx

示例输出如下,这个 7d51 是我的设备 ID

00:02.0 VGA compatible controller [0300]: Intel Corporation Arrow Lake-P [Arc Pro 130T/140T] [8086:7d51] (rev 03)

编辑 grub2 启动参数

sudo vim /etc/default/grub

强制禁用 i915 驱动并启用 Xe 显卡驱动,在 GRUB_CMDLINE_LINUX 里添加:

i915.force_probe=!7d51 xe.force_probe=7d51

启用帧缓冲压缩 (FBC)

echo "options xe enable_fbc=1" | sudo tee /etc/modprobe.d/xe.conf

更新引导

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

重启系统

sudo reboot

检查信息

检查驱动加载

lspci -k

确认正在使用的为 Xe 驱动

00:02.0 VGA compatible controller: Intel Corporation Arrow Lake-P [Arc Pro 130T/140T] (rev 03)
	Subsystem: Lenovo Device 384d
	Kernel driver in use: xe
	Kernel modules: i915, xe

检查内核模块加载

查看 Intel Xe 驱动模块和 Intel Guc/Huc 固件是否正常加载

sudo dmesg | grep -i -e 'xe' -e 'guc' -e 'huc'

检查 VA-API

$ vainfo
Trying display: wayland
libva info: VA-API version 1.22.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib64/dri-nonfree/iHD_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: Intel iHD driver for Intel(R) Gen Graphics - 25.3.4 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointEncSlice
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointEncSlice
      VAProfileVP9Profile1            :	VAEntrypointVLD
      VAProfileVP9Profile1            :	VAEntrypointEncSlice
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointEncSlice
      VAProfileVP9Profile3            :	VAEntrypointVLD
      VAProfileVP9Profile3            :	VAEntrypointEncSlice
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileHEVCMain422_10         :	VAEntrypointVLD
      VAProfileHEVCMain422_12         :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointEncSlice
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointEncSlice
      VAProfileHEVCMain444_12         :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointVLD
      VAProfileHEVCSccMain            :	VAEntrypointEncSlice
      VAProfileHEVCSccMain10          :	VAEntrypointVLD
      VAProfileHEVCSccMain10          :	VAEntrypointEncSlice
      VAProfileHEVCSccMain444         :	VAEntrypointVLD
      VAProfileHEVCSccMain444         :	VAEntrypointEncSlice
      VAProfileAV1Profile0            :	VAEntrypointVLD
      VAProfileAV1Profile0            :	VAEntrypointEncSlice
      VAProfileHEVCSccMain444_10      :	VAEntrypointVLD
      VAProfileHEVCSccMain444_10      :	VAEntrypointEncSlice

OpenGL 测试

使用 GLXGEARS 测试 2D/3D 下的 OpenGL 性能

glxgears

可以看到旋转的齿轮,输出帧率应该稳定在实际屏幕刷新率附近

glxgears.webp

Vulkan 测试

使用 VKCube 测试 Vulkan,会看到一个高速旋转的立方体

vkcube.webp

浏览器配置

Mozilla Firefox

访问 about:config,确保:

  • gfx.webrender.all 已启用
  • media.ffmpeg.vaapi.enabled 已启用
  • layers.acceleration.force-enabled 已启用

Firefox 在 Wayland 下对 VAAPI 的支持很好,应该是开箱即用的。

Google Chrome

对于 RPM 安装的 Google Chrome,确认 GPU 渲染器 ID

ls -l /dev/dri/
total 0
drwxr-xr-x  2 root root         80 Dec 21 10:05 by-path
crw-rw----+ 1 root video  226,   1 Dec 24 13:42 card1
crw-rw-rw-  1 root render 226, 128 Dec 21 10:05 renderD128 <--this

编辑 Chrome 的启动参数

cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications/
vim ~/.local/share/applications/google-chrome.desktop

找到 Exec 字段,修改如下(注意将 /dev/dri/renderD128 替换为实际的 GPU 渲染器 ID)

Exec=/usr/bin/google-chrome-stable --ozone-platform=wayland --ignore-gpu-blocklist --enable-zero-copy --use-gl=angle --use-angle=vulkan --render-node-override=/dev/dri/renderD128 --enable-features=Vulkan,VulkanFromANGLE,DefaultANGLEVulkan,AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoEncoder,WebGPUService,CanvasOopRasterization,VaapiIgnoreDriverChecks --enable-unsafe-webgpu

重启 Chrome,访问 chrome://gpu/,现在看起来大概这样:

Graphics Feature Status
=======================
*   Canvas: Hardware accelerated
*   Direct Rendering Display Compositor: Disabled
*   Compositing: Hardware accelerated
*   Multiple Raster Threads: Enabled
*   OpenGL: Enabled
*   Rasterization: Hardware accelerated
*   Raw Draw: Disabled
*   Skia Graphite: Disabled
*   TreesInViz: Disabled
*   Video Decode: Hardware accelerated
*   Video Encode: Hardware accelerated
*   Vulkan: Enabled
*   WebGL: Hardware accelerated
*   WebGPU: Hardware accelerated
*   WebNN: Disabled

通过社区的一些反馈,上面的这个信息并不具有太多参考意义,在 B 站或 YouTube 随便播放一个视频,分别尝试 HEVC、AV1、H.264 等不同的播放策略。

打开开发者工具切换到 Media 选项卡(或访问 chrome://media-internals/),检查视频是否启用 VAAPI 解码器,预期效果应该像这样:

check-decode.webp

参考资料