HDR 显示器支持
HDR 支持已合并到 Wayland 协议中,部分混成器已实现该功能。而 Xorg 没有支持 HDR 的计划。
- 支持 HDR 的显示器。尽管现在有许多宣称支持 HDR 的显示器,但采用边缘照明局部调光(edge-lit local dimming)的设备提供的 HDR 体验可能无法令人满意。更多信息请参阅 Local Dimming on TVs。
- 支持 HDR 的显卡驱动:已确认 AMDGPU 和 NVIDIA(550.54.14 及以后的版本)可正常工作。
- NVIDIA 565.57.01 之前的版本存在一个可能导致 HDR 模式下色彩表现不正确或偏淡的 bug。[1]
- Intel 图形处理器自内核版本 5.12 起为第 9 代及更新的核显提供实验性的 HDR 支持[2],但据报告其实现不完整。
- 兼容的混成器,参见 #混成器。
- 兼容的应用程序,参见 #应用程序
- 支持 HDR 的 Vulkan WSI(窗口系统集成),参见 #Vulkan HDR WSI。
对于 NVIDIA 和版本 25 之前的 mesa包,需要安装 vk-hdr-layer-kwin6-gitAUR 才能支持 VK_EXT_swapchain_colorspace 和 VK_EXT_hdr_metadata 这两个 Vulkan 扩展 [3] [4]。没有这两个扩展则无法通过 Vulkan API 使用 HDR。
通过设置 ENABLE_HDR_WSI=1 来启用 Wayland 下的 Vulkan HDR WSI。不建议全局启用,应分别为每个需要使用 HDR 的游戏或其它应用程序启用。
参见 KDE#HDR。
首先确保 hyprland包 的版本 ≥ 0.47.0 并配置 xx_color_management_v4 变量为 true。
在 Hyprland 配置文件中对应显示器的配置行末尾追加:, bitdepth, 10, cm, hdr
在对应显示器的配置中添加以下内容:
supports_wide_color = 1 supports_hdr = 1
更多设置请参阅 Hyprland Wiki。
更多信息可在 Hyprland 实验性功能文档和 Hyprland 显示器文档中找到。
首先确保 mutter包 的版本 ≥ 48.0。
在 GNOME 的显示设置中启用 HDR。每个显示器都有 单独的 HDR 开关,在分辨率和刷新率设置旁。
frog-color-management-v1 协议的支持 [5] [6]。参见 #使用 Gamescope
Valve 的混成器 Gamescope 提供了实验性 HDR 支持。按以下步骤可尝试在 Gamescope 环境中运行 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" # Gamescope 启动参数 fi- 需将分辨率数值设置为实际值(可通过
xrandr --query命令查询显示设备参数)。 - 若未自动识别显示接口,需手动设置
CONNECTOR参数。
- 需将分辨率数值设置为实际值(可通过
现在可通过以下任一方式启动 Gamescope:
登出,在显示管理器中选择“Steam Big Picture”登录。
- 按下
Ctrl+Alt+Fx进入一个新的 TTY。 - 登录后执行
gamescope-session-plus steam在 Gamescope 中启动 Steam 独立会话。- 若网络不可用,安装并启用 NetworkManager。
- 在常规设置中的“显示”部分,启用 HDR 和实验性 HDR 支持。
- 选择一款支持 HDR 的游戏,点击旁边的齿轮图标。
- 将兼容性设置为强制使用 Proton 8.0 或 Proton Experimental。
- 将游戏分辨率设置为与显示器一致,否则将默认以 Steam Deck 的分辨率启动。
- 点击“开始游戏”启动游戏。进入游戏后检查设置中的 HDR 选项,并将其启用。
- 若需切换回正常桌面会话,请在 Steam 菜单中选择“电源” -> “切换到桌面模式”。
COSMIC 的开发者在博文中承诺将在初始稳定版本中加入 HDR 支持。
通过 Wine 或 Steam Proton 实现 HDR 需要 DXVK(2.1 及以上版本)或 VKD3D-Proton(2.8 及以上版本),具体的依赖视游戏所使用的 DirectX 版本而定。
若不使用 Gamescope 启用 HDR,需要运行包含 Wayland 驱动的 Wine 构建版本。
-
proton-ge-custom:安装 proton-ge-custom-binAUR,并设置
PROTON_ENABLE_WAYLAND=1与PROTON_ENABLE_HDR=1[7]。
-
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[9]。
Gamescope 正常启用 HDR 需要混成器支持 scRGB,且支持 xx-color-management-v4、frog-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 -- 可执行文件
-W(宽)和 -H(高)参数设置需要的分辨率。RetroArch 目前仅在 Git 版本 retroarch-gitAUR 中支持 HDR。请在 RetroArch 的视频设置中启用 HDR。
$ retroarch
要运行使用 SDL 的原生游戏并启用 HDR,请设置 SDL_VIDEODRIVER=wayland。
例如运行 Quake II RTX:
$ SDL_VIDEODRIVER=wayland quake2rtx
为了获得最佳图像质量,mpv 的维护者推荐使用 gpu-next 输出模式 [10]。
$ mpv --vo=gpu-next --target-colorspace-hint --gpu-api=vulkan --gpu-context=waylandvk "path/to/video"
其他启用 Wayland HDR 支持的方式包括使用 dmabuf-wayland 和 drm 视频输出。
$ mpv --vo=dmabuf-wayland "path/to/video"
- 在 tty 终端下,也可以使用:
$ mpv --vo=drm "path/to/video"
firefox包 从 138.0 版本开始引入了可用的实验性 HDR 支持,通过隐藏的配置项 gfx.wayland.hdr 启用。可在 about:config 中启用。
Kodi 的 Wiki 提供了一份合理使用的 HDR 视频样本列表,可使用支持 HDR 的视频播放器(如 #mpv)播放来测试 HDR 输出效果。
Pipewire 会尝试以 BGRA 格式进行流传输,但由于 WebRTC 当前无法解析该格式,因此会导致异常。具体表现为抛出 ParamId:EnumFormat: 0:0 Invalid argument 错误,并导致该应用的 WebRTC 套接字崩溃 [14]。