supergfxctl

来自 ArchWiki

此文章或章节需要扩充。

原因: 此文章需要扩充关于非 NVIDIA 混合笔记本电脑的说明。(在 Talk:Supergfxctl 中讨论)

supergfxctlAUR 是 ASUS Linux 提供的一个实用工具。它有助于管理混合笔记本电脑上的 GPU 切换功能。

虽然 supergfxctl 最初是为 ASUS Optimus 笔记本电脑设计的,但它已经发展成为一个独立的工具,可以用于任何具有混合显卡的笔记本电脑。

预安装

对于 Optimus 笔记本电脑,请确保已安装 NVIDIA 驱动程序。请勿安装 xf86-video-intel。如果已安装 optimus-manager-gitAURbumblebee,请将其删除,并确保以下位置没有 NVIDIAIntel 和/或任何 PRIME 管理器的残留配置

  • /etc/X11/xorg.conf.d/
  • /etc/modprobe.d/
  • /etc/udev/rules.d/

Initramfs 和内核参数

如果您的笔记本电脑有专用 NVIDIA GPU,则需要设置一些内核参数,请参阅 NVIDIA#DRM kernel mode setting 获取说明。如果您的笔记本电脑有专用 AMD GPU,则无需额外步骤。

安装

可以通过 ASUS Linux 自己的存储库进行安装。您也可以安装 supergfxctlAUR 软件包。然后,启用 supergfxd.service 服务。

配置

设置存储在 /etc/supergfxd.conf 中。示例如下

supergfxd.conf
{
  "mode": "Hybrid",
  "vfio_enable": false,
  "vfio_save": false,
  "always_reboot": false,
  "no_logind": false,
  "logout_timeout_s": 180,
  "hotplug_type": "None"
}

用法

Supergfxctl 支持以下模式:IntegratedHybridVFIO。它可以检测是否为 AsusMuxDgpu 模式使用了 mux 开关。还有一个 NvidiaNoModeSet 选项,它会在禁用 NVIDIA GPU 内核模块的情况下重启系统。

使用 MUX 开关需要您运行 asusctl,详情请参阅 asusctl#Using the MUX switch

显示支持的模式

以下命令用于显示您的笔记本电脑支持的所有模式

$ supergfxctl -s

获取当前模式

以下命令用于查询当前的 GPU 模式

$ supergfxctl -g

切换模式

以下命令用于将当前的 GPU 模式切换到 Hybrid

$ supergfxctl -m hybrid

启动后配置

使用 supergfxctl 进行 GPU 直通 (VFIO)

VFIO GPU 直通可以通过编辑 /etc/supergfxd.conf 启用。在此配置文件中,还建议将 hotplug_type 值更改为 Asus,而不是上游文档 upstream 中记录的 None

/etc/supergfxd.conf
{
"vfio_enable": true,
"hotplug_type": "Asus"
}

有关详细信息,请参阅 ASUS Linux VFIO 指南

使用 supergfxctl 和 MUX 开关

如果系统处于 Hybrid 模式,则可以使用 nvidia-prime 中的 prime-run 在独立 GPU 上运行程序。这不会在启用 MUX 开关时破坏应用程序,因此可以在需要更高图形性能的任何地方使用它。

将 supergfxctl 与 Wayland 客户端一起使用

由于 Wayland 同时支持多个 GPU,因此用户无需安装 supergfxctl,除非他们想使用 VFIO 或进一步限制功耗。AsusMuxDgpu 模式可以使用 asusctl 切换,详情请参阅 asusctl#Using the MUX switch

图形化工具

GNOMEKDE 用户可以使用桌面环境附加组件从桌面控制 supergfxctl。以下是包含链接的列表

名称 桌面 链接
supergfxctl-gex Gnome https://extensions.gnome.org/extension/5344/supergfxctl-gex/
GPU Supergfxctl Switch Gnome (46) https://extensions.gnome.org/extension/7018/gpu-supergfxctl-switch/
plasma6-applets-supergfxctl KDE Plasma plasma6-applets-supergfxctlAUR
rog-control-center Any rog-control-centerAUR