TLDR: What exactly is the reason for M3 Pro dual external monitor capabilities being lower than those of M3 Max? There are 2 DCPs routed to the crossbar, I am assuming the DCPs are the same as in M3 Max, but yet, there is a difference. Is it a bandwidth limitation of the crossbar?
I have two high-bandwidth monitors hooked up to a Thunderbolt 4 dock:
To start off, almost every source lists that 4K 240Hz is only supported over HDMI. This is not true, it works just fine via USB-C as well, whether DP 4-lane alt-mode or tunnelled over TB4. As far as I know the HDMI port is converted from HBR3 internally anyway, so can't go over 32 Gbps to reach the full 48 Gbps of HDMI2.1.
Sadly this depends on the order in which the screens are detected. If the 1440p is first, it gets HBR2 and then the 4K gets HBR2 as well, dropping down to 4K 120Hz. If the 4K is detected first, it's fine. Oh well.
The M3 Max is happy doing HBR3+HBR2 as well, as long as they are not on the same port.
Why is this? Is this a crossbar limitation?
When HBR3 is active and a second screen is connected (but not on), it can be seen under pending-dfps:
I have two high-bandwidth monitors hooked up to a Thunderbolt 4 dock:
- 4K 240Hz HBR3 with DSC
- 1440p 165Hz HBR2 (macOS only lists 120Hz for this one)
To start off, almost every source lists that 4K 240Hz is only supported over HDMI. This is not true, it works just fine via USB-C as well, whether DP 4-lane alt-mode or tunnelled over TB4. As far as I know the HDMI port is converted from HBR3 internally anyway, so can't go over 32 Gbps to reach the full 48 Gbps of HDMI2.1.
M3 Max
The M3 Max supports this configuration with no problems. Both monitors work over a single TB4 connection. The specific configuration it picks is HBR3 for the 4K monitor and HBR for the 1440p using DSC. I think not using DSC for the 1440p screen wouldn't quite fit into the 40 Gbps limit. ioreg output in this state:
Code:
"AppleTypeCPhyDisplayPortTunnel" = {"Tunnel 0"={"Link Rate"="8.10Gbps/lane (HBR3)","Client"="AppleATCDPINAdapterPort(atc2-dpin0)"},"Tunnel 1"={"Link Rate"="2.70Gbps/lane (HBR)","Client"="AppleATCDPINAdapterPort(atc2-dpin1)"}}
The M3 Max is happy doing HBR3+HBR2 as well, as long as they are not on the same port.
M3 Pro
The M3 Pro cannot do HBR3+HBR. If the 4K screen is detected first, it gets an HBR3 stream and the second one never lights up. This is also the case if it plugged in to a different port on the machine, so not a Thunderbolt issue. HBR2+HBR2 works the same as for the M3 Max.Why is this? Is this a crossbar limitation?
When HBR3 is active and a second screen is connected (but not on), it can be seen under pending-dfps:
Code:
+-o AppleT603XDisplayCrossbar(display-crossbar0) <class AppleT603XDisplayCrossbar, id 0x10000040c, registered, matched, active, busy 0 (1 ms), retain 30>
{
"IOClass" = "AppleT603XDisplayCrossbar"
"CFBundleIdentifier" = "com.apple.driver.AppleDisplayCrossbar"
"IOProviderClass" = "AppleARMIODevice"
"supportsDualPipe" = Yes
"available-ufps" = ()
"IOProbeScore" = 100000
"IONameMatch" = "display-crossbar,t603x"
"IOMatchedAtBoot" = Yes
"IOMatchCategory" = "IODefaultMatchCategory"
"EventLog" = ...
"dfp-endpoints" = ("atc0","atc1","atc2","atc3","lpdptx")
"IOPersonalityPublisher" = "com.apple.driver.AppleDisplayCrossbar"
"IONameMatched" = "display-crossbar,t603x"
"CFBundleIdentifierKernel" = "com.apple.driver.AppleDisplayCrossbar"
"ufp-endpoints" = ("dispext0","dispext1","dispext2","dispext3","scodec0")
"current-state" = {"dfp"=("0:ufp0,0-dfp2,1"),"ufp"=("0:ufp1,0-ufp0,0")}
"pending-dfps" = ("atc1,0")
}
Last edited: