Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Does this 4k@120hz tweak work for you?

  • Yes

    Votes: 170 84.6%
  • No

    Votes: 18 9.0%
  • Can not get the right Adapter

    Votes: 13 6.5%

  • Total voters
    201

Love-hate 🍏 relationship

macrumors 68040
Sep 19, 2021
3,012
3,183
4:4:4 is basically the best subsampling you'd want am i right ? or is there anything better for text ?

and can u go higher than 120hz (144hz at 4k namely)

that's absolutely insane thanks a lot

crazy that we have to go through such a hassle , wtf apple
 
  • Like
Reactions: Brad7

JWort93

macrumors regular
Aug 3, 2013
106
88
4:4:4 is basically the best subsampling you'd want am i right ? or is there anything better for text ?

and can u go higher than 120hz (144hz at 4k namely)

that's absolutely insane thanks a lot

crazy that we have to go through such a hassle , wtf apple
YCbCr 4:4:4 and RGB are essentially identical, they don’t have any subsampling, so it’s the best you can get, yes.
 

ChanandlerMurielBong

macrumors newbie
Feb 21, 2023
25
5
Hello guys really good stuff and congrats on the achievement!!! One question though.

4k 120hz 10b RGB = 40.09 gbps
Thunderbolt 4 = 40 gbps

The offset is just 90 mbps (11.25 mb/sec) little but still it’s an offset !

So maybe the achievement is only on papers about the 10bit part? And it is actual 8bit? (You notice a diff between 8bit and 10bit - bec you achieved both?)

Maybe thunderbolt 4 can go a liiiittle higher and Apple/Intel hide this from us?

What about the sound signal? Doesn’t this needs some bandwidth for itself?

I would really like an explanation especially in the first question (the little offset)

Again congrats (waiting for my adapter , please let it be VMM6100 🤞)
 

Jackbookpr0

macrumors newbie
Feb 22, 2023
1
1
Hello guys really good stuff and congrats on the achievement!!! One question though.

4k 120hz 10b RGB = 40.09 gbps
Thunderbolt 4 = 40 gbps

The offset is just 90 mbps (11.25 mb/sec) little but still it’s an offset !

So maybe the achievement is only on papers about the 10bit part? And it is actual 8bit? (You notice a diff between 8bit and 10bit - bec you achieved both?)

Maybe thunderbolt 4 can go a liiiittle higher and Apple/Intel hide this from us?

What about the sound signal? Doesn’t this needs some bandwidth for itself?

I would really like an explanation especially in the first question (the little offset)

Again congrats (waiting for my adapter , please let it be VMM6100 🤞)
This is incorrect. The USB-C to HDMI 2.1 adapters in question utilize DisplayPort HBR3 at 32.4 Gbit/s bandwidth and 25.92 Gbit/s data rate. This along with display stream compression DSC1.2a allows for full 4k 120hz 10b 4:4:4 within the HBR3 bandwidth.
 
  • Like
Reactions: dabotsonline

joevt

Contributor
Jun 21, 2012
6,701
4,089
8k@30hz must be HDMI 2.1 :D
HDMI 2.0 has enough bandwidth for 4K120 and 8K30 using 4:2:0 8bpc 1188MHz HDMI timing.

4k 120hz 10b RGB = 40.09 gbps
How did you get 40.09 Gbps?

HDMI: 1188MHz * 30bpp = 35.64 Gbps.
CVT-RB2: 1075.81MHz * 30bpp = 32.27 Gbps.

1188MHz * 24bpp = 28.5 Gbps.
1075.81MHz * 24bpp = 25.8 Gbps.

Those all exceed the HBR3 limit of 25.92 Gbps except the CVT-RB2 8bpc mode which might be too close to the limit.
To transmit them from an HBR3 source, DSC is required. DSC compresses to 12bpp by default in macOS but that might be modifiable using a preference.
At 12bpp, you can reduce the DisplayPort link rate to HBR2 (17.28 Gbps) and still achieve up to 1440 MHz (minus overhead for FEC which DSC usually requires).

Thunderbolt 4 = 40 gbps

