HDR
高动态范围 (HDR) 支持已合并到 Wayland,并且一些组合器已经实现了它。X.org没有计划支持 HDR。
需求
- 支持 HDR 的显示器
- 许多显示器宣称支持 HDR,但如果它们缺少任何形式的局部调光,可能会提供次优的体验。更多信息可在 RTINGS: Local Dimming on TVs 中找到。
- 支持 HDR 的 GPU 和驱动程序
- AMDGPU 和 NVIDIA 都受支持
- Intel graphics 对 Gen 9 及更新版本有实验性 HDR 支持 Gen 9 及更新版本
- 据报道,该实现不完整。
- 支持的组合器
- 支持的应用程序
- 关于一些常见用例的#应用程序配置
- 支持 HDR 的 Vulkan WSI
Vulkan HDR WSI
使用 Vulkan API 进行 HDR 支持需要 VK_EXT_swapchain_colorspace 和 VK_EXT_hdr_metadata 扩展。某些 GPU 或驱动程序的用户可能需要使用 vk-hdr-layer-kwin6-gitAUR 来支持这些扩展。
- mesa 25.1+ 支持这些扩展,无需额外安装软件包
- NVIDIA 用户必须使用 vk-hdr-layer-kwin6-gitAUR 来获得 Vulkan HDR 支持
可以使用 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 追加到显示器的配置行。
Monitor v2
在显示器的配置中添加新行并添加
supports_wide_color = 1 supports_hdr = 1
可以在 Hyprland wiki 上找到其他设置。
有关更多信息,请参阅 Hyprland 实验文档 和 Hyprland 显示器文档。
GNOME
确保 mutter >= 48.0。
在 GNOME 的显示设置中启用 HDR。HDR 切换是针对每个显示器的,并且位于分辨率和刷新率设置旁边。
frog-color-management-v1 协议的支持 [3] [4]。请参阅 #使用 GamescopeGamescope with Steam session
Valve 的 Steam 组合器 gamescope 提供了实验性 HDR 支持。按照以下步骤操作,您就可以尝试使用支持 HDR 的 gamescope 运行 Valve 的 Steam 客户端。
- 安装 gamescope 和 gamescope-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,然后登录。
通过命令行
- 按
Ctrl+Alt+F2进入一个新的 TTY。 - 登录并运行
gamescope-session-plus steam来启动 HDR 下的独立 steam 会话。- 如果网络不工作,可以通过安装和启用 NetworkManager 来修复。
配置 Steam
- 在常规设置的“显示”下,您现在应该会看到 HDR 设置。启用 HDR 和实验性 HDR 支持。
- 选择一个支持 HDR 的游戏,然后点击旁边的齿轮图标。
- 将兼容性设置为强制 Proton 8.0 或 Proton Experimental。
- 将游戏分辨率设置为与您的显示器匹配,否则它将以 Steam Deck 的原生分辨率启动。
- 点击“Play”开始游戏。检查游戏内的设置,看看 HDR 设置是否可用,然后启用它。
- 要切换回正常的会话,请从 Steam 菜单中选择Power(电源)和Switch to desktop mode(切换到桌面模式)。
COSMIC
COSMIC 开发者已承诺在初始稳定版本中支持 HDR。
sway
在您的 sway 配置文件中,为输出配置添加 render_bit_depth 10 和 hdr off,并设置 WLR_RENDERER=vulkan 环境变量来启动 sway。
设置一个绑定来切换 HDR,或手动切换,例如:swaymsg output DP-1 hdr toggle。
应用程序配置
Wine/Proton
通过 Wine 或 Steam Proton 进行 HDR 需要 DXVK (2.1+) 或 VKD3D-Proton (2.8+),具体取决于游戏使用的 DirectX 版本。
不使用 Gamescope
要在不使用 gamescope 的情况下使用 HDR,请运行包含 Wayland 驱动程序的 Wine 版本。
- proton-ge-custom:安装 proton-ge-custom-binAUR,并设置
PROTON_ENABLE_WAYLAND=1和PROTON_ENABLE_HDR=1[5]。
- wine-tkg:安装 wine-tkg,设置
DXVK_HDR=1,并取消设置DISPLAY。 - proton-cachyos 或 wine-cachyos:安装您选择的 proton-cachyosAUR、wine-cachyos-optAUR,或 wine-cachyosAUR,并设置
PROTON_ENABLE_WAYLAND=1和DXVK_HDR=1[7]。
使用 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 上是默认选择的。
$ 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 中启用它。
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]。