HOWTO enable 10-bit color on Linux
The combinations of modern monitors and AMD graphics cards support 10-bit color on Linux. It's not enabled by default on GNU/Linux distributions. Enabling it is just a matter of having one line with
"DefaultDepth 30" in a configuration file in
There are some known pitfalls to be aware of. The biggest one is: Vulkan does not work. Also, Chrome/Chromium prior to version 85 display incorrectly.
Example configuration file
/etc/X11/xorg.conf.d/30-screensetup.conf with the following content will give you 10-bit color:
Section "Screen" Identifier "Default Screen" Monitor "Configured Monitor" Device "Configured Video Device" # 24 for 8-bit or 30 for 10-bit DefaultDepth 30 EndSection
And that's it.
DefaultDepth 30 is the crucial line. The reason 30 enables 10-bit color is that R, G, B = 3 colors * 10 bits = 30.
Can You Into 10-bit?
The log file
/var/log/Xorg.0.log will have all kinds of incriminating information about your computer. The first clue look for when you are trying to get into 10-bit is the EDID section created per monitor. It will look something like this when a monitor is connected to a AMD card capable of 10-bit (that would be all but really ancient AMD GPUs):
[ 23.998] (II) AMDGPU(0): EDID for output DisplayPort-2 [ 23.998] (II) AMDGPU(0): Manufacturer: AUS Model: 28b1 Serial#: 108105 [ 23.998] (II) AMDGPU(0): Year: 2017 Week: 29 [ 23.998] (II) AMDGPU(0): EDID Version: 1.4 [ 23.998] (II) AMDGPU(0): Digital Display Input [ 23.998] (II) AMDGPU(0): 10 bits per channel [ 23.998] (II) AMDGPU(0): Digital interface is DisplayPort [ 23.998] (II) AMDGPU(0): Max Image Size [cm]: horiz.: 62 vert.: 34 [ 23.998] (II) AMDGPU(0): Gamma: 2.20
The 10 bits per channel shows that the monitor can accept a 10-bit signal. This indicates that the monitor supports 10-bit color input. Do be aware that there are TN panels with support for 10-bit input even though they are limited to 6-bit actual display output. You can send them 10-bit color and the display will look fine (for TN panels, anyway) but the color won't actually be 10-bit or HDR. You can usually tell if a monitor has true 10-bit support or not by it's price-tag (and spec-sheet).
The second line you want to look for is one which says
Pixel depth =. It will either say
(II) AMDGPU(0): Pixel depth = 24 bits stored in 4 bytes (32 bpp pixmaps)
if you are using 8-bit OR, if you are into 10-bit:
(II) AMDGPU(0): Pixel depth = 30 bits stored in 4 bytes (32 bpp pixmaps)
Major Problems To Be Aware Of
Most software works just fine in a 10-bit color X environment but there are some issues with several programs.
Chrome and Chromium <=84 Are All Messed Up With 10-bit Color Enabled
Chrome and Chromium prior to version 85 would produce a really messed up window with 10-bit color enabled. It would simply fail to understand that it was in a 10-bit environment and act as if it was in a 8-bit color environment. Here is a screenshot with Firefox on the left and a Chromium on the right, both showing www.gnu.org:
You may or may not notice that there was a minor problem with using Chrome and Chromium prior to version 85 in X using 10-bit color-depth. Chromium had this problem since forever until it was in no way solved in Chrome/Chromium 85.
Chrome and Chromium >=85 Lack Hardware Acceleration With 10-bit Color Enabled
Chromium 85 and later versions have entirely different problems with 10-bit color on Linux:
- Menus and other GUI elements "blink" a dark yellow square half a second before menus and other GUI elements appear. This is noticeable and annoying but it is not the end of the world.
- All GPU hardware acceleration is disabled. This is a pretty big deal since it's just utterly slow without it.
vulkaninfo will say Vulkan is enabled, existing and that all is well but actual programs trying to use it for anything will fail to start. Running vkmark, or anything else using Vulkan, gives this error:
Error: No suitable Vulkan physical devices found
We have filed a complaint with the Mesa customer service listed as issue #3537.
It is, apparently, possible to make Vulkan run using "hacks". The result of doing that is "psychedelic colors". Sounds kind of nice.
There may be programs beyond Vulkan programs and Chromium/Chrome that have issues when you are using a 10-bit display. Please let us know in the comment section below if you run into any. We haven't. It's just Chromium and Vulkan that are problematic as far as we know.