The offset is just 90 mbps (11.25 mb/sec) little but still it’s an offset !
Thunderbolt uses DisplayPort for video. There's no way to transmit more than HBR3 (25.92 Gbps) over Thunderbolt. The Apple Pro Display XDR gets 38.9 Gbps over Thunderbolt for GPUs that don't support DSC by transmitting two separate HBR3 signals for a dual tile mode (3008x3384@60Hz for each tile). Two HBR3 signals would require 51.84 Gbps but the 3008x3384@60Hz tiles (19.47 Gbps each) don't require the entire HBR3 bandwidth and Thunderbolt does not transmit the DisplayPort stuffing symbols used to fill the bandwidth.

So maybe the achievement is only on papers about the 10bit part? And it is actual 8bit? (You notice a diff between 8bit and 10bit - bec you achieved both?)
Comparing 8bpc and 10bpc can be difficult. First you need a 10bpc image. This can be easily generated programatically:

Code:
# create tiff header: big endian, no compression, 4096 x 2048
(
	echo "4d4d 002a 0000 001e 0000 02d0 0000 000a 0000 02d0 0000 000a 0010 0010 0010 000e 00fe 0004 0000 0001 0000 0000 0100 0004 0000 0001 0000 1000 0101 0004 0000 0001 0000 0800 0102 0003 0000 0003 0000 0018 0103 0003 0000 0001 0001 0000 0106 0003 0000 0001 0002 0000 0111 0004 0000 0001 0000 00cc 0115 0003 0000 0001 0003 0000 0116 0004 0000 0001 0000 0800 0117 0004 0000 0001 0300 0000 011a 0005 0000 0001 0000 0008 011b 0005 0000 0001 0000 0010 011c 0003 0000 0001 0001 0000 0128 0003 0000 0001 0002 0000 0000 0000"

	numlines=$(( 2048 / 8 / 4 )) # 2000 lines, 8 colors, 4 bit depths
	for color in 111 100 010 001 110 011 101 000 ; do
		red=${color:0:1}
		green=${color:1:1}
		blue=${color:2:1}
		for depth in "12:8:2#1000000000001" "10:4:2#10000000001" " 8:0:2#100000001" " 6:2:2#1000001000001" ; do
			shiftfinal=${depth:3:1}
			multiplier=$((${depth:5:32}))
			depth=${depth:0:2}
			shiftright=$((12 - depth))
			for (( y=0; y < numlines; y++ )); do
				for (( i=0; i < 4096; i++ )); do
					value=$(( ((i >> shiftright) * multiplier) >> shiftfinal ))
					printf "%04x %04x %04x " $((value * red)) $((value * green)) $((value * blue))
				done
				echo
			done
		done
	done
) | xxd -p -r > 4096x2048gradients.tif

With the image generated by the above code, you should be able to see gradients of 12bpc, 10bpc, 8bpc, 6bpc of each color (grey, red, green, blue, yellow, cyan, magenta). The 6bpc gradient is most noticeable. Above 6bpc is 8bpc. For 8bpc you may be able to see the banding by zooming in. For each band of 6bpc you should be able to see 4 bands of 8bpc. It might be impossible to notice banding in the 10bpc row which is above the 8bpc row.

The next problem is how to display the image. Some apps might only display 8bpc. You might get a different result using Quick Look in Finder.app versus Preview.app. Some apps might only display 8bpc but they might dither the image so it looks like 10bpc.

Maybe taking a screenshot and then examining the pixels using a color histogram can detect if it was displaying at 10bpc without dithering, at least in the framebuffer. Outside the framebuffer on the way from the GPU to the display pixels, other color transformations may occur. Some displays may take a 10bpc input and use some method of displaying that on a 8bpc panel, such as FRC
https://en.wikipedia.org/wiki/Frame_rate_control

Maybe thunderbolt 4 can go a liiiittle higher and Apple/Intel hide this from us?
Thunderbolt 3, Thunderbolt 4, and USB4 all use DisplayPort 1.4 which is limited to 25.92 Gbps until Thunderbolt 5 and USB4 2.0 which will support DisplayPort 2.1 (77.37 Gbps).

What about the sound signal? Doesn’t this needs some bandwidth for itself?
The timing calculation has space for extra horizontal and vertical blanking pixels and I guess the audio is mixed into those areas. You can find the DisplayPort 1.2 spec online somewhere.
 
Last edited:

ChanandlerMurielBong

