可变刷新率

来自 Arch Linux 中文维基


可变刷新率 (VRR),也被叫做自适应同步,该技术允许显示器根据输出信号来调整它的刷新率。这可以让用户在玩游戏时消除屏幕撕裂,同时减少 Vsync 的常见缺点(例如卡顿)。要全面了解 VRR,请参阅 PC Gaming Wiki

概述[编辑 | 编辑源代码]

本文内容或本节内容已经过期。

原因: 这部分内容需要更新以适应最新的 Intel GPU。 (在Talk:可变刷新率讨论)

VRR的具体实现有很多种:

  • FreeSync 是 AMD 对 VESA's VRR 的标准实现, 这些词语经常会替换使用。FreeSync 品牌显示器被要求和所有 VESA 兼容驱动程序兼容。
  • G-SYNC 是 NVIDIA 在 VRR 方面的专有硬件和软件实现方案。
  • Intel 计划在他们即将推出的 11 代处理器上和 独立显卡上 实现 VESA 的标准。

出于设置目的,有必要区分许可 Nvidia 自有芯片的“原生”G-SYNC 显示器和“G-SYNC 兼容”显示器,即支持 G-SYNC 功能子集的 FreeSync 显示器。 [1] 在 G-SYNC Compatible 显示器类别中,显示器可能经过验证,也可能未经过NVIDIA验证。 [2] -sync-compatible-validation/ 即使 VRR 显示器没有通过 NVIDIA 的验证(因此在营销材料中不会被称为 G-SYNC Compatible),您仍然可以将它与 G-SYNC 一起使用。

VRR 兼容性和相关实现

Driver VESA G-SYNC
AMDGPU FreeSync
Intel Planned
Nouveau
NVIDIA G-SYNC Compatible G-SYNC
注意: 早于 10 系列的 Nvidia GPU 不支持 G-SYNC Compatible 显示器。

Xorg 配置[编辑 | 编辑源代码]

在 AMDGPU 上启用[编辑 | 编辑源代码]

FreeSync 只能在支持FreeSync的显示器以及您的支持FreeSync的显卡上运行。

如果您使用的是笔记本电脑,则可以检查您的笔记本电脑是否与 FreeSync 兼容

使用 Xorg 配置文件[编辑 | 编辑源代码]

在你的 AMDGPU .conf 文件中的 Section "Device" 区块中添加一行:

Option "VariableRefresh" "true"

使用xrandr验证 vrr_capable 项是否被设置为 1:

$ xrandr --props
vrr_capable: 1
        range: (0, 1)

xrandr 会显示所有视频输出端口的属性; 确保查看的是实际连接到显示器的那个 - 其他的显示器输出会打印 vrr_capable: 0。

在 NVIDIA 上启用[编辑 | 编辑源代码]

使用 Xorg 配置文件[编辑 | 编辑源代码]

这篇文章的某些内容需要扩充。

原因: 本节需要信息。 (在 Talk:可变刷新率 中讨论)

使用 nvidia-settings[编辑 | 编辑源代码]

“原生”G-SYNC 和经过验证的 G-SYNC 兼容显示器会自动启用 VRR。 要检查显示器的状态,可以打开 nvidia-settings 并导航到您的 GPU(例如GPU 0),在其下每个活动显示器都有一个节点(例如DP-0HDMI-0)。 在每个监视器帧中,G-SYNC Mode Available表示 G-SYNC 的支持状态,可以参考:-2.x/ctkdisplaydevice.c#L872-L905 [3]

  • G-SYNC, 表明这是一个“原生”G-SYNC 显示器。 默认情况下启用完整的 G-SYNC 支持。
  • G-SYNC Compatible, 表明这是经过验证的 G-SYNC Compatible 显示器。 默认启用 G-SYNC 支持。
  • G-SYNC Unvalidated, 表示这是未经验证的 G-SYNC Compatible 显示器。 默认情况下不启用 G-SYNC 支持。[4]
  • None, 说明这个显示器完全不支持G-SYNC。请注意,有些 FreeSync VRR 显示器也完全不兼容 G-SYNC。[5]

如果您有未经验证的 G-SYNC Compatible 显示器,您可以覆盖 NVIDIA 的默认值并使用它启用 VRR:

  • 在软件 nvidia-settings 中找到 "X Server Display Configuration" 页, 然后勾选高级按钮下的允许在未验证为 G-SYNC 兼容的显示器上使用 G-SYNC选项,单击应用
  • 然后,在 OpenGL 设置下,选中“允许 G-SYNC/G-SYNC 兼容”。
注意: 如果显示器确实未通过 NVIDIA 的 G-SYNC 兼容认证,则可能会出现图像质量差、闪烁或由于刷新率范围有限而无法激活 VRR 等体验问题。[6]
提示:在同一菜单中,您可以选中“显示 G-SYNC 指示器”选项以启用在右上角显示 G-SYNC 是否正在工作的指示器。

Wayland配置[编辑 | 编辑源代码]

GNOME[编辑 | 编辑源代码]

警告: GNOME 的 VRR 补丁仍在 开发中,可能会出现错误或导致崩溃。

需要安装 mutter-vrrAURgnome-control-center-vrrAUR 才可以在 GNOME 中使用 VRR。需要在“显示设置”中为每个支持的显示器启用 VRR。 在支持和启用的显示器上运行时,GNOME 会自动为所有全屏应用程序启用 VRR。

在最新的 GNOME 46 版本中,只需运行

gsettings set org.gnome.mutter experimental-features "['variable-refresh-rate']"

即可在 GNOME 的 Wayland 会话下使用实验性质的VRR。

