可变刷新率
可变刷新率 (VRR),也被叫做自适应同步,该技术允许显示器根据输出信号来调整它的刷新率。这可以让用户在玩游戏时消除屏幕撕裂,同时减少 Vsync 的常见缺点(例如卡顿)。要全面了解 VRR,请参阅 PC Gaming Wiki。
概述[编辑 | 编辑源代码]
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 |
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 配置文件[编辑 | 编辑源代码]
使用 nvidia-settings[编辑 | 编辑源代码]
“原生”G-SYNC 和经过验证的 G-SYNC 兼容显示器会自动启用 VRR。 要检查显示器的状态,可以打开 nvidia-settings包 并导航到您的 GPU(例如GPU 0),在其下每个活动显示器都有一个节点(例如DP-0,HDMI-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 兼容”。
Wayland配置[编辑 | 编辑源代码]
GNOME[编辑 | 编辑源代码]
需要安装 mutter-vrrAUR 和 gnome-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-edid包 或 nvidia-settings包 之类的软件来提取EDID。然后安装 wxedidAUR 来编辑 EDID。
您可以遵循更改 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
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 范围。