macrumors newbie
Feb 21, 2023
25
5
HDMI 2.0 has enough bandwidth for 4K120 and 8K30 using 4:2:0 8bpc 1188MHz HDMI timing.


How did you get 40.09 Gbps?

HDMI: 1188MHz * 30bpp = 35.64 Gbps.
CVT-RB2: 1075.81MHz * 30bpp = 32.27 Gbps.

1188MHz * 24bpp = 28.5 Gbps.
1075.81MHz * 24bpp = 25.8 Gbps.

Those all exceed the HBR3 limit of 25.92 Gbps except the CVT-RB2 8bpc mode which might be too close to the limit.
To transmit them from an HBR3 source, DSC is required. DSC compresses to 12bpp by default in macOS but that might be modifiable using a preference.
At 12bpp, you can reduce the DisplayPort link rate to HBR2 (17.28 Gbps) and still achieve up to 1440 MHz (minus overhead for FEC which DSC usually requires).


Thunderbolt uses DisplayPort for video. There's no way to transmit more than HBR3 (25.92 Gbps) over Thunderbolt. The Apple Pro Display XDR gets 38.9 Gbps over Thunderbolt for GPUs that don't support DSC by transmitting two separate HBR3 signals for a dual tile mode (3008x3384@60Hz for each tile). Two HBR3 signals would require 51.84 Gbps but the 3008x3384@60Hz tiles (19.47 Gbps each) don't require the entire HBR3 bandwidth and Thunderbolt does not transmit the DisplayPort stuffing symbols used to fill the bandwidth.


Comparing 8bpc and 10bpc can be difficult. First you need a 10bpc image. This can be easily generated programatically:

Code:
# create tiff header: big endian, no compression, 4096 x 2048
(
    echo "4d4d 002a 0000 001e 0000 02d0 0000 000a 0000 02d0 0000 000a 0010 0010 0010 000e 00fe 0004 0000 0001 0000 0000 0100 0004 0000 0001 0000 1000 0101 0004 0000 0001 0000 0800 0102 0003 0000 0003 0000 0018 0103 0003 0000 0001 0001 0000 0106 0003 0000 0001 0002 0000 0111 0004 0000 0001 0000 00cc 0115 0003 0000 0001 0003 0000 0116 0004 0000 0001 0000 0800 0117 0004 0000 0001 0300 0000 011a 0005 0000 0001 0000 0008 011b 0005 0000 0001 0000 0010 011c 0003 0000 0001 0001 0000 0128 0003 0000 0001 0002 0000 0000 0000"

    numlines=$(( 2048 / 8 / 4 )) # 2000 lines, 8 colors, 4 bit depths
    for color in 111 100 010 001 110 011 101 000 ; do
        red=${color:0:1}
        green=${color:1:1}
        blue=${color:2:1}
        for depth in "12:8:2#1000000000001" "10:4:2#10000000001" " 8:0:2#100000001" " 6:2:2#1000001000001" ; do
            shiftfinal=${depth:3:1}
            multiplier=$((${depth:5:32}))
            depth=${depth:0:2}
            shiftright=$((12 - depth))
            for (( y=0; y < numlines; y++ )); do
                for (( i=0; i < 4096; i++ )); do
                    value=$(( ((i >> shiftright) * multiplier) >> shiftfinal ))
                    printf "%04x %04x %04x " $((value * red)) $((value * green)) $((value * blue))
                done
                echo
            done
        done
    done
) | xxd -p -r > 4096x2048gradients.tif

With the image generated by the above code, you should be able to see gradients of 12bpc, 10bpc, 8bpc, 6bpc of each color (grey, red, green, blue, yellow, cyan, magenta). The 6bpc gradient is most noticeable. Above 6bpc is 8bpc. For 8bpc you may be able to see the banding by zooming in. For each band of 6bpc you should be able to see 4 bands of 8bpc. It might be impossible to notice banding in the 10bpc row which is above the 8bpc row.

The next problem is how to display the image. Some apps might only display 8bpc. You might get a different result using Quick Look in Finder.app versus Preview.app. Some apps might only display 8bpc but they might dither the image so it looks like 10bpc.

