- Edited
Notebookcheck MacBook Air M1 Temporal Dithering Test
https://www.youtube.com/watch?v=Jzms_c0prNk
One may need to test each individual M1 Air to see if their are panel or other differences.
Notebookcheck MacBook Air M1 Temporal Dithering Test
https://www.youtube.com/watch?v=Jzms_c0prNk
One may need to test each individual M1 Air to see if their are panel or other differences.
photon78s yeah I’ve seen that, they didn’t detect any but people still keep saying it has it
@aiaf Tested and WORKING for an external monitor on M1 Max MacBook Pro with Sonoma 14.2.1. This is one of the best releases this community has seen in a long time, I am eternally grateful.
BTW I'll definitely get in touch with you soon — although I'm not experienced with reverse engineering, I've learned quite a lot of interesting info on how macOS does dithering and color management recently, and would love to provide any info I know that would help in creating an Intel version. Is it best to DM you here or on your Twitter?
My experience:
I have an ancient CCFL monitor with DVI in (Samsung SyncMaster 906BW) which I connect to the M1 Mac through a USBC»HDMI cable to an HDMI»DVI adapter.
(Fun fact: DVI displays provide RGB EDID to Macs by default, so the whole "force RGB instead of YbCbCr" ordeal infamous with HDMI monitors isn't actually necessary here!)
I'm pretty sure this monitor is native 6-bit with no FRC, since even when connecting to a M1 Mac with default "10-bit" settings, banding appears. (I was wrong, it's actually the monitor's own FRC pattern conflicting with Apple's dithering pattern, see my newer reply)
However, what's really funny is because of this limited hardware, it makes Apple Silicon temporal dithering EXTREMELY obvious.
Typically, connecting the 906BW to the M1 causes totally noticeable checkerboard patterns on some colors, and other colors will actually visibly flicker to the extent someone who's not sensitive could notice it. These get even more intense while I'm continuously moving my head.
For a while I thought this was either the ancient monitor starting to fail, a bad cable, LCD pixel inversion, or FRC that the monitor itself was producing… until I plugged it into an old Windows PC, and all those issues stopped happening.
For the first time ever, Stillcolor has immediately solved this issue. The moment it's enabled, all of these moving patterns disappear and the M1 finally gets clean external monitor output. Changing gamma and contrast with BetterDisplay finally causes obvious banding shifts, which it wasn't able to before.
So if anyone is dealing with "checkerboard pattern on dark mode backgrounds with external monitor on M1 Mac" — which I've seen some people in generic Apple communities mention before, Stillcolor resolves this issue too!! It is caused by temporal dithering.
And of course, enabling Stillcolor significantly reduces eye strain on the external monitor for me!
(Edit: The monitor still has its own FRC, but I'm definitely less sensitive to it than Apple's dither pattern — after all, I wasn't getting the same level of significant eye strain using this same monitor back when Windows XP was current.
However, I might have been running Windows XP back then in true 6-bit output mode, which I really wish was possible on a modern OS…
However I DO notice the monitor's FRC and find it a bit annoying, and am now trying to seek out a non-FRC monitor so I can use macOS 100% dither-free.)
Here's why it doesn't seem as effective on the internal XDR display though…
Mini-LED XDR MacBook Pros have some aspects of color calibration built into the display itself, that's why the display preferences looks different on these models and tries to push seemingly limited "Reference Modes" over color profiles.
This also means that certain aspects like gamma are processed by the display panel instead of the GPU as Macs usually so.
So on XDR Macs, even though Stillcolor actually does cause some changes in colors on the internal display, it doesn't solve dithering on the laptop screen entirely. Because if gamma is adjusted with BetterDisplay here — unlike with an external monitor, no banding shifts will happen and gradients will remain "just as smooth" (i.e. dithering) at any gamma level. Of course the internal screen has some PWM too.
(I suspect) that there's two layers of dithering on XDR Macs one at GPU level (which Stillcolor does disable) and one at display panel level (which it can't disable).
Or perhaps, if it's not dithering, this "second layer" is due to individual brightness control of the mini-LEDs (AKA different PWM rates per each area of the display) to achieve different gamma levels without seeming to affect the amount of available colors.
However, LCD Macs like M2 Air, and the low-end "Touch Bar" Pros, use standard color profiles (where only the GPU is involved) instead of this hardware-level color management. This is why people here with MacBook Airs are reporting great results, but MacBook Pro users are more hesitant.
In summary, Stillcolor has the same great effects on external monitors on both Air and Pro, but only will be able to fully improve the laptop display on LCD models like the Air.
(BTW, I'm guessing that forcing external output EDID to RGB mode is probably neccessary for Stillcolor to fully improve an HDMI monitor. This wasn't an issue for me though because my monitor uses DVI.)
Since this app exists now, and based on what I've just written above… I'm honestly about to start considering selling my M1 XDR Pro and swapping it for an M2 Air instead
For now, at least I can finally use my M1 Pro as a desktop!
Sunspark there's clearly so many variables to be tested. What are you sensitivities and which display are you currently comfortable with?
Sentiny it should be plenty safe. I don't like True Tone personally but I don't think of these options will re-enable dithering, but again can only be known with proper testing. You can also re-check iroeg to see enableDither was set to Yes again.
Donux try your phone manual video mode option with the fastest shutter speed. You need to test an image with a white background. Do you trust this method?
async the idea would be to edit the EDID in the capture card, and then capture the output to see how the a particular config affects the image. You can then diff and run the capture through ffmpeg or whatever other tools to see the difference.
twomee Which external display brand and model are you using?
DisplaysShouldNotBeTVs I'm not working on an iOS version since I don't use iPhones and currently do not have the time to pursue this. I'll tinker around but no promises. In any case, my code and methodology are open source so anyone can pick up where I left.
photon78s thanks for the Carson MicroFlip recommendation. Because despite disabling dithering at the GPU level there's the question of whether the external display panel does dithering/FRC on its own. Can't trust manufacturer specs when it comes to these things.
markdotpeters5 do you have an M1 Mac? Download the app and try it. I tested with M2 and M3 and it worked flawlessly. Would love an M1 datapoint.
DisplaysShouldNotBeTVs would the m2 MacBook air 15" also be safe or only 13"? In terms of LCD/mini led free. I think I'm going to buy one unless we can get a fix on Intel/Nvidia too?!
I was going to try the M1 Air (hard for me to switch ecosystems) at some point but these observations… It might still be a combination of extremely high frequency dithering plus the high frequency PWM. I remember watching an Apple event in the past couple of years where they had someone come up to talk about "screen safety". Seems hilarious to me.
photon78s I'm very sensitive to stuff like this but use the M1 Air fine. Phone wise I'm stuck on the iPhone 11 - I literally can't find any newer handset that I can use, Android or iPhone.
I have no real reason to upgrade from the M1 Air at the moment, but I really would like a newer iPhone!
Try the CAT S62 Pro phone no dithering tested with 420FPS camera no PWM not measurable with Radex lupin on any brightness level.
DisplaysShouldNotBeTVs that's an amazing setup! Feel free to get in touch any time.
w/r/t to an additional layer of dithering on XDR displays-- will need proof for this. I see the banding clearly (on the Lagom gradient test) on the built-in display when I disable dithering, and the screen becomes a lot more eye-friendly. There's still PWM. But how would additional dithering look like and how would it play along with GPU dithering? You can only show 1 pixel color per refresh? Spatial dithering perhaps? We should also not forget these are supposedly high-end 8-bit panels
What camera are you using for 420 fps? I tried 960 fps mode on the samsung testing a Nord N30 phone. Hard to tell because it was so noisy but it did not show dithering at 240 fps and PWM with Opple was "no risk".
Just for reference, this system can do > 2 million fps? https://www.ix-cameras.com/high-speed_cameras_for_scientific_research_and_engineering.php
Will this work on a m2 Mac mini?
DisplaysShouldNotBeTVs and would love to provide any info I know that would help in creating an Intel version
@NewDwarf has a technique here for disabling temporal dithering on Intel Macs and also AMD (it's different technique than the one linked by op). I don't believe it was tested with a lossless capture card but some have reported success on Intel Macs.
DisplaysShouldNotBeTVs There's two layers of dithering on XDR Macs
one at GPU level (which Stillcolor does disable) and one at display panel level (which it can't disable)
This is interesting and unfortunate. It's hard to imagine two separate temporal dithering algorithms look good on a screen even to "normal" people?
Thanks.
From Harrison at https://ledstrain.org/d/125-monitor-overclock/3:
"If dithering is the problem, a higher Refresh rate will also lead to a higher dithering frequency. Always the half of the refreshing rate of the display."
Good to know if true. Well, a multiple factor approach is needed. Too bad the Xiaomi 14 Ultra 1920fps mode is not really 1920fps.
ryans The filebin link for AMD is down so I can't try it
smilem AFAIA dithering can be disabled with Intel GPUs using the Dithering app and on Nvidia GPUs using the app ColorControl. Unless you know any different?
languidicity which dithering app for the Intel side please?