HDR monitor support
HDR support has been merged into Wayland, and some compositors have implemented it. X.org has no plans to support HDR.
Requirements
- An HDR capable display. Though many displays now advertise HDR, those that use edge lit local dimming can fail to deliver a satisfactory HDR experience. You can learn more at RTINGS: Local Dimming on TVs.
- 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. [1]
- Intel graphics has experimental HDR support starting from Gen 9 graphics and kernel 5.12 but the implementation is reportedly incomplete.
- A supported compositor, see #Compositors
- A supported application, see #Applications
- A Vulkan WSI with HDR support, see #Vulkan HDR WSI
Configuration
Vulkan HDR WSI
For NVIDIA and mesa prior to version 25, vk-hdr-layer-kwin6-gitAUR is required for the VK_EXT_swapchain_colorspace
and VK_EXT_hdr_metadata
vulkan extensions [2] [3]. Without them, HDR will not work using the Vulkan API.
Enable the Vulkan Wayland HDR WSI layer by setting ENABLE_HDR_WSI=1
. It is not recommended to enable this globally, instead enable it on each game and application you wish to use with HDR.
Compositors
KDE Plasma
See KDE#HDR.
Hyprland
Ensure hyprland >= 0.47.0 and set the xx_color_management_v4
variable to true.
More information can be found in the Hyprland experimental docs.
GNOME
Ensure mutter is >= 48.0.
Enable HDR in GNOME's display settings. The HDR toggle is per-monitor and is located next to the resolution and refresh rate setting.
frog-color-management-v1
protocol [4] [5]. See #With GamescopeGamescope 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.
- 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 -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.
- Update the resolution values above to the correct ones. You can list your displays by running
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
- Go to a new TTY by pressing
Ctrl+Alt+F2
- 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
- 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.
COSMIC
The COSMIC developers have promised HDR support in the initial stable release.
Applications
Gaming
Wine/Proton
HDR through Wine or Steam Proton requires DXVK (2.1+) or VKD3D-Proton (2.8+), depending on DirectX version used by the game.
Without Gamescope
To use HDR without gamescope run a build of Wine which includes the Wayland driver.
- proton-ge-custom: install proton-ge-custom-binAUR and set
PROTON_ENABLE_WAYLAND=1
andPROTON_ENABLE_HDR=1
[6].
- wine-tkg: install wine-tkg, set
DXVK_HDR=1
, and unsetDISPLAY
. - proton-cachyos or wine-cachyos: install your choice of proton-cachyosAUR, wine-cachyos-optAUR, or wine-cachyosAUR and set
PROTON_ENABLE_WAYLAND=1
andDXVK_HDR=1
[8].
With Gamescope
Gamescope with proper HDR requires scRGB and xx-color-management-v4
protocol support or frog-color-management-v1
protocol support in your compositor.
Because of this gamescope will not work with the vk-hdr-layer-kwin6-gitAUR layer. Ensure ENABLE_HDR_WSI
is not 1
.
You have many options for using gamescope depending on your desired configuration:
- Launch Steam with HDR enabled. All games will then have HDR enabled, but Steam and all games will be launched inside a gamescope window.
$ gamescope --hdr-enabled --steam -- env DXVK_HDR=1 steam
- Enable HDR for a single game in Steam. Set the following Launch options:
DXVK_HDR=1 gamescope -f --hdr-enabled -- %command%
- To launch a non-Steam game within gamescope:
$ DXVK_HDR=1 gamescope -f --hdr-enabled -- executable
gamescope
will launch with 1280x720 resolution. To override the default resolution, use the -W
and -H
parameters to a desired resolution.Retroarch
HDR in Retroarch is currently only supported on the git release retroarch-gitAUR. Enable HDR in RetroArch's video settings.
$ retroarch
Native SDL
To run native games that use SDL with HDR set SDL_VIDEODRIVER=wayland
.
For example for Quake II RTX:
$ SDL_VIDEODRIVER=wayland quake2rtx
mpv
For best image quality MPV maintainers recommend using gpu-next
[9].
$ mpv --vo=gpu-next --target-colorspace-hint --gpu-api=vulkan --gpu-context=waylandvk "path/to/video"
Other ways of enabling Wayland HDR support include using the dmabuf-wayland
and drm
video outputs.
$ mpv --vo=dmabuf-wayland "path/to/video"
- From the tty terminal, one could do
$ mpv --vo=drm "path/to/video"
Firefox
firefox introduces working experimental HDR in 138.0 under the hidden preference gfx.wayland.hdr
. You can enable it at about:config
.
Stable HDR is still in progress [10] [11].
Chromium
chromium has work-in-progress HDR support [12].
Tips and tricks
HDR video samples
Kodi wiki maintains the list of fair use HDR video samples. These can be used to test the HDR output using video players that support HDR such has #mpv.
Troubleshooting
Broken screen sharing with HDR10
Pipewire attempts to stream what it sees as BGRA, which WebRTC cannot interpret, due to its current lack of capacity to interpret it. As such, a "ParamId:EnumFormat: 0:0 Invalid argument" exception is thrown and the WebRTC socket crashes for that application [13].