Maybe taking a screenshot and then examining the pixels using a color histogram can detect if it was displaying at 10bpc without dithering, at least in the framebuffer. Outside the framebuffer on the way from the GPU to the display pixels, other color transformations may occur. Some displays may take a 10bpc input and use some method of displaying that on a 8bpc panel, such as FRC
https://en.wikipedia.org/wiki/Frame_rate_control


Thunderbolt 3, Thunderbolt 4, and USB4 all use DisplayPort 1.4 which is limited to 25.92 Gbps until Thunderbolt 5 and USB4 2.0 which will support DisplayPort 2.1 (77.37 Gbps).


The timing calculation has space for extra horizontal and vertical blanking pixels and I guess the audio is mixed into those areas. You can find the DisplayPort 1.2 spec online somewhere.
Oh man next time I am to the Apple Store , I am gonna show this when someone tells that thunderbolt 4 is 40gbps 🤣

So bottom line MacOS using DSC via thunderbolt? Cause if I am not mistaken this still doesn’t make any sense… ~25 gbps output and the signal we need is way higher ?!?!? 🥴
(In the old post [the huge one] I read somewhere that DSC is only possible through hdmi port in macOS … either this is hdmi 2.0 or 2.1)
 
Last edited:

joevt

Contributor
Jun 21, 2012
6,701
4,089
Oh man next time I am to the Apple Store , I am gonna show this when someone tells that thunderbolt 4 is 40gbps 🤣
Thunderbolt 4 is 40 Gbps (actually, it's 41.25 Gbps on the wire and it takes 66 bits on the wire to transmit 64 bits of data).
Thunderbolt 4 can tunnel DisplayPort, USB, and PCIe data, like how Ethernet can transmit http, ftp, smb, etc.
Thunderbolt can usually transmit up to two separate DisplayPort signals, usually two HBR2 or one HBR3 + one HBR which add up to 34.56 Gbps. Apple's special trick with the XDR to support dual tile mode goes up to 38.9 Gbps total. Any bandwidth of Thunderbolt not used to tunnel DisplayPort can be used for PCIe or USB tunnelling. PCIe usually maxes out around 24 Gbps though this can reach up to 25 Gbps or maybe even more - hard to say what the real limit is (definitely less than PCIe 3.0 x4 = 31.5 Gbps unless there's a way to get more than one PCIe tunnel). USB tunnelling is limited to 9.7 Gbps. I don't think USB and PCIe tunnelling can add up to exceed 25 Gbps.

So bottom line MacOS using DSC via thunderbolt?
DisplayPort with DSC. Thunderbolt doesn't factor into it unless there's a second Thunderbolt controller between the GPU and the display. If there was a second Thunderbolt controller, as in the case of a Thunderbolt Display or dock, then the DisplayPort with DSC is tunnelled over Thunderbolt.

Cause if I am not mistaken this still doesn’t make any sense… ~25 gbps output and the signal we need is way higher ?!?!? 🥴
The output signal is just bits. To get more pixels per second for higher resolutions or refresh rates, you either need more bits per second or you need fewer bits per pixel.

DisplayPort can transmit pixels at different bit depths. 3 components (RGB or YCbCr) per pixel.
6bpc = 18bpp
8bpc = 24bpp
10bpc = 30bpp
12bpc = 36bpp

You can use chroma sub sampling to throw away some color components from a group of pixels. The components are Y, Cb, Cr (3 per pixel). Cb & Cr are the color components. Y is luminance.
4:4:4 = 24 components per 8 pixels. 8bpc -> 24bpp, 10bpc -> 30bpp (no loss)
4:2:2 = 16 components per 8 pixels. 8bpc -> 16bpp. 10bpc -> 20bpp
4:2:0 = 12 components per 8 pixels. 8bpc -> 12bpp. 10bpc -> 15bpp
Since only the resolution of the color components is reduced, you should see no loss in quality with a grayscale image.

DSC is a compression method that is visually lossless. It is smarter about what information it throws away. macOS uses a default DSC target of 12bpp.

(In the old post [the huge one] I read somewhere that DSC is only possible through hdmi port in macOS … either this is hdmi 2.0 or 2.1)
macOS might be dumb about when it enables DSC. I think Catalina defaulted to DSC being enabled but later macOS versions defaulted to DSC being disabled except for some cases. The Apple Studio Display and Apple Pro Display XDR use DisplayPort with DSC. With the XDR running at 6K 60Hz 12bpc, DSC is required to get USB write speed greater than 1 Gbps with a Thunderbolt connection.

