跳转到内容

HDR 显示器支持

来自 Arch Linux 中文维基

HDR 支持已合并Wayland 协议中,部分混成器已实现该功能。而 Xorg 没有支持 HDR 的计划

要求

[编辑 | 编辑源代码]
  • 支持 HDR 的显示器。尽管现在有许多宣称支持 HDR 的显示器,但采用边缘照明局部调光(edge-lit local dimming)的设备提供的 HDR 体验可能无法令人满意。更多信息请参阅 Local Dimming on TVs
  • 支持 HDR 的显卡驱动:已确认 AMDGPUNVIDIA(550.54.14 及以后的版本)可正常工作。
    • NVIDIA 565.57.01 之前的版本存在一个可能导致 HDR 模式下色彩表现不正确或偏淡的 bug。[1]
    • Intel 图形处理器自内核版本 5.12 起为第 9 代及更新的核显提供实验性的 HDR 支持[2],但据报告其实现不完整。
  • 兼容的混成器,参见 #混成器
  • 兼容的应用程序,参见 #应用程序
  • 支持 HDR 的 Vulkan WSI(窗口系统集成),参见 #Vulkan HDR WSI

配置

[编辑 | 编辑源代码]

Vulkan HDR WSI

[编辑 | 编辑源代码]

对于 NVIDIA 和版本 25 之前的 mesa,需要安装 vk-hdr-layer-kwin6-gitAUR 才能支持 VK_EXT_swapchain_colorspaceVK_EXT_hdr_metadata 这两个 Vulkan 扩展 [3] [4]。没有这两个扩展则无法通过 Vulkan API 使用 HDR。

通过设置 ENABLE_HDR_WSI=1 来启用 Wayland 下的 Vulkan HDR WSI。不建议全局启用,应分别为每个需要使用 HDR 的游戏或其它应用程序启用。

混成器

[编辑 | 编辑源代码]

KWin (KDE Plasma)

[编辑 | 编辑源代码]

参见 KDE#HDR

Hyprland

[编辑 | 编辑源代码]

首先确保 hyprland 的版本 ≥ 0.47.0 并配置 xx_color_management_v4 变量为 true。

Monitor v1
[编辑 | 编辑源代码]

在 Hyprland 配置文件中对应显示器的配置行末尾追加:, bitdepth, 10, cm, hdr

注意:Monitor v2 是通过“monitorv2”声明的,Monitor v1 则直接通过“monitor”声明。
Monitor v2
[编辑 | 编辑源代码]

在对应显示器的配置中添加以下内容:

   supports_wide_color = 1
   supports_hdr = 1

更多设置请参阅 Hyprland Wiki

更多信息可在 Hyprland 实验性功能文档Hyprland 显示器文档中找到。

首先确保 mutter 的版本 ≥ 48.0。

在 GNOME 的显示设置中启用 HDR。每个显示器都有 单独的 HDR 开关,在分辨率和刷新率设置旁。

注意:在 GNOME 中使用 Gamescope HDR 时会出现“褪色”现象,因为 GNOME 缺少对 scRGB 和 frog-color-management-v1 协议的支持 [5] [6]。参见 #使用 Gamescope

Steam 的 Gamescope 会话

[编辑 | 编辑源代码]

Valve 的混成器 Gamescope 提供了实验性 HDR 支持。按以下步骤可尝试在 Gamescope 环境中运行 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"  # Gamescope 启动参数
    fi
    
    • 需将分辨率数值设置为实际值(可通过 xrandr --query 命令查询显示设备参数)。
    • 若未自动识别显示接口,需手动设置 CONNECTOR 参数。

现在可通过以下任一方式启动 Gamescope:

通过显示管理器
[编辑 | 编辑源代码]

登出,在显示管理器中选择“Steam Big Picture”登录。

通过控制台
[编辑 | 编辑源代码]
  1. 按下 Ctrl+Alt+Fx 进入一个新的 TTY。
  2. 登录后执行 gamescope-session-plus steam 在 Gamescope 中启动 Steam 独立会话


