可变刷新率 - Arch Linux 中文维基

跳转到内容

# 可变刷新率

来自 Arch Linux 中文维基

相关文章

- Xrandr
- Xorg
- AMDGPU
- NVIDIA
- Sway

可变刷新率 (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-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 兼容”。

注意：如果显示器确实未通过 NVIDIA 的 G-SYNC 兼容认证，则可能会出现图像质量差、闪烁或由于刷新率范围有限而无法激活 VRR 等体验问题。[6]
提示：在同一菜单中，您可以选中“显示 G-SYNC 指示器”选项以启用在右上角显示 G-SYNC 是否正在工作的指示器。

## Wayland配置

### GNOME

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

需要安装 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。

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

原因：本部分需要使用 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 范围。

分类：​

- 存在语法高亮错误的页面
- 图形
- X 服务器
- 游戏
- 使用“模板:过时”标记的页面或章节

可变刷新率
添加话题