HDMI 2.0 doesn't have DSC support but some DisplayPort to HDMI adapters can use DSC on the DisplayPort input.

The Apple USB-C Digital AV Multiport Adapter is a two lane HBR3 adapter with support for DSC input. Without DSC, it cannot output the full HDMI 2.0 bandwidth since 2 lanes of HBR3 (12.96 Gbps) is less than HDMI 2.0 (14.4 Gbps).

The CalDigit SOHO is a two lane HBR3 DisplayPort 1.4 MST hub. It supports DSC input but not for 10bpc. HDR requires 10bpc so it cannot do 4K60 HDR.

Adapters and DisplayPort 1.4 MST hubs can take DSC input and decompress it for displays that don't support DSC.
 

AironMan

macrumors 6502a
Original poster
Jan 29, 2021
550
196
@joevt Thanks for this detailed informations! I think we don't know 100% if/how DSC is in use in this case. If Allrez will be ARM ready we can get more informations also from M1/M2 Devices when something is connected. Or is there another way to see that? VMMtool also does support things in getting detailed information, but only work with Windows. Another option is if @stevemr123 with BetterDisplay give us this feature in a future release.

The LG is getting 4L10 and does not show that is getting DSC there. So the VMM6100 getting DSC and transfer it uncompressed ??

IMG_3356.jpeg

About RGB4:4:4 testing.

I preview Videos with IINA:


Iam testing images with preview.app and this patterns:
U have to download the zip, browser does doing their own way in showing pictures.
Or the Files are compressed when uploaded!
 

Attachments

  • ChromaRes.png
    ChromaRes.png
    24.2 KB · Views: 181
  • chroma-444-2.png
    chroma-444-2.png
    24.7 KB · Views: 169
  • TestPngs.zip
    17.8 KB · Views: 114
Last edited:

playtech1

macrumors 6502a
Oct 10, 2014
678
849
Thanks to OP for the clear steps to achieve this!

Apart from needing a spare Windows PC with a DP carrying USB-C port (basically a recent laptop), at a high level the process does not seem all that challenging: update dongle, modify EDID and use Better Display.

This is hugely helpful to me personally as I picked up a Mac Studio recently and the one qualm I had over choosing that route over an M2 Pro Mini was the inability to drive an LG OLED at 120Hz over HDMI. This fixes that issue for the price of a low cost HDMI adapter and a modicum of time.
 

Djlild7hina

macrumors 6502a
Mar 28, 2009
754
67
Thanks to OP for the clear steps to achieve this!

Apart from needing a spare Windows PC with a DP carrying USB-C port (basically a recent laptop), at a high level the process does not seem all that challenging: update dongle, modify EDID and use Better Display.

This is hugely helpful to me personally as I picked up a Mac Studio recently and the one qualm I had over choosing that route over an M2 Pro Mini was the inability to drive an LG OLED at 120Hz over HDMI. This fixes that issue for the price of a low cost HDMI adapter and a modicum of time.

Yep it seems a little daunting at first but should take maybe 10-15 mins. Think the longest part is waiting for the firmware to finish flashing.

It certainly beats having to selling my m1 and getting the m2
 

joevt

Contributor
Jun 21, 2012
6,701
4,089
@joevt Thanks for this detailed informations! I think we don't know 100% if/how DSC is in use in this case. If Allrez will be ARM ready we can get more informations also from M1/M2 Devices when something is connected. Or is there another way to see that?
I don't know a way to see what pixel/color/DSC/chroma sub sampling mode is being used for output from GPU of Apple Silicon Mac. The list of color modes exists in ioreg but I don't see where it states what the current color mode is. This would require more investigation.

VMMtool also does support things in getting detailed information, but only work with Windows. Another option is if @stevemr123 with BetterDisplay give us this feature in a future release.
I think VMMtool is doing something with DisplayPort DPCD to get that info. I think we can do that with AllRez on Intel Mac but it requires some additional code to read the entire log. Then a method to get DPCD on Apple Silicon Macs needs to be found and experimented with.

The LG is getting 4L10 and does not show that is getting DSC there. So the VMM6100 getting DSC and transfer it uncompressed ??
Possibly. Do we know if the LG or any TV reports DSC on screen?

