HDR monitor support - ArchWiki

Jump to content
From ArchWiki

Related articles

- Steam
- Gaming
- Gamescope

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

### Requirements

1. Use an 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 8.0, Experimental, or Proton GE version 44 and higher. All come packaged with sufficient DXVK and VKD3D versions.
6. Use a linux kernel with Josh Ashton Kernel Patches
   - linux-fsync-nobara-binAUR
   - linux-zen * Unconfirmed
   - compile a kernel yourself Kernel/Traditional compilation
7. Steam
8. 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.

1. Install gamescope
2. Install gamescope-session-steam-gitAUR
3. You may create the optional config file `~/.config/environment.d/gamescope-session.conf` with the below content
4. 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.

    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

### Start gamescope-session

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

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

### References

- https://github.com/ChimeraOS/gamescope-session/tree/main
- https://www.reddit.com/r/linux_gaming/comments/10m2gyx/guide_alpha_test_hdr_on_linux/

Categories:

- Gaming
- Graphics
- Graphical user interfaces