KDE[编辑 | 编辑源代码]

KDE Wayland 会为全屏应用程序自动启用 VRR [7]

Sway[编辑 | 编辑源代码]

Sway 支持可变刷新率。要为所有输出启用它,您可以将以下内容添加到sway配置中,或将设置应用于每个输出:

output * adaptive_sync on

您可以验证您的显示器是否支持与 swaymsg 的自适应同步:

$ swaymsg -t get_outputs
Output DP-1 'Display Name'
  Adaptive sync: enabled

测试[编辑 | 编辑源代码]

VRRTest 是一个简单的测试工具,应该适用于 FreeSync 和 G-Sync。 安装 vrrtest-gitAUR 或者,手动安装 love 包,克隆存储库,然后运行

$ love /path/to/cloned/repository

在关闭 VRR 的情况下,如果应用程序的 FPS 低于显示器的本机刷新率,则由于跳过了帧,条形图会断断续续很多。在启用 VRR 的情况下,由于屏幕的刷新率与应用程序的刷新率相匹配,条形图将始终在屏幕上平滑移动。当然即便开启了 VRR 功能,您也可能会遇到撕裂,在这种情况下,您还可以为 AMDGPU 启用无撕裂渲染选项;两者都启用时,应该既没有口吃也没有撕裂(nvidia显卡这样的功能在哪里呢?)。

如果您使用的是 Nvidia GPU,您可以使用 gl-gsync-demoAUR 测试 G-SYNC 兼容性。 该程序将允许您测试 VRR 和 Vsync,以便您可以观察产生的效果。 有关详细信息,请参阅项目的自述文件

根据这个页面:“gl-gsync-demo 是使用 G-SYNC 制作的,但这并不重要,它将很好地测试 AMD 自适应同步”。 但是,对于 FreeSync 测试,它可能仍无法按预期工作。

修改 FreeSync 显示器的 VRR 范围[编辑 | 编辑源代码]

Freesync 显示器的 VRR 范围通常有限,远低于其最大刷新率。可以对显示器进行超频以更改 Freesync 范围。

警告: 对显示器进行超频可能会导致显示器过热并可能造成硬件损坏。

编辑 EDID 文件[编辑 | 编辑源代码]

外部显示器识别数据 (EDID) 保存了显示器相关的驱动程序信息。默认情况下,EDID在接上显示器/开机启动时由显卡驱动从显示器读取到系统。可以使用 read-edidnvidia-settings 之类的软件来提取EDID。然后安装 wxedidAUR 来编辑 EDID。

这篇文章的某些内容需要扩充。

原因: 本部分需要使用 freesync 显示器的用户进行验证,请考虑参与贡献。 (在 Talk:可变刷新率 中讨论)

您可以遵循更改 Windows 上的 freesync 范围的人员指南之一:[8]-hack-expands-refresh-rate-range/

在 Linux 上超频的过程(仅适用于 NVidia GPU):[9]

为您的显示器创建一个 Xorg .conf 文件,并添加一个指向您已编辑的自定义 EDID 文件的路径。 参考 xrandr 来查找有关您显示器的其他信息。

/etc/X11/xorg.conf.d/10-monitor.conf
Section "Screen"
    Identifier "Screen0"
    Device "nvidia" # e.g. Radeon, nvidia
    Monitor "DP1"
    Option “CustomEDID” “MONITOR:/home/USER/Desktop/modified-edid.bin”
EndSection
注意: 将文件中的“MONITOR”编辑为正确的显示ID。可以用 xrandr -–query 命令获取显示ID。

技巧和建议[编辑 | 编辑源代码]

从黑名单中删除应用程序[编辑 | 编辑源代码]

Mesa 有一个应用程序黑名单用来避免非预期的应用程序行为,可以在这个文件中编辑这个黑名单:

/usr/share/drirc.d/00-mesa-defaults.conf

限制[编辑 | 编辑源代码]

  • Wayland 从 KDE 5.22(任何兼容的 GPU)和 Sway(非 Nvidia)开始支持 [10] .freedesktop.org/wayland/wayland/issues/84。GNOME Wayland 还没有支持 [11]
  • 显示器必须通过 DisplayPort(DP口)与电脑显卡连接。一些实现(部分)HDMI 2.1 规范的显示器也支持 HDMI 上的 VRR。这篇文章列举了支持的 Nvidia 驱动程序并且在 5.13及之后版本的内核 和 AMD 驱动程序(pre HDMI 2.1)中得到支持 [12]
  • 如果您想在 X11 上使用 G-SYNC 和可能的 Freesync,则只需连接 G-SYNC/Freesync 显示器。
    • 在 X11 上,多个显示器接入同一个 X 显示服务器中会破坏 G-SYNC/Freesync,不过这个问题在 Wayland 上不存在。
    • 设置为主显示器镜像的辅助显示器不会破坏主显示器上的 G-SYNC/Freesync。
    • 在 X11 上,如果您想使用多个显示器并仍然使用 G-SYNC/Freesync,您可以创建一个新的 X 显示服务器,它只连接 G-SYNC/Freesync 显示器并在那里运行游戏。
  • 很可能需要在启动 OpenGl/Vulkan 程序之前禁用合成器(在 Wayland 上禁用合成器是不相关的或没有必要的 [13])。
  • 在 X11 上,Mesa 黑名单中包括视频播放器在内的应用程序不能开启G-SYNC/Freesync。
  • 虽然撕裂在较高刷新率下不太明显,但 FreeSync 显示器的 90Hz VRR 范围通常有限,这可能远低于其最大刷新率。请参阅修改 FreeSync 显示器的 VRR 范围