I don't know if an MST hub can do two 5K displays.
I have successfully done one 5K display (it's actually dual tile: 483.25MHz per tile = 23 Gbps at 8bpc)
I have successfully done three 4K 533MHz 8bpc displays. That's 38.3 Gbps.
Two 5K 936 MHz 8bpc displays is 44.9 Gbps. Maybe that's not too much. Or maybe it helps that one uses DSC pass thru.
DSC@12bpp can do up to 2160 MHz (HBR3 x4) but there's some overhead unaccounted for in that (3% for FEC. More for MST).
DSC@8bpp can do up to 3240 MHz but you don't get to choose the bpp (except macOS has a preference for changing that which I haven't seen anyone try yet).
https://forums.macrumors.com/thread...-on-mac-pro-yes-you-can.2309750/post-30748427
You have to look at the DPCD registers of the MST hub to see the exact DSC capabilities. AGDCDiagnose in macOS can do that. I added a similar capability in my macOS AllRez utility (I think mine might be easier to read?). I want to find a method to read the DPCD registers of all DisplayPort devices in a DisplayPort tree (you can connect multiple MST hubs together, for example, and some HDMI adapters are actually MST hubs).
https://forums.macrumors.com/thread...-on-mac-pro-yes-you-can.2309750/post-30760662
The DisplayPort 1.4 spec is not available for download so I don't know what all the DPCD registers mean regarding DSC.
Below is sample output from my AllRez command for the MST hub in my HP Thunderbolt Dock G2 connected to an unflashed GC-ALPINE RIDGE in my MacPro3,1 using DisplayPort 1.2 from a EVGA Nvidia GeForce GTX 680.
The BRANCH_OUI and BRANCH_ID show that this is a Synaptics VMM-5333 MST hub.
https://www.synaptics.com/products/video-interface-ics
https://uploadcdn.oneyac.com/attachments/userfile/b4/13/1593672494627_4765.pdf
Actually, I have 3 other MST hubs connected to that MST hub before the display connection but I haven't found a method to read the DPCD from the other devices in the chain yet.
Code:
DisplayPort = {
00000h: 12 14 c4 81 01 11 01 83 2a 3f 04 00 00 00 02 00 ........*?......
00020h: 00 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00060h: 01 21 00 14 0b 00 00 00 01 03 02 11 08 00 00 04 .!..............
00080h: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00090h: 0f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000a0h: 09 1e 10 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00100h: 14 84 00 00 00 00 00 10 7b 00 00 00 00 00 00 00 ........{.......
001c0h: 00 00 3f 00 00 00 00 00 00 00 00 00 00 00 00 00 ..?.............
00200h: 01 00 77 77 01 03 22 22 00 00 00 00 00 00 00 00 ..ww..""........
00210h: 00 80 00 80 00 80 00 80 00 00 00 00 00 00 00 00 ................
00240h: ec fc bc 51 9d 3d 00 00 00 00 00 00 00 00 00 00 ...Q.=..........
00280h: 00 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002c0h: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004a0h: 54 45 53 4c 41 03 01 10 00 00 00 00 00 00 00 00 TESLA...........
004b0h: 94 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00500h: 90 cc 24 53 59 4e 41 53 33 10 05 04 05 00 00 00 ..$SYNAS3.......
00560h: 00 01 01 02 00 00 00 00 00 00 00 00 00 00 00 00 ................
00600h: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01400h: 10 14 c9 a0 00 00 00 00 00 00 00 00 00 00 00 00 ................
01410h: 00 00 00 00 03 00 87 00 00 00 00 00 00 00 00 00 ................
02000h: 00 00 01 00 00 00 00 00 00 00 00 00 77 77 01 03 ............ww..
02200h: 14 14 c4 81 01 11 01 83 2a 3f 04 00 00 00 84 00 ........*?......
02210h: f8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
68000h: d9 c8 cd 9c 4a b4 6d 00 00 00 00 00 00 00 00 00 ....J.m.........
68020h: 00 00 00 00 00 00 00 00 03 00 01 01 00 00 00 00 ................
Receiver Capability
00000h DPCD_REV: 1.2
00001h MAX_LINK_RATE: HBR2
00002h MAX_LANE_COUNT: 4, ENHANCED_FRAME_CAP, TPS3_SUPPORTED
00003h MAX_DOWNSPREAD: MAX_DOWNSPREAD_0_5, TPS4_SUPPORTED
00004h NORP: 2
00005h DOWNSTREAMPORT_PRESENT: DWN_STRM_PORT_PRESENT, PORT_TYPE = DisplayPort, DETAILED_CAP_INFO_AVAILABLE
00006h MAIN_LINK_CHANNEL_CODING: CAP_ANSI_8B10B
00007h DOWN_STREAM_PORT_COUNT: 3, OUI_SUPPORT
00008h RECEIVE_PORT_0_CAP_0: LOCAL_EDID_PRESENT, ?0x28
00009h RECEIVE_PORT_0_BUFFER_SIZE: 2048 bytes per lane
0000ah RECEIVE_PORT_1_CAP_0: ASSOCIATED_TO_PRECEDING_PORT
0000eh TRAINING_AUX_RD_INTERVAL: 8ms all
00021h MSTM_CAP: MST_CAP
00022h NUMBER_OF_AUDIO_ENDPOINTS: 1
00060h DSC_SUPPORT: DSC_DECOMPRESSION_IS_SUPPORTED
00061h DSC_REV: 1.2
00062h DSC_RC_BUF_BLK_SIZE: 1kB
00063h DSC_RC_BUF_SIZE: 20 * DSC_RC_BUF_BLK_SIZE
00064h DSC_SLICE_CAP_1 & 2: 1, 2, 4 max slices per DisplayPort DSC sink
00067h DSC_MAX_BITS_PER_PIXEL: 16 bpp
00069h DSC_DEC_COLOR_FORMAT_CAP: RGB, YCbCr 4:4:4
0006ah DSC_DEC_COLOR_DEPTH_CAP: 8 bpc
0006bh DSC_PEAK_THROUGHPUT: MODE_0 = 340 Mp/s, MODE_1 = 340 Mp/s
0006ch DSC_MAX_SLICE_WIDTH: 2560 pixels
0006fh DSC_BITS_PER_PIXEL_INC: 1 bpp
00080h DOWNSTREAM_PORT_0: PORT_TYPE = DisplayPort, HPD aware
00090h FEC_CAPABILITY: FEC_CAPABLE, FEC_UNCORR_BLK_ERROR_COUNT_CAP, FEC_CORR_BLK_ERROR_COUNT_CAP, FEC_BIT_ERROR_COUNT_CAP
000a0h DSC_BRANCH_OVERALL_THROUGHPUT_0: 1050 Mp/s
000a1h DSC_BRANCH_OVERALL_THROUGHPUT_1: 2100 Mp/s
000a2h DSC_BRANCH_MAX_LINE_WIDTH: 5120 pixels
Link Configuration
00100h LINK_BW_SET: HBR2
00101h LANE_COUNT_SET: 4, ENHANCED_FRAME_EN
00107h DOWNSPREAD_CTRL: SPREAD_AMP_0_5
00108h MAIN_LINK_CHANNEL_CODING_SET: SET_ANSI_8B10B, SET_ANSI_128B132B, ?0x78
001c2h PAYLOAD_ALLOCATE_TIME_SLOT_COUNT: Time Slot Count of VC Payload Id in DPCD address 2C0h = 63
Link/Sink Device Status
00200h SINK_COUNT: 1
00202h LANE0_1_STATUS: LANE0 = CR_DONE, CHANNEL_EQ_DONE, SYMBOL_LOCKED
00202h LANE0_1_STATUS: LANE1 = CR_DONE, CHANNEL_EQ_DONE, SYMBOL_LOCKED
00203h LANE2_3_STATUS: LANE2 = CR_DONE, CHANNEL_EQ_DONE, SYMBOL_LOCKED
00203h LANE2_3_STATUS: LANE3 = CR_DONE, CHANNEL_EQ_DONE, SYMBOL_LOCKED
00204h LANE_ALIGN_STATUS_UPDATED: INTERLANE_ALIGN_DONE
00205h SINK_STATUS: RECEIVE_PORT_0_STATUS, RECEIVE_PORT_1_STATUS
00206h ADJUST_REQUEST_LANE0_1: LANE0 = ADJUST_VOLTAGE_SWING_LEVEL_2, ADJUST_PRE_EMPHASIS_LEVEL_0
00206h ADJUST_REQUEST_LANE0_1: LANE1 = ADJUST_VOLTAGE_SWING_LEVEL_2, ADJUST_PRE_EMPHASIS_LEVEL_0
00207h ADJUST_REQUEST_LANE2_3: LANE2 = ADJUST_VOLTAGE_SWING_LEVEL_2, ADJUST_PRE_EMPHASIS_LEVEL_0
00207h ADJUST_REQUEST_LANE2_3: LANE3 = ADJUST_VOLTAGE_SWING_LEVEL_2, ADJUST_PRE_EMPHASIS_LEVEL_0
00210h SYMBOL_ERROR_COUNT_LANE0: 0, valid
00212h SYMBOL_ERROR_COUNT_LANE1: 0, valid
00214h SYMBOL_ERROR_COUNT_LANE2: 0, valid
00216h SYMBOL_ERROR_COUNT_LANE3: 0, valid
00240h TEST_CRC_R_CR: 0xfcec
00242h TEST_CRC_G_Y: 0x51bc
00244h TEST_CRC_B_CB: 0x3d9d
00282h FAUX_BACK_CHANNEL_SYMBOL_ERROR_COUNT_CONTROL: COUNT_SYMBOL
002c0h PAYLOAD_TABLE_UPDATE_STATUS: PAYLOAD_TABLE_UPDATED, PAYLOAD_ACT_HANDLED
Sink Device-Specific
004a0h : 54 45 53 4c 41 03 01 10 00 00 00 00 00 00 00 00 TESLA...........
004b0h : 94 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
Branch Device-Specific
00500h BRANCH_OUI: 90-CC-24 = Synaptics, Inc
00503h BRANCH_ID: 53 59 4e 41 53 33 SYNAS3
00509h BRANCH_HW_REV: 1.0
0050ah BRANCH_SW_REV: 5.4
0050ch : 05 00 00 00 ....
00560h : 00 01 01 02 00 00 00 00 00 00 00 00 00 00 00 00 ................
Sink Control
00600h SET_POWER: SET_POWER_D0
Sideband MSG Buffers
01400h SIDEBAND_MSG_DOWN_REP: 10 14 c9 a0 00 00 00 00 00 00 00 00 00 00 00 00 ................
01410h : 00 00 00 00 03 00 87 00 00 00 00 00 00 00 00 00 ................
DPRX ESI (Event Status Indicator)
02002h SINK_COUNT_ESI: 1
0200ch LANE0_1_STATUS_ESI: LANE0 = CR_DONE, CHANNEL_EQ_DONE, SYMBOL_LOCKED
0200ch LANE0_1_STATUS_ESI: LANE1 = CR_DONE, CHANNEL_EQ_DONE, SYMBOL_LOCKED
0200dh LANE2_3_STATUS_ESI: LANE2 = CR_DONE, CHANNEL_EQ_DONE, SYMBOL_LOCKED
0200dh LANE2_3_STATUS_ESI: LANE3 = CR_DONE, CHANNEL_EQ_DONE, SYMBOL_LOCKED
0200eh LANE_ALIGN_STATUS_UPDATED_ESI: INTERLANE_ALIGN_DONE
0200fh SINK_STATUS_ESI: RECEIVE_PORT_0_STATUS, RECEIVE_PORT_1_STATUS
Extended Receiver Capability
02200h DP13_DPCD_REV: 1.4
02201h MAX_LINK_RATE: HBR2
02202h MAX_LANE_COUNT: 4, ENHANCED_FRAME_CAP, TPS3_SUPPORTED
02203h MAX_DOWNSPREAD: MAX_DOWNSPREAD_0_5, TPS4_SUPPORTED
02204h NORP: 2
02205h DOWNSTREAMPORT_PRESENT: DWN_STRM_PORT_PRESENT, PORT_TYPE = DisplayPort, DETAILED_CAP_INFO_AVAILABLE
02206h MAIN_LINK_CHANNEL_CODING: CAP_ANSI_8B10B
02207h DOWN_STREAM_PORT_COUNT: 3, OUI_SUPPORT
02208h RECEIVE_PORT_0_CAP_0: LOCAL_EDID_PRESENT, ?0x28
02209h RECEIVE_PORT_0_BUFFER_SIZE: 2048 bytes per lane
0220ah RECEIVE_PORT_1_CAP_0: ASSOCIATED_TO_PRECEDING_PORT
0220eh TRAINING_AUX_RD_INTERVAL: 16ms all, EXTENDED_RECEIVER_CAP_FIELD_PRESENT
02210h DPRX_FEATURE_ENUMERATION_LIST: VSC_SDP_EXT_FOR_COLORIMETRY_SUPPORTED, VSC_EXT_VESA_SDP_SUPPORTED, VSC_EXT_VESA_SDP_CHAINING_SUPPORTED, VSC_EXT_CEA_SDP_SUPPORTED, VSC_EXT_CEA_SDP_CHAINING_SUPPORTED
HDCP 1.3 and HDCP 2.2
68000h AUX_HDCP_BKSV: d9 c8 cd 9c 4a ....J
68005h AUX_HDCP_RI_PRIME: b4 6d .m
68028h AUX_HDCP_BCAPS: BCAPS_HDCP_CAPABLE, BCAPS_REPEATER_PRESENT
6802ah AUX_HDCP_BINFO: DEVICE_COUNT = 1, DEPTH = 1
}; // DisplayPort
Looking at the DSC related registers, we see the following:
00060h DSC_SUPPORT: DSC_DECOMPRESSION_IS_SUPPORTED
decompression from the MST hub is supported
00061h DSC_REV: 1.2
1.2 is the latest (or 1.2a?)
00062h DSC_RC_BUF_BLK_SIZE: 1kB
?
00063h DSC_RC_BUF_SIZE: 20 * DSC_RC_BUF_BLK_SIZE
20 kB
00064h DSC_SLICE_CAP_1 & 2: 1, 2, 4 max slices per DisplayPort DSC sink
4 slices is good, 3 possible DisplayPort sinks, 12 slices total?
00067h DSC_MAX_BITS_PER_PIXEL: 16 bpp
macOS only uses 12 bpp for DSC.
00069h DSC_DEC_COLOR_FORMAT_CAP: RGB, YCbCr 4:4:4
RGB or 4:4:4 are best color formats (4:2:0 and 4:2:2 would add additional compression but 8bpp would be preferable).
0006ah DSC_DEC_COLOR_DEPTH_CAP: 8 bpc
no 10bpc? that's not good. hope it doesn't matter.
0006bh DSC_PEAK_THROUGHPUT: MODE_0 = 340 Mp/s, MODE_1 = 340 Mp/s
340 MHz * 4 slices = 1360 MHz. I guess that's good enough for 5K.
0006ch DSC_MAX_SLICE_WIDTH: 2560 pixels
2560 * 4 slices = 10K. More than what we need.
0006fh DSC_BITS_PER_PIXEL_INC: 1 bpp
This means 8,9,10,11,12,13,14,15,16bpp are supported?
00080h DOWNSTREAM_PORT_0: PORT_TYPE = DisplayPort, HPD aware
hot plug detect.
00090h FEC_CAPABILITY: FEC_CAPABLE, FEC_UNCORR_BLK_ERROR_COUNT_CAP, FEC_CORR_BLK_ERROR_COUNT_CAP, FEC_BIT_ERROR_COUNT_CAP
forward error correction.
000a0h DSC_BRANCH_OVERALL_THROUGHPUT_0: 1050 Mp/s
Good enough for 5K60Hz (but what's the difference between _0 and _1?
000a1h DSC_BRANCH_OVERALL_THROUGHPUT_1: 2100 Mp/s
Good enough for two 5K60Hz displays or one 8K60Hz display (CVT-RB, not HDMI)
000a2h DSC_BRANCH_MAX_LINE_WIDTH: 5120 pixels
I guess this is good enough for 5K as long as it's not counting horizontal blanking pixels.