aiaf
Here's mine. Intel 2015 15" Retina MacBook Pro with AMD graphics on macOS Monterey.
https://drive.google.com/file/d/15yOrZe3ypPX3u6ciOQfHTwmGBUG-xbnO/view?usp=sharing
Search for "dith". There are two interesting keywords that pop up…
"kConnectionControllerDitherControl" and "dith = 1" 🙂
I think this will help:
https://developer.apple.com/documentation/iokit/1505962-anonymous/kiodisplayditherdefault?changes=la___2
Look at the sidebar on the left 👀
kIODisplayDitherAll = 0x000000FF
kIODisplayDitherDefault = 0x00000080
🐚 kIODisplayDitherDisable = 0x00000000 🐚
kIODisplayDitherFrameRateControl = 0x00000004
kIODisplayDitherRGBShift = 0
kIODisplayDitherSpatial = 0x00000001
kIODisplayDitherTemporal = 0x00000002
kIODisplayDitherYCbCr422Shift = 16
kIODisplayDitherYCbCr444Shift = 8
In the dump, kConnectionControllerDitherControl is set to "0x00808080 : RGB Default,444 Default,422 Default", where "default" implies dithering is most likely enabled.
The last 4 bits for 444 and 422 are of course for the YCbCr external monitor modes, RGB matters most for internal display. Getting the whole thing to just be 0x00000000 would be ideal. And also setting whatever "dith" is to 0 instead of 1.
The dump was saved with the Mac in AMD dGPU mode. Another dump I saved when the Mac was in Intel iGPU mode also uses the same keywords, so whatever OS-level dither disable method is found for Intel Macs can probably work for both.
I say OS-level because it seems like this is an additional layer that macOS adds in addition to whatever the GPU's native dithering does. (yes, this is a real thing.) dither=0 boot-args actually does disable "color table dithering" on the 2015 in Intel mode, with banding slightly shifting between color profiles (but still seeming more precise than what the display should be able to show.). I've even figured out a way to disable AMD's GPU dithering (yep.) which I'll talk about soon enough. But even with those changes, there's still obvious text shimmer and dithering symptoms on both GPUs that I think can finally be resolved when we figure out how to change these IOKit parameters.