xpra icon
Bug tracker and wiki

Opened 9 months ago

Last modified 3 months ago

#1309 new enhancement

10-bit color support in opengl client

Reported by: Antoine Martin Owned by: alas
Priority: major Milestone: 2.0
Component: client Version: trunk
Keywords: 30-bit colour opengl Cc:

Description

Split from #909.

The best explanation of the changes required can be found in https://www.nvidia.com/docs/IO/40049/TB-04701-001_v02_new.pdf, see 30-Bit Visual on Linux.

We'll need to tell the server we want 10-bit colour, maybe advertise a new YUV or RGB upload mode.

Attachments (2)

gl_check.txt (11.2 KB) - added by Antoine Martin 4 months ago.
gl_check.py output
session-info-bit-depth.png (50.0 KB) - added by Antoine Martin 4 months ago.
shows the bit depth on session info

Download all attachments as: .zip

Change History (6)

Changed 4 months ago by Antoine Martin

Attachment: gl_check.txt added

gl_check.py output

comment:1 Changed 4 months ago by Antoine Martin

Owner: changed from Antoine Martin to alas

With r15015, running xpra/client/gl/gl_check.py against a 30-bit display I get attachment/ticket/1309/gl_check.txt, which shows:

* blue-size                       : 10
* red-size                        : 10
* green-size                      : 10
* depth                           : 30

So we can detect support for 30-bit color and 10-bit per channel.
And r15018 handles 30-bit modes with native 30-bit upload: "r210" == "GL_UNSIGNED_INT_2_10_10_10_REV".
r15019 fixes swapped colour red and blue (oops), r15026 allows us to prefer high bit depth "r210" plain rgb encoding if the client is using 10-bit depth rendering. (jpeg and video encodings will still be used for lossy packets).
r15027 shows the bit depth on session info (normal bit depth is 24):
shows the bit depth on session info

We could probably handle R210 the same way (as "GL_UNSIGNED_INT_2_10_10_10") but since I don't have hardware to test.. this is not supported.

@afarr: FYI, we can handle high color depth displays (only tested on Linux).

Last edited 4 months ago by Antoine Martin (previous) (diff)

Changed 4 months ago by Antoine Martin

Attachment: session-info-bit-depth.png added

shows the bit depth on session info

comment:2 Changed 3 months ago by Antoine Martin

PS: r15094 fixes opengl rendering which broke because our hacked pygtkglext library is missing the "get_depth" method, OSX clients will not support high bit depths until this is fixed: #1443

comment:3 Changed 3 months ago by Antoine Martin

Milestone: 3.02.0

comment:4 Changed 3 months ago by Antoine Martin

See new wiki page: wiki/ImageDepth

Note: See TracTickets for help on using tickets.