HDR monitor support - ArchWiki

Jump to content
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 [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]:

1. use a HDR capable display
2. use an AMD GPU. HDR is currently only supported on AMDGPU.
3. use DXVK version 2.1 or later
4. use VKD3D-Proton version 2.8 or later
5. use either proton experimental or proton GE version 44 and higher. Both come packaged with sufficient DXVK and VKD3D versions.
6. 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"
7. 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
8. install gamescope
9. install gamescope-session-gitAUR
10. Create ~/.config/environment.d/gamescope-session.conf
    - Update the resolution values to the correct ones. You can list your displays by running `xrandr --query`
    - You may need to set the Display connector if it doesn't pick the right one by default.
    - Additional information can be found at [3] and [4].

    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.

Categories:

- Graphics
- Graphical user interfaces