跳转至内容

HDR

来自 ArchWiki

高动态范围 (HDR) 支持已合并Wayland,并且一些组合器已经实现了它。X.org没有计划支持 HDR。

需求

Vulkan HDR WSI

使用 Vulkan API 进行 HDR 支持需要 VK_EXT_swapchain_colorspaceVK_EXT_hdr_metadata 扩展。某些 GPU 或驱动程序的用户可能需要使用 vk-hdr-layer-kwin6-gitAUR 来支持这些扩展。

  • mesa 25.1+ 支持这些扩展,无需额外安装软件包
  • NVIDIA 用户必须使用 vk-hdr-layer-kwin6-gitAUR 来获得 Vulkan HDR 支持
    • 自 Vulkan beta 580.94.11 起的 NVIDIA 驱动程序在 Wayland 上支持 VK_EXT_hdr_metadata [1]
      • 稳定的 NVIDIA 驱动程序尚未包含此扩展,包括 R590 驱动程序系列
    • NVIDIA 驱动程序在 Linux 上仍然缺少对 VK_EXT_swapchain_colorspace 的支持 [2]

可以使用 ENABLE_HDR_WSI=1 来启用 Vulkan HDR WSI 层。建议全局启用。请为将与 HDR 一起使用的单个游戏和应用程序设置此项。

组合器配置

KDE Plasma

请参阅 KDE#HDR

Hyprland

确保 hyprland >= 0.47.0 并将 xx_color_management_v4 变量设置为 true。

Monitor v1

在您的 Hyprland 配置文件中,将 , bitdepth, 10, cm, hdr 追加到显示器的配置行。

注意 Monitorv2 被声明为这样,而 monitorv1 被简单地声明为 "monitor"

Monitor v2

在显示器的配置中添加新行并添加

   supports_wide_color = 1
   supports_hdr = 1

可以在 Hyprland wiki 上找到其他设置。

有关更多信息,请参阅 Hyprland 实验文档Hyprland 显示器文档

GNOME

确保 mutter >= 48.0。

在 GNOME 的显示设置中启用 HDR。HDR 切换是针对每个显示器的,并且位于分辨率和刷新率设置旁边。

注意 Gamescope HDR 在 GNOME 上看起来“褪色”,因为 GNOME 缺少 scRGB 或对 frog-color-management-v1 协议的支持 [3] [4]。请参阅 #使用 Gamescope

Gamescope with Steam session

Valve 的 Steam 组合器 gamescope 提供了实验性 HDR 支持。按照以下步骤操作,您就可以尝试使用支持 HDR 的 gamescope 运行 Valve 的 Steam 客户端。

提示 建议使用 AMDGPU 来配合 gamescope 使用 - NVIDIA 已知存在严重问题。
  • 安装 gamescopegamescope-session-steam-gitAUR
  • 您可以创建可选配置文件 ~/.config/environment.d/gamescope-session.conf,内容如下:
    if [ "$XDG_SESSION_DESKTOP" = "gamescope" ] ; then
        SCREEN_WIDTH=1920
        SCREEN_HEIGHT=1080
        CONNECTOR=*,eDP-1
        CLIENTCMD="steam -gamepadui -pipewire-dmabuf"
        GAMESCOPECMD="/usr/bin/gamescope --hdr-enabled --hdr-itm-enable \
        --hide-cursor-delay 3000 --fade-out-duration 200 --xwayland-count 2 \
        -W $SCREEN_WIDTH -H $SCREEN_HEIGHT -O $CONNECTOR"
    fi
    
    • 将上面的分辨率值更新为正确的值。您可以通过运行 xrandr --query 来列出您的显示器。
    • 如果它默认没有选择正确的显示器,您可能需要设置显示器 CONNECTOR

您现在可以通过以下任一步骤,从登录管理器或终端启动 gamescope

通过登录管理器

注销并从您的登录管理器中选择Steam Big Picture,然后登录。

通过命令行

  1. Ctrl+Alt+F2 进入一个新的 TTY。
  2. 登录并运行 gamescope-session-plus steam 来启动 HDR 下的独立 steam 会话
    • 如果网络不工作,可以通过安装和启用 NetworkManager 来修复。

配置 Steam

  1. 在常规设置的“显示”下,您现在应该会看到 HDR 设置。启用 HDR 和实验性 HDR 支持。
  2. 选择一个支持 HDR 的游戏,然后点击旁边的齿轮图标。
  3. 将兼容性设置为强制 Proton 8.0 或 Proton Experimental。
  4. 将游戏分辨率设置为与您的显示器匹配,否则它将以 Steam Deck 的原生分辨率启动。
  5. 点击“Play”开始游戏。检查游戏内的设置,看看 HDR 设置是否可用,然后启用它。
  6. 要切换回正常的会话,请从 Steam 菜单中选择Power(电源)和Switch to desktop mode(切换到桌面模式)。

