HDR video playback
This page aims to explain how to watch HDR (High Dynamic Range) videos.
- HDR video playback is still at its early stages on Linux, there are a lot of limitations to this feature.
- Red Hat has hired people to work on improving HDR and developers at X.org are also working on improving HDR on Linux. See the roadmap.
- This guide may affect the performance of your computer
Requirements
- An HDR-compatible graphics card,
- X11 as the display server,
- mpv (Required for NVIDIA cards, optional otherwise),
- A compatible display manager,
- An HDR10 certified monitor.
Integrated graphics cards work, but the video playback has framerate drops.
Limitations
- Only HDR10 videos seem to work.
- Dolby Vision is not supported yet.
- On NVIDIA graphic cards, it seems like only mpv is able to playback properly an HDR Stream, Chromium has coloring and depth issues. AMD and Intel cards are not limited to mpv.
- X11 seemingly only pushes up to 600 nits peak brightess. Anything above is not taken advantage of.
- Hybrid graphics so far, does not work. It is recommended for you to disable your integrated card from your BIOS/UEFI Menu.
- Browsers like Firefox, Epiphany and others do not have HDR support yet. It is recommended to use a Chromium based browser.
- Some users report that VLC is also able to play HDR content, although most of the time it does not work as intended.
- Game/AutoHDR support is not yet available.
- The color profile
bt.2020
has display depth issues. It is recommended to usebt.1889
- Although Wayland has implemented HDR color profiles, only the compositor can take advantage of it. So far, only Sway and Weston seem to have implemented this feature up to a point.
- Some applications either break or refuse to launch. One game breaking example is Steam.
Setup
Display managers
So far, only these display managers can take advantage of HDR:
Any other display managers will either crash, switch the blue and red display output signals or just not support HDR video playback.
X server
Set DefaultDepth
and Depth
values to 30 in the X configuration:
/etc/X11/xorg.conf
Section "Screen" ... DefaultDepth 30 ... SubSection "Display" ... Depth 30 ... EndSubSection EndSection
Chromium
Append the following flags:
--enable-features=VaapiVideoDecoder,VaapiVideoEncoder,RawDraw --ignore-gpu-blocklist --enable-gpu-rasterization --use-gl=desktop
Go to about://flags
and change #force-color-profile
preferably to Display P3 D65
.
- Hardware acceleration is required. See Chromium#Hardware video acceleration
- Since Chromium 100, you will need to enable both
#temporary-unexpire-flags-m98
and#temporary-unexpire-flags-m99
for the#force-color-profile
option to appear.
mpv
HDR support is native and all the configurations are set to correct values by default. You can adjust the peak brightness using --target-peak
.
Usage
If you are using mpv, launch your HDR video on it.
If you are using Chromium, play an HDR HTML5 video on it. Websites such as Netflix and YouTube also support HDR video playback.
Troubleshooting
Square/Straighten corners on GNOME
Installing the mutter-roundedAUR package and tweaking it using mutter_settings
seems to solve this issue.
Transparency issues
On NVIDIA, install the proprietary drivers, with a version higher than 470.xx. This seems to solve this issue to a point, but some applications like gnome-terminal-transparencyAUR still have transparency issues with NVIDIA.
Check if watching HDR or not
Pay close attention to shadows and other details, if they are pixelated a lot or seem to have the wrong color, you are most likely playing back at SDR.
On Chromium, check if you are streaming HDR by watching an HDR YouTube video. If the cog icon has an HDR label on it, it means you are streaming in HDR.
My monitor seems to have switched the Blue and red signals
You may be:
- Using a hybrid system. Disable your integrated GPU in your BIOS/UEFI.
- Using an incompatible display manager. See #Display managers
Chromium's window displays as blue and purple
On AMD and NVIDIA graphic cards, Vulkan might be the culprit. Try disabling this feature by removing it from --enable-features
flag.