My 2017 13 inch MBP without Touch Bar shows dithering is disabled by default running Catalina 10.15.7 (19H2026). This laptop running this OS doesn't bother me.

The output is:

2022-11-02 16:04:11.497027-0400 0x3cd      Default     0x0                  0      0    kernel: (AppleIntelKBLGraphicsFramebuffer) [IGFB][INFO   ] [Modeset] Dither is disabled with bpc 1

The ioreg command listed above doesn't show much, but manually searching the output text file of ioreg -lw0 for IODisplayEDID shows a value of 1552 for my DisplayVendorID key. I don't know which vendor that is.

The system profiler output for this display is:

Intel Iris Plus Graphics 640:

Chipset Model: Intel Iris Plus Graphics 640

Type: GPU

Bus: Built-In

VRAM (Dynamic, Max): 1536 MB

Vendor: Intel

Device ID: 0x5926

Revision ID: 0x0006

Metal: Supported, feature set macOS GPUFamily2 v1

Displays:

Color LCD:

Display Type: Built-In Retina LCD

Resolution: 2560 x 1600 Retina

Framebuffer Depth: 24-Bit Color (ARGB8888)

Main Display: Yes

Mirror: Off

Online: Yes

Automatically Adjust Brightness: No

Connection Type: Internal

Have people in general had a better experience with the models that up until recently did not support P3 color gamut? The two thunderbolt port 13 inch MacBook Pro that did not have the Touch Bar never supported it. It’s my recollection that that model continued to not support it up until the M2 changeover. I’m not as familiar with the MacBook air line but I think it’s similar.