4L10 (35.56 Gbps) on the HDMI 2.1 side of the adapter is almost enough bandwidth for 4K120 10bpc (1188MHz 35.64 Gbps) so it maybe doesn't require DSC. Check the timing info of the current resolution in SwitchResX to see what pixel clock is being used for the 4K120 mode. It could be less than the usual 1188MHz value that is used by HDMI.
 
  • Like
Reactions: dabotsonline

AironMan

macrumors 6502a
Original poster
Jan 29, 2021
550
196
Well, I guess somebody's specs are right then... ;). Let us know if you hear from the manufacturer!
They told me it should be an HDMI 2.1 Port.

Bildschirmfoto 2023-02-23 um 15.43.02.png


I just connect an LG ERGO 4k Screen @60hz 10b over an rear TB4 Port and also connect the VMM6100 with 4k@120hz 10b 4:4:4 to my LG OLED over an rear TB4 Port.
So iam only connect 1 Tb4 Cable to the dock and can reach that. Thats impressive and I think this can only be done when MacOS use DSC. I dont know much about MST and how it works. Probably this can be done with this protocol. Iam to shure..
 

Attachments

  • IMG_3401.jpeg
    IMG_3401.jpeg
    373.9 KB · Views: 337
  • IMG_3399.jpeg
    IMG_3399.jpeg
    322.9 KB · Views: 320
  • IMG_3400.jpeg
    IMG_3400.jpeg
    386.8 KB · Views: 272
Last edited:

stevemr123

macrumors 6502
May 27, 2010
323
227
@AironMan - This could be factored in to the opening post description:


- without this, some users will probably have frustrations regarding loosing 120Hz on every wake/start and having to change the refresh rate manually.

---

Additional note: I'll add some improvements in the next app version so EDIDs can be shared and applied easier as base64 texts, this could speed up exchanging various modded and experimental EDIDs and speed up experimentation.
 

AironMan

macrumors 6502a
Original poster
Jan 29, 2021
550
196
@AironMan - This could be factored in to the opening post description:


- without this, some users will probably have frustrations regarding loosing 120Hz on every wake/start and having to change the refresh rate manually.

---

Additional note: I'll add some improvements in the next app version so EDIDs can be shared and applied easier as base64 texts, this could speed up exchanging various modded and experimental EDIDs and speed up experimentation.
I did write this on OP description.

But does the Config Protect and custom Default Resolution not work?
 

stevemr123

macrumors 6502
May 27, 2010
323
227
Config Protection might work (some mentioned it did not work though, I should investigate why, maybe it was a one-off issue), default resolution won't work as it applies only for new display layouts and with the ID not changed, the display layout will always reset to 60Hz before the new EDID is applied.
 
Last edited:
  • Like
Reactions: dabotsonline

ChanandlerMurielBong

macrumors newbie
Feb 21, 2023
25
5
Has any of you guys tested the input lag? 😝 this is one of an important test I would say😎

Does the adapter make it laggier that as it would be with a single cable?

Mac vs windows input lag? Something like this?

I mean would it be good for gaming?
 

ToastedCashew

macrumors member
Feb 15, 2023
34
19
Can I ship an adapter for one of you guys to flash? I’m in california and dont have a compatible windows pc nor do I know anyone who does.
 

Technotron

macrumors member
Feb 11, 2023
89
19
I would certainly flash it for you but I live in Europe, so shipping-wise it’s a bit of an overkill…

Anyone from the area or US willing to help out?
 

Malus120

macrumors 6502a
Jun 28, 2002
679
1,412
Can I ship an adapter for one of you guys to flash? I’m in california and dont have a compatible windows pc nor do I know anyone who does.
Assuming you’re not absolutely in the middle of nowhere in California, you could just buy a Windows PC at Best Buy, use it to flash the adapter and then return it for a full refund 😅
(God bless America lol)
 
  • Like
Reactions: dabotsonline

Technotron

macrumors member
Feb 11, 2023
89
19
Same in Europe… order a cheap Windows laptop from Amazon, perform the flash, then return it. It’s a viable alternative but also overkill… plus knowing that Amazon trash a lot of perfectly working returns is just heart-breaking (not just in terms of the environment).
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.