跳至內容

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]

另請參閱

[編輯 | 編輯原始碼]