Instantly share code, notes, and snippets.

# siracusa/Pro Display XDR at 120Hz bandwidth calculation.md

Last active August 10, 2022 02:07
Star You must be signed in to star a gist
Pro Display XDR at 120Hz bandwidth calculations

From Jonathan Dietz, Jr.:

Almost all new displays employ VESA Coordinated Video Timings using Reduced Blanking Timing Version 2 (CVT-RBv2) which adds a small amount of overhead to the video signal. This overhead includes 80 additional horizontal pixels and enough additional lines to meet the 460 µs minimum vertical blanking interval requirement. You can download an Excel spreadsheet from VESA that will do all the calculations for you, but the math is pretty simple:

`460 / ((1000000 / [refresh rate in Hz] - 460) / [vertical resolution])`

To get an integer number of lines, you round this result down and add 1. So for Pro Display XDR resolution at 120 Hz that would work out to:

`460 / (1000000 / 120 - 460) / 3384) = 197.710 = 198 additional lines`

That makes for an effective resolution of 6096 x 3582 @ 120 Hz, or 6096 * 3582 * 120 = 2,620,304,640 pixels per second.

Multiplying pixels per second by the number of bits used to encode each pixel results in the required bandwidth. Display Stream Compression (DSC) provides a programmable compressed bit rate of 8 bits per pixel or higher (or 6 bits per pixel or higher for streams using 4:2:0 chroma subsampling). So the minimum bandwidth when DSC is enabled for an RGB stream with no chroma subsampling is simply `[pixels per second] * 8 = 2,620,304,640 * 8 = 20.96 Gbit/s`. That would work out to a compression ratio of 3.75:1, which is on the high side for being "visually lossless", but is still within spec.

Without DSC, bits per pixel would be equal to `[bits per component] * [number of components] * [chroma subsampling ratio]`. HDR displays like the Pro Display XDR generally require at least 10 bits per component, the number of components for both RGB and Y'CbCr is 3, and the commonly supported chroma subsampling ratios are:

``````4:4:4 (no chroma subsampling) = 1/3 + 1/3 + 1/3 = 1
4:2:2 = 1/3 + 1/6 + 1/6 = 2/3
4:2:0 = 1/3 + 1/6 + 0 = 1/2
``````

For our hypothetical 120 Hz Pro Display XDR that would work out to `10 * 3 * 1 = 30 bits per pixel * 2,620,304,640 pixels per second = 78.61 Gbit/s`.

And for reference, here is a list of bandwidths for standard 4-lane DisplayPort Main Links:

``````Reduced Bit Rate (RBR) = 4 * 1.62 Gbit/s * 8/10 = 5.184 Gbit/s
High Bit Rate (HBR) = 4 * 2.7 Gbit/s * 8/10 = 8.64 Gbit/s
High Bit Rate 2 (HBR2) = 4 * 5.4 Gbit/s * 8/10 = 17.28 Gbit/s (optional, introduced in DP 1.2)
High Bit Rate 3 (HBR3) = 4 * 8.1 Gbit/s * 8/10 = 25.92 Gbit/s (optional, introduced in DP 1.3)
Ultra High Bit Rate 10 (UHBR10) = 4 * 10 Gbit/s * 128/132 * ? =  38.69 Gbit/s (introduced in DP 2.0)
Ultra High Bit Rate 13.5 (UHBR13.5) = 4 * 13.5 Gbit/s * 128/132 * ? =  52.22 Gbit/s (optional, introduced in DP 2.0)
Ultra High Bit Rate 20 (UHBR20) = 4 * 20 Gbit/s * 128/132 * ? = 77.37 Gbit/s (optional, introduced in DP 2.0)
``````

And maximum DisplayPort tunneling bandwidth for Thunderbolt / USB4 links:

``````Thunderbolt = 2x 4-lane HBR main links = 17.28 Gbit/s
Thunderbolt 2 = 1x 4-lane HBR2 main link = 17.28 Gbit/s
Thunderbolt 3 (Alpine Ridge) = 2x 4-lane HBR2 main links = 34.56 Gbit/s
Thunderbolt 3 (Titan Ridge) = 1x 4-lane HBR3 main link + 1x 2-lane HBR3 main link = 38.88 Gbit/s
Thunderbolt 4 = 1x 4-lane HBR3 main link + 1x 2-lane HBR3 main link = 38.88 Gbit/s
USB4 Gen2x2 = 1x 4-lane HBR2 main link = 17.28 Gbit/s
USB4 Gen3x2 = 2x 4-lane HBR2 main links or 1x 4-lane HBR3 main link + 1x 4-lane HBR main link = 34.56 Gbit/s
``````

To accomodate a 120 Hz Pro Display XDR you'd need at a minimum a DisplayPort 1.4, DisplayPort Alternate Mode on USB Type-C, Thunderbolt 3, or USB4 Gen3x2 link plus a DisplayPort 1.4 source with HBR3 and DSC capabilities. There's no way to do it over a single link without DSC and/or chroma subsampling.