HDR monitor support

From ArchWiki

This page will serve as a guide to the current state of HDR monitor support on Linux. To better understand the challenges involved you can watch the video in this article.

Support for HDR is not yet merged in Wayland and as such is also not yet implemented in most display servers.

X.org has no plan to support HDR [1].

Current progress includes:

  • KDE Plasma 6.0 introduced experimental HDR support for Wayland session. See KDE#HDR for launch options required to use HDR.
  • Wayland (and Wayland clients): no support for passing HDR metadata to the display [2] [3].
  • DRM clients can directly pass HDR metadata, but this is not available from regular userspace clients, only specialized software can use it.
  • COSMIC developers have promised HDR support in the initial stable release.
  • Hyprland will require support in its rendering backend Aquamarine [4].
  • Wlroots, "Add HDR signalling" MR.
  • GNOME has HDR support in progress [5]

Requirements

  • HDR capable display.
  • HDR capable graphics driver: AMDGPU and NVIDIA (550.54.14+) are confirmed to work.
    • A bug in NVIDIA before 565.57.01 will cause colors to appear washed out in HDR[6].
  • A supported display server, see #Configuration
  • A program with HDR support:
  • A supported compatibility layer if playing Windows games: Wine or Steam Proton.
    • DXVK (2.1+) or VKD3D-Proton (2.8+), depending on DirectX version used by the game.
      Tip: Use either Proton 8.0, Experimental, or Proton GE 44+. All come packaged with sufficient DXVK and VKD3D versions.

Configuration

KDE Plasma

See KDE#HDR.

Gamescope with Steam session

Valve's Steam compositor gamescope offers experimental HDR support. Following these steps will allow you to try out Valve's Steam client running through the HDR capable gamescope.

Tip: An AMDGPU is recommended for use with gamescope - NVIDIA is known to have critical issues.
  • Install gamescope and gamescope-session-steam-gitAUR
  • You may create the optional config file ~/.config/environment.d/gamescope-session.conf with the following content:
    if [ "$XDG_SESSION_DESKTOP" = "gamescope" ] ; then
        SCREEN_WIDTH=1920
        SCREEN_HEIGHT=1080
        CONNECTOR=*,eDP-1
        CLIENTCMD="steam -gamepadui -steamos3 -steampal -steamdeck -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
    
    • Update the resolution values above to the correct ones. You can list your displays by running xrandr --query.
    • You may need to set the Display CONNECTOR if it does not pick the right one by default.

You can now start gamescope from your login manager or a terminal using one of the following steps:

Via a login manager

Log out and select the Steam Big Picture in your login manager and log in.

Via the command line

  1. Go to a new TTY by pressing Ctrl+Alt+F2
  2. Log in and run gamescope-session-plus steam to start the standalone steam session in HDR.
    • If networking does not work you can fix it by installing and enabling NetworkManager.

Configure Steam

  1. In the general settings, under Display, you should now see HDR settings. Enable HDR and Experimental HDR Support.
  2. Select an HDR compatible game and click on the cog next to it.
  3. Set Compatibility to Force Proton 8.0 or Proton Experimental.
  4. Set Game Resolution to match your monitor otherwise it will launch at Steam Deck native resolution.
  5. Click Play to start the game. Check the in-game settings to see if the HDR setting is available and enable it.
  6. To switch back to your normal session, select Power and Switch to desktop mode from the Steam menu.

See also