Is log show --predicate "processID == 0" | grep Dither specific to machines with intel graphics? I had a colleague run it on a 16 inch MBP M1 and a iMac Pro. The command took quite a while to return, but didn't output anything. I think they were both running Monterey.

    asus389 Yes, the command log show --predicate "processID == 0" | grep Dither is Intel specific.

    I am trying to disable FRC dithering on a MacBook Air M2. However, I get this error code when typing nvram boot-args="dither=0" in the terminal (recovery mode):

    Error setting variable - 'boot-args': (iokit/common) not permitted.

    Does anybody have a solution for it? Does it even work on the M2 Air? Thank you.

      kajover Like NewDward said the proposed solution only works on Intel-based Macs.

      NewDwarf Could you please advise me - I have 2018 15in macbook pro with Intel and AMD. Will this solution work, and even better, would it only work when I have Intel graphics on, but when AMD is switched to, it would look normal?

      I nees this computer for work and am worried to turn the dithering off and see that its slow and unusable for intensive work then. Could you please also give me a guide on both switching it on and off via the terminal?

      Thank you!

        martin You can turn off dithering by going into recovery mode and entering nvram boot-args="dither=0" in Terminal, you can turn it on by doing the same but with dither=1. There is no change in performance

        There isn’t any proof that it actually disable dithering but it may reduce your eyestrain

          insta42014

          I wasn't able to enter that command even in recovery mode (Error setting variable - 'boot-args': (iokit/common) not permitted.)

          What I think is that working in safe mode definitely improves everything, including less neck pain, and all in all better, although I would need to test it. But, I feel right away less severe. I should also point out, that I get all the common problems using external monitor (benq BL2711U), which I bought 5-6 years ago because I had same problem I'm having now (with Mac Pro 2012 and Apple Displays). I specifically bought this monitor trying to find best one for the eyes, was using it with windows for 5-6 years and it was a joy. Plugged it with new MacBook Air M1 and problems came back. Light headache, a bit of noisia, neck pain, not being able to concentrate, etc.

          p.s. I used Mac Pro for few years without ANY issue, and then when I switched to some OS version which I cannot remember now, problems started. Thing is I didn't connect it back then with OS, I thought it's something with monitors and myself. Now I started thinking this is not a monitor / hardware issue at all, but OS. I dunno….

          8 days later

          Has anyone tried this on a 2019 16" (Intel+AMD)?

          14 days later

          NewDwarf Hi, I don't know much about mac os as I'm a windows user. I have a macbook pro here from 2015 with intel iris pro, os version is sierra. I tried your command to disable dithering, did it in recovery mode. Now I'm back in normal mode. To verify it worked, I typed your command log show --predicate "processID == 0" | grep Dither

          in terminal. But I don't know where to check the kernel logs. If I go to console, there is no kernel.log file. Could you tell me where I can find it.

          Thank you.

            Liberator005 Hi. No need to know where “Dither” is mentioned. The command you entered have to print it if the keyword “Dither” exists in the log files where the “log” command looks for.

            If you don’t see it, more likely dithering is absent on your laptop.

            At least MacBook Pro 13” 2015 doesn’t have it.

            A bit late to the party, but I'm also trying to figure out screen strain on a pro M1.

            Did some quick research but there are quite a bit of areas to look into. I'll do a quick brain dump, so just quote whatever might be interesting if there is something you want to discuss.

            General stuff

            1. Handling this is way harder from not having a reliable way to measure things. Is there any solution at all to measure this apart from an expensive high speed camera?
            2. CSS can now generate 10 bit colors. It might be useful to output certain colors to more easily measure the effect. https://css-tricks.com/new-css-color-features-preview/
            3. In my opinion Mac OS Ventura seems better. However there has been some changes that might make it harder to modify with kexts.
            4. Significant improvements can be had by turning off hardware acceleration in Google Chrome. The same can be done in other Electron apps like Slack, Spotify and Evernote. Some types of anti-aliasing can be taxing.
            5. Issues with powercords and unstable current can cause flickering on certain monitors. Skipping extension cords and not overloading a single current can help.
            6. Avoid having a flickering mouse cursor that jumps around. If you use a Logitech Mouse use the unifying receiver instead of bluetooth to make it smoother. Same applies to scrolling, and can be modified with LinearMouse.

            Video output

            1. For external monitors screen connection matter. There are upper limits to the different types of cables. What you are aiming for is Chroma 4:4:4. This is separate from temporal dithering. Tldr it doesn't send the correct colors for all of the pixels to conserve bandwith. Reducing resolution or refresh rate would improve it if this affects a monitor you use.
            2. I do not know how much difference there is on how it handles video output for HDMI, USB-C, USB-C to Hdmi adaptor, and Thunderbolt. Did anyone experiment here?
            3. Some kinds of monitors can be forced to RGB or P3. How does that affect things? What actually happens when the color profile doesn't match the display properly? Is there any kind of double dithering going on?
            4. Did anyone attempt to modify EDID? As far as I know it should contain data bitrate and other things. There are lots of scripts and guides to modify EDID.
            5. There are multiple references to dithering in the output from AllRez. Can the IOFramebuffer be affected somehow?

            Some tools

            1. PlistEdit Pro can be used to browse and change values easier
              https://www.fatcatsoftware.com/plisteditpro/
            2. AllRez can be used to dump huge amounts of display information
              https://github.com/joevt/AllRez
            3. Loupe can be used to inspect anti-aliasing
              https://apps.apple.com/us/app/loupe/id1535217393
            4. AW EDID Editor can be used to create a new EDID
              https://www.analogway.com/apac/products/software-tools/aw-edid-editor/
            5. AGDCDiagnose can dump out a lot of stuff, but doesn't work for M1. It's part of Xcode. I saw a reference to a similar tool, but I couldn't find it again.

            Other communities and resources

            1. Did anyone react out to the developer of BetterDisplay and SwitchResX to see if any of them can somehow modify the stuff we need? Or even the developer of Yabai that has extensive experience with modifying the window management system with SIP turned off.
            2. There is a large Hackintosh community that spent years modifying display drivers and making different hardware behave properly.
            3. The guys trying to optimize color output for their high end TV's also spend a ton of time to get the output right. Many of them are deep down into the video output and different tools to figure out where issues happen.

            Other ideas about eye strain

            1. How does having a slight blue tint affect the eyes compared to a slight red one? Try reading text with a blue vs red tint in the dark from a distance. There is both chromatic aberration going on, as well as 2% blue sensitive vs 60% red color receptors. Would having hard to blue light cause it to upregulate all of them? From my experience having dim red light increases tinitus and symptoms.
            2. How much does it help to light up the area behind the monitor?
            3. How much does having different flicker frequencies worsen things? For example other led flickering in the background.
            4. Would having a mild pattern over the screen help with BVD to make it easier for the eyes to get a feel for where to focus?
            5. Would increasing the mouse cursor size and making it red thru the Accesibility tools in Mac help with retraining BVD?

              async CSS can now generate 10 bit colors. It might be useful to output certain colors to more easily measure the effect. https://css-tricks.com/new-css-color-features-preview/

              I wonder what version of Safari started supporting P3 color via CSS. I noticed starting with Safari 14, I get eye strain, even on otherwise tolerable systems.

                asus389 Not sure. Specifying P3 colors for text/bg is a safari only thing. I would guess that most browsers use wide gamut for images tho, and probably for antialiasing. I experimented a bit with it in Safari and noticed a strange bug, where text overlayed on a wide gammut background was broken/blurry on my external monitor. This was the same for all color profiles and refresh rates, but whenever I opened the lid on the Macbook the issue was resolved. I have no idea what switches around in safari or the other graphics stuff that causes this.

                  async Interesting, I've only noticed this effect with newer Safari on Mac OS. On iOS I haven't.

                  async

                  I do not know how much difference there is on how it handles video output for HDMI, USB-C, USB-C to Hdmi adaptor, and Thunderbolt. Did anyone experiment here?

                  I want to buy USB-C to displayport and try that too, for my external monitor. (Just to tick that one off also)

                  "Did anyone react out to the developer of BetterDisplay and SwitchResX to see if any of them can somehow modify the stuff we need? Or even the developer of Yabai that has extensive experience with modifying the window management system with SIP turned off."

                  Yes this is an answer:

                  Istvan Toth (betterdisplay):

                  "Unfortunately you can't really change the bit-depth on M1 systems afaik if lower bit-depth mode options are not available in the set-resolution list. The bit-depth options depend on what the display reports about itself and how the display connection is negotiated. There are some ways to change color encoding and bit depth by editing the windowserver configuration files though. Normally M1 macOS will opt for "billions of colors" (10-bit color depth) if it can which might create dithering at the display end. Dummies use "millions of colors" (8-bit depth) so if these get mirrored it might help with this. But to be honest I'd need to dive into the entire issue a bit more."

                  Stephane Madrau (SwitchResX):

                  "hi As far as i know this phenomenon comes because of the 10 bits colors depth imposed on all resolutions on these Macs.

                  Since these macs are unable to do 8 bits colors depths resoltuons there nothing that can be done with no software to change this. The only solution can come from Apple and they should simply modify the video driver to allow 8 bits colors like Intel Macs. "

                  I asked another question:

                  "Hi
                  I don't know anything more about temporal dithering or any linked  effect .
                  I really only can answer about color depth on the resolutions (What I answered in my previous mail. ) as some users reported it was linked. In all cases my tool only manages resoltuons with the color depth that is linked , nothing more , and nothing that is either depending on the hardware  or the video driver 
                  Regards"

                  Alin Panaitiu (lunar):

                  "Hi Mirza!

                  No, there's no way alter that functionality. Most of the time that's implemented as embedded firmware inside the monitor controller, as the code needs to run extremely fast and close to the LEDs.

                  I don't think it's managed by the OS, I haven't found any reference about that while looking through the macOS private frameworks or through the Linux kernel.

                  If it's only happening on the external monitor, maybe try a different port (DisplayPort instead of HDMI, or viceversa)."

                  Apple Accessibility:

                  "Hello,

                  While we cannot set an expectation on timeline or outcome, we assure you that your concern is under investigation by our engineering teams.

                  We’ll continue to monitor the report’s progress and may follow up if we have any updates."

                  Benq Support:

                  (I aksed whether it's possible to turn off temporal dithering somehow on monitor itself):

                  "Good morning,
                   
                  Thank you for contacting BenQ.

                  As for the temporal dithering, if any, I am afraid it is down to the graphics card, because it is a data/picture processing feature.
                  The monitor does not really have any filters or chips that can reduce or eliminate it, so I would advise you to either increase or reduce the screen's refresh rate: this might help the eye to reduce the symptoms.
                  Also, you might want to try and reduce the colour depth with the graphics card: this would reduce the colour accuracy but should decrease the dithering too (I would keep this point as a very last resource).
                  In case then there was any flickering, which may still turn out to be disturbing for the eyes, I would advise you to follow this guide: How to Fix Mac M1/M2 External Monitor Flicker? | BenQ Europe"

                    And, everyone here should send an email to Apple Accessibility, if more people raise awareness, more likely that they will have to act.

                    mirza "Unfortunately you can't really change the bit-depth on M1 systems afaik if lower bit-depth mode options are not available in the set-resolution list. The bit-depth options depend on what the display reports about itself and how the display connection is negotiated. There are some ways to change color encoding and bit depth by editing the windowserver configuration files though. Normally M1 macOS will opt for "billions of colors" (10-bit color depth) if it can which might create dithering at the display end. Dummies use "millions of colors" (8-bit depth) so if these get mirrored it might help with this. But to be honest I'd need to dive into the entire issue a bit more."

                    Great. That clarifies a few things. Does these apps work by creating EDID overwrites or modify the windowserver plists? I'm not that knowledgeable about this stuff.

                    If someone that went deep into what is handled where in the entire chain of Mac OS, display profiles, video output, cable, monitor wants to create a flowchart with https://www.lucidchart.com/ or something it would surely help more people get some ideas for how to solve this

                    Some more thoughts and questions:

                    1. Is there pixel changes on the monitor faster than the refresh rate on the stuff that comes from the OS? As far as I see it running at 30hz would dither at max that speed if the OS is responsible for dithering. This obviously doesn't apply to the dithering that the monitor does on a 10 bit signal. If this is true it would open up some things: Capturing OS dither with 240fps slow motion video, and using LOW quality video cable to force a too low bitrate for 10 bit.
                    2. Is anyone aware of a way to capture the raw cable output and render it somehow? That would open up stuff like quickly measuring the amount of noise and changes to get a gauge for flickering intensity and similar. I guess a photodiode targeting the smallest possible area could also work. Is anyone aware of a photodiode or similar that works with colors? Can it somehow be connected to the mac thru an aux to usb solution? This would also allow creating a more general flicker meter that might be helpful.
                    3. Did anyone get some thoughts from the company that had a Kext to disable dithering?
                    4. Is there any way to find all options for com.apple.CoreGraphics.plist? Mine currently has DisplayUseForcedGray and DisplayUseInvertedPolarity. https://github.com/search?q=DisplayUseInvertedPolarity&type=code
                    5. Did anyone look into the IsVRR of windowserver plist? I would guess that it is variable refresh rate. Can it be used to kill off the ProMotion variable refresh rate?
                    • MYZ replied to this.
                      2 months later

                      async It won't be possible to disable temporal dithering on Apple silicon devices if the hardware was designed around the assumption, i.e. optimized, that it will always send and receive 10 bit signals.

                      And it seems to be the case given the responses outlined by mirza.

                      I'm not an expert in display design but basic semiconductor physics suggests that such optimization processes could be why the fancy HDR 1600 nit displays consume only moderately more energy then the older displays.

                      The new macbook air displays might be a special case.

                      It might not even be a physical piece of silicon that's limiting it, but even if it's in some obscure place like the firmware in an IC somewhere close in the pipeline to the screen, then it's effectively impossible to change without help from Apple, the panel manufacturer, the IC manufacturer, or millions of dollars in reverse engineering.

                      And even if they do change it, it likely won't be retroactive on the existing M1 and M2 devices.

                      Since there seems to already exist a solution for the Intel macbook pros, then I would advise just sticking to those until new Macs come with the feature, if ever.

                        dev