I disabled dithering on Apple silicon + Introducing Stillcolor macOS M1/M2/M3
- Edited
https://ledstrain.org/d/1111-external-graphics-egfxegpu/8
From @Seagull
When turning dithering off you'll only see the difference on a laptop screen. Desktop monitors do their own dithering in addition to any graphics card dithering. Laptop screens are dumb, and rely on the graphics card to dither for them.
Emphasis mine.
But then this is Apple...
DisplaysShouldNotBeTVs I think MBP is using 10bit display, without FRC, according to specs from Apple. I know that Apple XDR Display is true 10bit, thats also mentioned on their website. I know that their regular Apple studio display is using FRC the same as MBA.
no it's a big difference
macOS scale down
Windows scale up
try to disable "retina" mode in macOS and tell me if the text is more gentle and easier to read despite being super blurry
madmozg I think MBP is using 10bit display, without FRC
On my MacBook Pro I do see a change with Stillcolor in that it seems to reveal quantization artifacts. Waves of magenta and cyan. Seems they have kept some level of dithering in place to further boost the display beyond 10 bits and manage those waves. It still isn’t clear if this is temporal or spatial dithering.
Thanks for those screenshots. It really seems to follow that “support for X colors” is Apple’s marketing for FRC dithering.
Blooey I also saw it with MBP 14', dont know why. Looks like software tried to send 8bit signal, but GPU of apple silicon still using dithering or something like that.
"Support billion of colors" words used by some manufacturers like LG SAMSUNG ASUS and etc. You can check their websites and official specifications. In monitors manuals they will show you what type of display, 8bit, 8bit+FRC or true 10 bit, its easy, but I think not that easy with Apple. I wonder if this specification type forced to have by US regulators or so? And why apple don't have this kind of described documentation what kind of display etc used in their devices..
For example asus specifications for their monitors:
Lot's of references to pixelcapture in the flags. Wouldn't capturing image directly from the framebuffer be enought to diff for dithering, if laptop screens are mostly dumb? I saw some old references to capturing pixel data on Google, but no idea how hard it would be to actually make a working solution here.
Somewhat on the side, but if you could capture pixel data properly it would be fairly easy to do some logic that gives a score to how much changes there are to the screen. You could even calculate in a way where it would ignore things if the same image is shifted slightly in one direction for the next frame, so it gets a high score if you drag or scroll with choppy movement. There are massive differences in how choppy things are in browsers as well, based on mouse used, how the drivers interact with the browser, if smooth scrolling behaves well with it, if something is locking the ProMotion VRR among other things.
I have a Lumix S5ii and this camera able to do 30 shots per second. Maybe I can somehow capture dithering on MBA? Like setting proper shutter speed. And after using ffmpeg to make a video and see any differences/pixel flickering. I don't have any micro lenses unfortunately, to make a really close photos to display
Did anyone experiment with the logging flags? I couldn't figure out where they end up. Don't thing they are written to disk automatically at least.
Found these as well. Not that ChatGPT descriptions can be trusted, but seemed promising.
enableDBMMode: This flag likely refers to a "Dynamic Backlight Management" mode. Dynamic Backlight Management (DBM) is a technology used to adjust the backlight intensity of a display based on the content being shown. This can enhance the viewer's experience by improving contrast and detail in dark areas of the image while also reducing power consumption. In a device's framebuffer, enabling DBM mode would allow the system to dynamically adjust backlight levels based on real-time screen content, optimizing for both display quality and energy efficiency.
enableBLMSloper: This flag seems to indicate an option to enable a "Backlight Luminance Modulation Slope" adjustment. This feature would allow the system to control the rate at which backlight luminance changes, possibly in response to changes in environmental lighting conditions or on-screen content. A sloper adjustment could fine-tune the backlight for smoother transitions or more accurate representation of content brightness, enhancing user comfort and potentially contributing to energy savings by avoiding overuse of high backlight levels.
madmozg Nice catch! Additionally, looking at the Pro Display XDR White Paper, the specs match the M3 MBP almost word for word, brightness (MBP has higher SDR nits), color gamut, refresh rates (MBP additionally has ProMotion), contrast ratio, reference color modes. The only thing that doesn't show up in MBP marketing is the "true 10-bit" part, which can be a marketing trick so as to not cheapen the Pro Display XDR.
I've now learned about a new variable besides the DCP, which is the display's TCON (Timing Controller). Does it perform its own dithering? To what extent is it influenced by driver properties?
- Edited
@aiaf Can confirm it works on my Macbook air M2 15inch (Ventura 13.5)! Thank you!
How to check:
Go to this page and enable/disable dithering while viewing test image --> http://www.lagom.nl/lcd-test/gradient.php
I'm clearly seeing banding appearing in the test image when dithering is disabled
My other findings:
ARM64 version shows colors in a different way compared to X64 (LibreWolf)
How did I test? Run this youtube video in LibreWolf ARM64-version and also X64-version, when compared, ARM64 looks more static to me. I guess this has to do with Rosetta.
https://www.youtube.com/watch?v=ksyYkA59LtU
Also very interesting, as @aiaf stated: "If you play a 60fps video on a 60Hz display while dithering is enabled, you actually get no dithering in the video for the most part. There’s no time to dither."
(Thanks to @async, you shared this github link before with us) https://github.com/abinabdc/flickeringMacFix
The program runs a small invisible video on the menu bar, the author of the program says it fixed flickering for him. Seeing your observation, maybe this can also be a different workaround with the same effect. I guess the program also forces the ProMotion refresh rate to stay always at 120hz. I have no ProMotion, as I have the Macbook Air, but maybe it's useful for people who have the Macbook Pro.
Would be interesting if someone with a microscope experiments a bit with Pro Camera. You can set custom fps and adjust a ton of options, as well as get a visual indication as to how much noise there is.
Also noticed that while zooming in you get this clear red and blue bleeding on white letters. Similar to what is annoying me.
- Edited
Lumix S5ii can do 24p/180fps? Perhaps trying capturing high speed video with the microscope held in front of the sensor (have to do this very carefully).
Has anyone noticed changes in pixel level flicker over time? In the morning my screen has less activity than when left on for a few hours later sampling with the scope at the same gradient dark area. Is this related to time/temperature compensation/timing controller?
https://www.cnet.com/reviews/apple-pro-display-xdr-preview/
In this article, they mention the pro display xdr maintain color accuracy over the whole day as opposed to other monitors which can do so only for 30 minutes!
Does the system do more/different dithering over time as an attempt to maintain color reproduction over time?