Xpra: Ticket #909: deep colour support (10-bit colour)

I'm not sure if it's difficult or just few lines of code but in case it's quick fix it'd be nice to have 40 bit color (for Quadro) support, doesn't matter png (which supports 10bpc) or raw, whatever just anything to transport deep color. I happen to work in environment supporting 10bpc. If you care, ATI FirePro support 12bpc? if i remember well. It's ofc supported by normal X server.

Tue, 07 Jul 2015 15:17:38 GMT - Antoine Martin: status, version, description, milestone changed

Neither Xvfb nor wiki/Xdummy support bpp higher than 24/32 at present. This is what you get with Xdummy:

[  8081.079] (EE) DUMMY(0): Given depth (30) is not supported by this driver

And in the code we see:

    if (!xf86SetDepthBpp(pScrn, 0, 0, 0,  Support24bppFb | Support32bppFb))

So this driver would require some work (not sure how much) to support anything other than 24 / 32.

Until then, we could support such modes by running against a real X11 server instead of a virtual one, but this would limit us to one session per GPU at best...

As for the xpra code itself, the pixel compression would not be too much of a problem (I think vp9 supports 10bpp and even alpha channels) - though the client would require some work to take advantage of the extra colours depth.

Mon, 13 Jul 2015 05:33:38 GMT - rektide: cc set

Tue, 12 Jul 2016 13:26:34 GMT - Antoine Martin:

Maybe we can add support for this using desktop mode (#1247), this would at least ensure that we can handle those pixels formats in both server and client code before we add support for it in Xvfb or the dummy driver.

AFAICT, even though png supports 48-bit colour, there is no support for it in pillow, see: Creating a 48-bit TIFF file in Python with PIL, so we will need another encoder even the simplest case..

Tue, 12 Jul 2016 14:41:17 GMT - lapsio:

30 bit support in Linux is still kind of poor, every app implementing it is small step forward. I still really hope this functionality can be implemented in xpra.

Also nVidia drivers support dithered 10bpc on 8bpc displays and it works really well so something like this would be extremely useful if implemented in xpra as it'd actually enable people without Quadro GPUs to display dithered 10bpc on any hardware, even Intel GPUs as long as host does have Quadro/FirePro? to launch X server in 30bit mode.

So host launches X server in 30 bit color, then xpra captures it, possibly performs 10->8 bit dithering and displays on client PC which can have some crappy consumer GPU. It'd be really awesome feature saving money for a lot of people because many of 2d artists are getting cards like Quadro or FirePro? just to get 30bit color and it's not cheap. In laptops Quadro cards are even more expensive as it's only offered in pure top-end mobile workstations.

Being able to get one professional card like this and then use its 30 bit capabilities on all PCs in home no matter what hardware they have would be simply killer feature for some artists.

Thu, 21 Jul 2016 09:42:12 GMT - Antoine Martin:

See ticket:1260#comment:1 and Anandtech: NVidia Pascal - Display Matters: New Display Controller, HDR, & HEVC: For Pascal, NVIDIA is opening things up a bit more, but they are still going to keep the most important aspect of that feature differentiation in place. 10bit color is being enabled for fullscreen exclusive OpenGL applications – so your typical OpenGL game would be able to tap into deeper colors and HDR – however 10bit OpenGL windowed support is still limited to the Quadro cards. So professional users will still need Quadro cards for 10bit support in their common applications.

For enabling 30-bit output: How to Enable 30-bit color on Linux For verifying 30-bit output: 30-bit depth with Linux driver does not produce 30-bit output on monitor.

Thu, 15 Sep 2016 17:00:33 GMT - Antoine Martin: summary changed

Initial support for "r210" added in r13741, tested with a shadow server. Works with all non-video encodings, including mmap.

Still TODO:


Fri, 16 Sep 2016 06:37:05 GMT - Antoine Martin: attachment set

changes needed to xorg.conf for running in 30bpp mode

Fri, 16 Sep 2016 06:37:31 GMT - Antoine Martin: attachment set

changes needed to dummy driver for supporting 30bpp mode

Fri, 16 Sep 2016 07:41:47 GMT - Antoine Martin: milestone changed

Still TODO:

Fri, 16 Sep 2016 09:34:55 GMT - Antoine Martin: attachment set

simplest test config for 30 bpp with Xdummy

Tue, 20 Sep 2016 07:27:05 GMT - Antoine Martin: owner, status changed

Running in 30-bit mode now only requires changing the DefaultDepth 30 in the xorg.conf, or adding -depth 30 to the xdummy command line.

@lapsio / rektide: does that work for you? (will continue improving this in future releases, see ticket links from comment:7)

Tue, 20 Sep 2016 15:57:52 GMT - Antoine Martin:

The patch in comment:8 was incomplete, updated version in r13785 also sent to the mailing list.

Sun, 25 Sep 2016 05:11:40 GMT - Antoine Martin:


Mon, 26 Sep 2016 13:58:28 GMT - Antoine Martin:

See also: ticket:56#comment:22

Thu, 13 Oct 2016 04:54:32 GMT - Antoine Martin: summary changed

Relevant talk: Linux and high dynamic range displays

Fri, 21 Oct 2016 13:10:26 GMT - Antoine Martin: status changed; resolution set

Not heard back, closing.

Will follow up in #1308, #1310 and #1309

Thu, 26 Jan 2017 05:35:01 GMT - Antoine Martin:

Relevant X11 discussion: RFC: Visual Class for On-Screen HDR Drawables

Thu, 09 Feb 2017 08:53:24 GMT - Antoine Martin:

As of r15028, the display's bit depth will be shown in the server output (here with 30-bit):

xpra X11 version 2.0-r15028 64-bit
 uid=1000 (antoine), gid=1000 (antoine)
 running with pid 22114 on Linux Fedora 25 TwentyFive
 connected to X11 display :10 with 30 bit colors

The client bit depth is now also displayed, see ticket:1309#comment:1

Wed, 15 Feb 2017 06:34:14 GMT - Antoine Martin:

r15072 makes it possible to use jpeg and png by downsampling the original 30-bit image. That's only used if we have no other choice.

Mon, 20 Feb 2017 09:09:38 GMT - Antoine Martin:

New wiki page and command line option to switch bit depth, see wiki/ImageDepth

Thu, 13 Apr 2017 15:39:25 GMT - Antoine Martin:

Some minor fixes:

Mon, 28 Aug 2017 04:15:22 GMT - Antoine Martin:

The dummy patch has been merged: PATCH: support for 30 bit depth in dummy driver

Sat, 23 Jan 2021 05:09:30 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/909