HDR monitor support
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 [1].
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
- System76 have announced their new Rust based Cosmic Desktop will have a brand new Wayland compositor (based on Smithay) which will include support for HDR as well as fractional scaling and HiDPI, see https://blog.system76.com/post/november-at-system76-products-promos--cosmic-de.
HDR gaming support
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. To try out Valve's Steam client running through the HDR capable gamescope do [2]:
- use a 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 experimental or proton GE version 44 and higher. Both come packaged with sufficient DXVK and VKD3D versions.
- open your steam library, filter for tools and right click on steam linux runtime soldier open it's properties and click on BETAS, choose "client_beta"
- use a linux kernel with Josh Ashton Kernel Patches, linux-fsync-nobara-binAUR contains these patches, but you may also compile a kernel yourself Kernel/Traditional compilation
- install gamescope
- install gamescope-session-gitAUR
- Create ~/.config/environment.d/gamescope-session.conf
if [ "$XDG_SESSION_DESKTOP" = "gamescope" ] ; then SCREEN_WIDTH=1920 SCREEN_HEIGHT=1080 CONNECTOR=*,eDP-1 STEAMCMD="steam -gamepadui -steamos3 -steampal -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" export ENABLE_GAMESCOPE_WSI=1 export DXVK_HDR=1 fi
How to use gamescope-session
You can now start gamescope from your login manager or a terminal.
- Log out and select the Gamescope Session in your login manager.
- Go to a new tty by pressing Ctrl+Alt+F2, log in and run
gamescope-session
to start the standalone steam session in HDR. If networking does not work you can fix it by installing and enabling NetworkManager.