COSMIC

COSMIC 开发者已承诺在初始稳定版本中支持 HDR

sway

在您的 sway 配置文件中,为输出配置添加 render_bit_depth 10hdr off,并设置 WLR_RENDERER=vulkan 环境变量来启动 sway。

设置一个绑定来切换 HDR,或手动切换,例如:swaymsg output DP-1 hdr toggle

注意 需要提交 94c819cc1f9,因此需要 sway-gitAUR(或 sway 1.12 已发布)

应用程序配置

Wine/Proton

通过 WineSteam Proton 进行 HDR 需要 DXVK (2.1+) 或 VKD3D-Proton (2.8+),具体取决于游戏使用的 DirectX 版本。

提示 使用 Proton 8.0+ 或 Proton GE 44+。它们都自带了足够的 DXVK 和 VKD3D 版本。

不使用 Gamescope

要在不使用 gamescope 的情况下使用 HDR,请运行包含 Wayland 驱动程序的 Wine 版本。

注意 Wine 的原生 Wayland 驱动程序是实验性的,根据游戏的不同,性能可能优于或差于 Xwayland。
注意 PROTON_ENABLE_HDR 设置为 DXVK_HDR=1 [6]
提示 您也可以使用 protonup-qtAUR 轻松地将上述 wine 版本安装到 Lutris、Bottles 或 Steam 中。

使用 Gamescope

支持 Proper HDR 的 Gamescope 需要您的组合器支持 scRGB 和 xx-color-management-v4 协议,或支持 frog-color-management-v1 协议。

因此,gamescope 将无法与 vk-hdr-layer-kwin6-gitAUR 层一起工作。确保 ENABLE_HDR_WSI 不是 1

根据您想要的配置,您有多种使用 gamescope 的选项:

  • 启用 HDR 运行 Steam。然后所有游戏都将启用 HDR,但 Steam 和所有游戏都将在 gamescope 窗口内启动。
$ gamescope --hdr-enabled --steam -- env DXVK_HDR=1 steam
  • 为 Steam 中的单个游戏启用 HDR。设置以下启动选项
DXVK_HDR=1 gamescope -f --hdr-enabled -- %command%
  • 在 gamescope 中启动非 Steam 游戏:
$ DXVK_HDR=1 gamescope -f --hdr-enabled -- executable
注意 默认情况下,gamescope 以 1280x720 的分辨率启动。要覆盖默认分辨率,请使用 -W-H 参数指定所需分辨率。

RetroArch

RetroArch 从版本 1.10.0 开始支持 Vulkan 视频驱动程序的 HDR。首先,选择 Vulkan 视频驱动程序。然后在 RetroArch 视频设置中通过 Settings(设置)选项卡 > Video(视频)> HDR > Enable HDR(启用 HDR)来启用 HDR。

$ retroarch

原生 SDL

要运行使用 SDL 的原生游戏并支持 HDR,请设置 SDL_VIDEODRIVER=wayland

例如,对于 Quake II RTX:

$ SDL_VIDEODRIVER=wayland quake2rtx

mpv

为了获得最佳图像质量,mpv 维护者推荐使用 gpu-next [8] 视频输出驱动程序,这是默认设置。gpu-next 支持 HDR,使用 --gpu-context=waylandvk,这在 Wayland 上是默认选择的。

注意 这需要支持 HDR 的 Vulkan WSI,请参阅 #Vulkan HDR WSI
$ mpv --target-colorspace-hint "path/to/video"

启用 Wayland HDR 支持的其他方法包括使用 dmabuf-wayland 视频输出和 drm GPU 上下文 Wayland HDR support

$ mpv --vo=dmabuf-wayland "path/to/video"
  • 从 tty 终端,您可以执行(--gpu-context=drm 是默认选择的):
$ mpv --target-colorspace-hint "path/to/video"

Firefox

firefox 在 138.0 版本中引入了可用的实验性 HDR,位于隐藏偏好设置 gfx.wayland.hdr 下。您可以在 about:config 中启用它。

稳定的 HDR 仍在进行中 [9] [10]

Chromium

chromium 具有正在进行中的 HDR 支持 [11]。支持已在 141.0.7370.0 版本中合并。

故障排除

HDR 视频样本

Kodi wiki 维护着公平使用 HDR 视频样本的列表。可以使用这些样本来测试使用支持 HDR 的视频播放器(如 #mpv)的 HDR 输出。

HDR10 屏幕共享损坏

Pipewire 尝试流式传输它视为 BGRA 的内容,而 WebRTC 因其目前无法解释它的能力而无法解释。因此,会抛出 "ParamId:EnumFormat: 0:0 Invalid argument" 异常,并且该应用程序的 WebRTC 套接字会崩溃 [12]

参见