配置 Steam
[编辑 | 编辑源代码]
  1. 在常规设置中的“显示”部分,启用 HDR 和实验性 HDR 支持。
  2. 选择一款支持 HDR 的游戏,点击旁边的齿轮图标。
  3. 将兼容性设置为强制使用 Proton 8.0 或 Proton Experimental。
  4. 将游戏分辨率设置为与显示器一致,否则将默认以 Steam Deck 的分辨率启动。
  5. 点击“开始游戏”启动游戏。进入游戏后检查设置中的 HDR 选项,并将其启用。
  6. 若需切换回正常桌面会话,请在 Steam 菜单中选择“电源” -> “切换到桌面模式”。

COSMIC

[编辑 | 编辑源代码]

COSMIC 的开发者在博文中承诺将在初始稳定版本中加入 HDR 支持。

应用程序

[编辑 | 编辑源代码]

游戏

[编辑 | 编辑源代码]
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=1 实际上设置的是 DXVK_HDR=1 [8]
  • wine-tkg:安装 wine-tkg,设置 DXVK_HDR=1,并取消设置环境变量 DISPLAY
提示:你也可以使用 protonup-qtAUR 将上述的 Wine 构建轻松安装到 Lutris、Bottles 或 Steam 中。
使用 Gamescope
[编辑 | 编辑源代码]

Gamescope 正常启用 HDR 需要混成器支持 scRGB,且支持 xx-color-management-v4frog-color-management-v1 两个协议之一。

因此,Gamescope 无法与 vk-hdr-layer-kwin6-gitAUR 一起使用。请确保没有将 ENABLE_HDR_WSI 设置为 1

根据需要,有多种方式使用 Gamescope:

  • 使用 Gamescope 启动 Steam。使用该方式,从 Steam 启动的所有游戏都会启用 HDR,但 Steam 和这些游戏将被运行在一个 Gamescope 窗口内:
$ gamescope --hdr-enabled --steam -- env DXVK_HDR=1 steam
  • 在 Steam 设置中使用以下“启动选项”,为通过 Steam 启动的每个游戏启用 HDR:
$ DXVK_HDR=1 gamescope -f --hdr-enabled -- %command%
  • 在 Gamescope 中启动非 Steam 游戏:
$ DXVK_HDR=1 gamescope -f --hdr-enabled -- 可执行文件
注意:默认情况下,Gamescope 会以 1280x720 分辨率启动。若需自定义分辨率,可使用 -W(宽)和 -H(高)参数设置需要的分辨率。
RetroArch
[编辑 | 编辑源代码]

RetroArch 目前仅在 Git 版本 retroarch-gitAUR 中支持 HDR。请在 RetroArch 的视频设置中启用 HDR。

$ retroarch
原生 SDL
[编辑 | 编辑源代码]

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

例如运行 Quake II RTX:

$ SDL_VIDEODRIVER=wayland quake2rtx

为了获得最佳图像质量,mpv 的维护者推荐使用 gpu-next 输出模式 [10]

注意:这需要支持 HDR 的 Vulkan WSI,参见 #Vulkan HDR WSI
$ mpv --vo=gpu-next --target-colorspace-hint --gpu-api=vulkan --gpu-context=waylandvk "path/to/video"

其他启用 Wayland HDR 支持的方式包括使用 dmabuf-waylanddrm 视频输出。

$ mpv --vo=dmabuf-wayland "path/to/video"
  • 在 tty 终端下,也可以使用:
$ mpv --vo=drm "path/to/video"

Firefox

[编辑 | 编辑源代码]

firefox 从 138.0 版本开始引入了可用的实验性 HDR 支持,通过隐藏的配置项 gfx.wayland.hdr 启用。可在 about:config 中启用。

稳定的 HDR 支持仍在开发中 [11] [12]

Chromium

[编辑 | 编辑源代码]

chromium 目前正在开发 HDR 支持 [13]

提示与技巧

[编辑 | 编辑源代码]

HDR 视频样本

[编辑 | 编辑源代码]

Kodi 的 Wiki 提供了一份合理使用的 HDR 视频样本列表,可使用支持 HDR 的视频播放器(如 #mpv)播放来测试 HDR 输出效果。

问题解决

[编辑 | 编辑源代码]

启用 HDR10 时屏幕共享异常

[编辑 | 编辑源代码]

Pipewire 会尝试以 BGRA 格式进行流传输,但由于 WebRTC 当前无法解析该格式,因此会导致异常。具体表现为抛出 ParamId:EnumFormat: 0:0 Invalid argument 错误,并导致该应用的 WebRTC 套接字崩溃 [14]

另请参阅

[编辑 | 编辑源代码]