Now that Apple Silicon Mac users have been helped by Stillcolor, I am trying to assess the known options for disabling temporal dithering on Intel Macs.
The thread OSX dithering - Help wanted suggests that the Amulet Hotkey ahkinject.kext
kernel extension had much potential. @JTL seemed to have information from reverse-engineering the plugin, and it appears this information was being circulated privately but I never saw it posted publicly. @si_edgey was also in contact with the original kernel extension author, who shared some limited information about its function. @NewDwarf also seemed to have reverse-engineered ahkinject.kext
in the topic Who used the Amulet hotkey kernel driver to disable dithering?, as well as patching it for later macOS versions (not sure which versions specifically), and suggested in that same thread that he had determined how it works functionally (without sharing further details).
Was the functional method of ahkinject.kext
determined? When I load the kernel extension on my system, the system log suggest that it sets an "attribute," and this occurs at a specific phase (perhaps waiting on other initialization) and is repeated a certain number of times. The specific what and why of its function would be significantly helpful information.
Through reverse-engineering, NewDwarf (and others) also showed us the method of nvram boot-args="dither=0"
, which I believe works on AMD GPUs in later Intel Macs and specifically those Macs with P3 color gamut support (as far as MacBooks, generally 2016 and later I believe).
@DisplaysShouldNotBeTVs alluded (a few times) to another possible method for disabling temporal dithering on AMD GPUs, but so far the details have not been forthcoming.
In my own experiments with the Blackmagic Design capture device and ffmpeg method, the Intel iGPUs I tested seemed to not exhibit temporal dithering on external output. Conversely, the AMD Radeon Pro WX 5100 (in my 2009 Mac Pro) and the AMD Radeon R9 M370X (in my 2015 15" MacBook Pro, mini-DP and HDMI outputs) both did exhibit temporal dithering on external outputs. In both cases (I'm 90% confident I tried this on the Mac Pro), nvram boot-args="dither=0"
did not disable temporal dithering on external outputs. On High Sierra on my Mac Pro, ahkinject.kext
appeared to load correctly (per the messages in the system log), but the picture still appeared unstable visually. I later observed in the capture card output that the picture was only still for thirty seconds after first turning on at boot, after which temporal dithering was detected again (this was a preliminary finding which I want to test further).
DisplaysShouldNotBeTVs also pointed out here some interesting IO registry values possibly related to dithering, namely kConnectionControllerDitherControl
as well as simply dith
. Later on in that topic (from memory), it appeared that some attempts were made to manipulate those but without success.
To summarize, it seemed like we had (or were close to having) one or more solutions for disabling temporal dithering on Intel macOS, but so far, on my hardware, I have not found any of these to work consistently. Other solutions, as well as technical details in general, were alluded to but never seemed to be forthcoming. If anyone has details to add to (or correct on) this summary here, this would be appreciated. I am hoping to get any one of my existing machines to work for me, but I am starting to sense that I may need either a Mac desktop with an Intel iGPU, or a newer Apple Silicon model with StillColor.