⚠️ 有效性警告
本方案仅供参考,仅在特定的该软硬件环境下有效,请勿在不了解原理细节的前提下直接照搬。

环境介绍

硬件环境

  • GPU 1
    • Radeon Vega Mobile Series
  • GPU 2
    • GeForce RTX 3050 Ti Mobile

软件环境

  • OS
    • Arch Linux x86_64
  • Date
    • 2024.06.04
  • Kernel
    • 6.9.3-zen1-1-zen
  • Wayland
    • 1.23.0-1
  • DE
    • KDE Plasma 6.0.5

AMD 驱动

操作步骤

安装相关驱动软件包并重启。

1
paru -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon  lib32-vulkan-radeon libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau

软件包解析

  • mesa lib32-mesa
    • 提供用于 3D 加速的 DRI 驱动程序
  • xf86-video-amdgpu
    • 可提供对 Xorg 的 2D 加速的 DDX 驱动支持
  • vulkan-radeon lib32-vulkan-radeon
    • 提供对 Vulkan 的支持
  • libva-mesa-driver lib32-libva-mesa-driver
    • 提供对 VA-API 的支持
  • mesa-vdpau lib32-mesa-vdpau
    • 提供对 VDPAU 的支持

NVIDIA 驱动

20240604 补充

nvidia 550 闭源内核模块可能导致多种情况下内核崩溃(kernel panic),请知悉。如果显卡属于 Turing 微架构及之后可以考虑切换到 nvidia-open{,-dkms},否则可以考虑使用 aur/nvidia-535xx-dkms,或者卸载 nvidia-utils 来使用 nouveau。

由于目前最新闭源驱动的严重不稳定状态以及修复更新较慢,加之近期社区风向建议,因此将 NVIDIA 显卡驱动切换为 nvidia-open 的开源实现。

操作步骤

安装相关驱动软件包。

1
paru -S nvidia-open-dkms nvidia-settings nvidia-utils lib32-nvidia-utils

/etc/mkinitcpio.conf 里的 HOOKS 数组中移除 kms 并重新生成 initramfs 以杜绝开源模块nouveau的加载。

1
sudo mkinitcpio -P

/etc/default/grub 中的 GRUB_CMDLINE_LINUX_DEFAULT 选项中加入 nvidia_drm.modeset=1 并重新生成配置文件以启用 NVIDIA DRM KMS

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

完成后重启系统。

软件包解析

  • nvidia-open-dkms
    • 提供驱动内核模块
      • 由于我使用 zen 定制内核,因此需要 Dynamic Kernel Module Support
  • nvidia-settings
    • 提供配置工具
  • nvidia-utils lib32-nvidia-utils
    • 提供驱动实用程序(例如硬件视频加速)

混合图形技术

操作步骤

我们采用 PRIME GPU分载 方案。

安装相关软件包。

1
paru -S nvidia-prime

程序默认通过 AMD 显卡运行,对于要在 NVIDIA 显卡上运行程序,使用软件包提供的 prime-run 脚本,例如:

1
2
prime-run glxinfo | grep "OpenGL renderer"
prime-run vulkaninfo

结果检验

202403061653190.png

202403061653013.png

电源管理

对于较新的硬件及驱动(至少就我目前的设备而言),PCI-Express Runtime D3 电源管理应当能够开箱即用。

无需额外配置,在使用电池供电且 NVIDIA显卡 未工作时,将自动关闭供电。

你可以通过以下现象验证设备已被关闭供电:

202403081625951.png

Runtime D3 statusEnabled 代表设备支持这一功能。

202403081627639.png

202403081627387.png

NVIDIA显卡 电源状态处于 D3cold,运行状态为 suspend,代表 NVIDIA显卡 已被切断供电,进入低功耗的暂停状态。

202403081628377.png

Runtime suspended time 计时不断升高,代表 NVIDIA显卡 持续处于暂停状态。

另请参阅

Xorg - Arch Linux 中文维基

NVIDIA - Arch Linux 中文维基

AMDGPU - Arch Linux 中文维基

NVIDIA Optimus - Arch Linux 中文维基

PRIME - Arch Linux 中文维基