ArchWiki / HDR
ArchWiki / HDR
fr:HDR monitor support ja:HDR モニターのサポート zh-hans:HDR 显示器支持
High-dynamic range (HDR) is supported by Wayland's Color management and HDR protocol, and some compositors have implemented it. X.org has no plans to support HDR.
Requirements
HDR-capable display
While many displays advertise HDR support, many may provide a suboptimal experience if they lack any form of local dimming. More information is available at RTINGS: Local Dimming on TVs.
HDR-capable GPU and driver
Intel graphics has experimental HDR support with Gen 9 and newer
The implementation is reportedly incomplete.
Vulkan HDR WSI
VK_EXT_swapchain_colorspace and VK_EXT_hdr_metadata extensions are required for HDR support when using the Vulkan API.
mesa 25.1 and later includes these extensions by default.
nvidia-open 595.58.03 and later also includes these extensions by default.
NVIDIA users on drivers before 595.58.03 must install vk-hdr-layer-kwin6-git and set
ENABLE_HDR_WSI1in each game or application that will be used with HDR. Enabling this globally is not recommended.
Compositor configuration
KDE Plasma
See KDE#HDR.
Hyprland
Hyprland >= 0.55 will automatically switch to HDR mode in its default configuration, when the monitor and fullscreen content support it. To use HDR on the desktop you must set cm "hdr" and bitdepth 10 in your monitor configuration like so:
hl.monitor({
-- ...
bitdepth 10,
cm "hdr",
})Additional settings can be found on the Hyprland wiki: monitor color management, render variables.
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.
Gamescope HDR appears "washed out" with GNOME as GNOME lacks scRGB or support for the frog-color-management-v1 protocol https://gitlab.gnome.org/GNOME/mutter/-/issues/4083 https://github.com/ValveSoftware/gamescope/issues/1825. See #With Gamescope
Gamescope 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-git
You may create the optional config file
~/.config/environment.d/gamescope-session.confwith 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" fiUpdate the resolution values above to the correct ones. You can list your displays by running
xrandr --query.You may need to set the Display
CONNECTORif it does not pick the right one by default.
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.
sway
Add render_bit_depth 10 and hdr off to the outputs's config in your sway config file, and start sway with WLR_RENDERERvulkan environment variable set.
Setup a binding to toggle hdr or toggle manually i.e.: swaymsg output DP-1 hdr toggle.
Application configuration
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.
Use either Proton 8.0+ or Proton GE 44+. All come packaged with sufficient DXVK and VKD3D versions.
Without Gamescope
To use HDR without gamescope run a build of Wine which includes the Wayland driver.
Wine's native Wayland driver is experimental and may perform better or worse than Xwayland depending on the game.
proton-ge-custom: install proton-ge-custom-bin and set
PROTON_ENABLE_WAYLAND1andPROTON_ENABLE_HDR1https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/GE-Proton10-1.
PROTON_ENABLE_HDR sets DXVK_HDR1 in proton-ge-custom https://github.com/GloriousEggroll/proton-ge-custom/blob/master/proton#L2088.
wine-tkg: install wine-tkg, set
DXVK_HDR1, and unsetDISPLAY.proton-cachyos or wine-cachyos: install your choice of proton-cachyos-native, wine-cachyos-opt, or wine-cachyos and set
PROTON_ENABLE_WAYLAND1andDXVK_HDR1https://www.reddit.com/r/linux_gaming/comments/1km81f4/proton_cachy_10_released_native_wayland_gaming/.
You can also easily install the aforementioned wine builds to Lutris, Bottles, or Steam using protonup-qt or protonplus.
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-git 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 steamEnable 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 -- executableBy default 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 supported from version 1.10.0 with Vulkan video driver. First, select video driver Vulkan. Then, enable HDR in RetroArch video settings via Settings tab > Video > HDR > Enable HDR.
$ retroarchNative SDL
To run native games that use SDL with HDR set SDL_VIDEODRIVERwayland.
For example for Quake II RTX:
$ SDL_VIDEODRIVER=wayland quake2rtxmpv
For best image quality mpv maintainers recommend using the gpu-next https://github.com/mpv-player/mpv/discussions/16105#discussioncomment-12629196 video output driver, which is the default. gpu-next supports HDR with --gpu-contextwaylandvk, which is selected by default on Wayland.
This requires a Vulkan WSI with HDR support, see #Vulkan HDR WSI
$ mpv "path/to/video"Other ways of enabling Wayland HDR support include using the dmabuf-wayland video output and the drm GPU context.
$ mpv --vo=dmabuf-wayland "path/to/video"From the tty terminal, one could do (
--gpu-contextdrmis selected by default)
$ mpv "path/to/video"Firefox
firefox introduces working experimental HDR in 138.0 under the hidden preference gfx.color_management.hdr. You can enable it at about:config.
Stable HDR is still in progress https://bugzilla.mozilla.org/show_bug.cgi?id=hdr https://bugzilla.mozilla.org/show_bug.cgi?id=1642854.
Chromium
chromium has work-in-progress HDR support https://chromium-review.googlesource.com/c/chromium/src/+/6771393. Support has been merged as of version 141.0.7370.0.
Troubleshooting
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 as #mpv.
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 https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/52.
HDR option missing in games when using multiple AMD GPUs
Using multiple AMD GPUs can cause some games (e.g. RDR2) to hide the option to enable HDR in their graphics settings. This issue can be resolved by setting the DRI_PRIME environment variable to the desired card and excluding others (by appending a !) as explained in PRIME#For open source drivers—PRIME:
DRI_PRIME=pci-0000_2d_00_0!