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.
HDR video support
HDR support on Linux is not implemented yet in the display servers, though it is being worked on:
- X.org (and Xorg clients): no support for passing HDR metadata to the display, see https://gitlab.freedesktop.org/xorg/xserver/-/issues/1037#note_521100
- Wayland (and Wayland clients): no support for passing HDR metadata to the display, see https://gitlab.freedesktop.org/wayland/weston/-/issues/467 and https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/14
- DRM clients can directly pass HDR metadata, but this is not available from regular userspace clients, only specialized software can use it: https://gitlab.freedesktop.org/mesa/drm/-/blob/main/include/drm/drm_mode.h#L809
- COSMIC will include support for HDR.
HDR gaming support
- Use an HDR capable display
- Use an AMD GPU. HDR is currently only supported on AMDGPU.
- Use DXVK version 2.1 or later
- Use VKD3D-Proton version 2.8 or later
- Use either Proton 8.0, Experimental, or Proton GE version 44 and higher. All come packaged with sufficient DXVK and VKD3D versions.
- Use a linux kernel with Josh Ashton Kernel Patches
- * Unconfirmed
- compile a kernel yourself Kernel/Traditional compilation
- A game that supports HDR
Gamescope Session Configuration
Since currently neither Wayland nor X11 offer an API that fully supports HDR, your games also will not be able to display correct HDR content on them. Valve's Steam compositor gamescope does offer experimental HDR support. Following these steps will allow you to try out Valve's Steam client running through the HDR capable gamescope.
- Install AUR
- You may create the optional config file
~/.config/environment.d/gamescope-session.confwith the below content
- Update the resolution values to the correct ones. You can list your displays by running
- You may need to set the Display connector if it doesn't pick the right one by default.
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
You can now start
gamescope from your login manager or a terminal.
Via a login manager
Log out and select the
Steam Big Picture in your login manager and log in.
From the command line
- Go to a new tty by pressing
- Log in and run
gamescope-session-plus steamto start the standalone steam session in HDR.
- If networking does not work you can fix it by installing and enabling NetworkManager.
- In the general settings, under Display, you should now see HDR settings. Enable HDR and Experimental HDR Support.
- Select an HDR compatible game and click on the cog next to it
- Set Compatibility to Force Proton 8.0 or Proton Experimental
- Set Game Resolution to match your monitor otherwise it will launch at Steam Deck native resolution
- Click Play to start the game. Check the in-game settings to see if the HDR setting is available and enable it
- To switch back to your normal session, select Power and Switch to desktop mode from the Steam menu