Has anyone tried using the NVRAM parameter on an external monitor (an existing usable one preferably)?

Dithering is used to mask / hide the banding. If dithering is disabled on a system with a mismatched bit depth (8-bit gpu vs 6-bit display), we should see the banding. It is because the display is natively missing the colors needed to show a smooth gradient.

    caboy Dithering is used to hide banding in our brains only. Enabled dithering doesn't increase physical bit-ness of the screen/GPU.

    The MacBook Pro's have at least 8-bit GPU/displays. It is enough bit-bess don't notice gradients.

    My MacBook Pro 2020 has physical 10-bit screen.

      insta42014 The banding might be the same, but is the eyestrain the same?

      I mentioned this in another thread, but switching from Safe Mode to normal mode didn't change the banding for me, and the same goes for disabling dithering vs leaving it enabled. The only difference was the eyestrain.

        NewDwarf same for my MacBook.

        In general, newer MacBooks should never display 6-bit, and banding would technically only occur if native 6-bit color was being shown.

        NewDwarf The MacBook Pro 2020 doesn't have a true 10-bit screen and if it was the case temporal dithering wouldn't be needed so you wouldn't have had eyestrain in the first place. As far as I know the only Apple display capable of true 10-bit is the Pro Display XDR which costs $5000 and Apple advertises it in their Technology Overview pdf: "P3 wide color gamut and true 10-bit color depth provide over a billion colors and incredibly smooth gradients".

        NewDwarf

        I think the question of weather this works or not may come down to the bit depth of the display panel. There is a command to show what vendors display panel is installed. I don't know if the bit depth information might be available also.

        Can you run this command and give us the output please?

        ioreg -lw0 | grep IODisplayEDID | sed "/[^<]*</s///" | xxd -p -r | strings -6

        A prefix of LTH is Samsung, while LP is LG. All the Samsung displays I have seen are 8-bit. With LG, it may be a mix depending on how old the panel is. The older LG are 6-bit. I am not sure of the newer ones. Again, I don't know what other information may be hidden in the output of "ioreg" (such as bit depth).

        The above command will not work on M1 macs. It may or may not work on Monterey on Intel.

          NewDwarf

          caboy Dithering is used to hide banding in our brains only. Enabled dithering doesn't increase bit-ness of the screen/GPU.

          My understanding is that dithering is used to emulate missing colors when a GPU has more colors than a display panel can support. eg an 8-bit GPU with a 6-bit display panel. A rapid flicker between two colors to get an average of a missing color.

          The banding appears on low bit depth displays (6-bit) because they don't have enough colors to show a smooth gradient. Dithering is used to mask / hide the banding.

          It seems most vendors have enabled it by default in all devices this year.

          Well i think every manufacterer is saying true 8bit screen, but the monitor may have a weakness at some level with e.g. gray and dithers is always on as a choice of the manufacterer. True 8bit could be just "nearly true" 8-bit.

          caboy There is more advanced option to get the display information by parsing the EDID blob. Below is my display.

          00 ff ff ff ff ff ff 00 06 10 3e a0 00 00 00 00

          10 1b 01 04 b5 1d 12 78 02 0f 81 ae 52 43 b0 26

          0d 50 54 00 00 00 01 01 01 01 01 01 01 01 01 01

          01 01 01 01 01 01 d9 65 00 50 a0 40 2e 60 08 20

          08 08 1e b3 10 00 00 1a 00 00 00 fc 00 43 6f 6c

          6f 72 20 4c 43 44 0a 20 20 20 00 00 00 10 00 00

          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10

          00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 72

          70 12 79 03 00 7f 81 3f fa 10 00 03 01 18 0f 28

          17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

          4c 50 31 33 33 57 51 35 2d 53 4a 41 37 0a 20 00

          44 43 4e 31 33 30 32 30 30 32 58 50 58 47 54 41

          4b 0a 20 20 20 20 20 7f 81 29 fa 10 00 02 01 00

          11 00 00 02 90 03 65 04 89 06 18 08 38 0b 20 0f

          19 14 8a 1c 00 26 3d 34 51 47 ae 62 5a 87 21 b9

          e3 ff 7d 00 00 00 00 00 00 00 00 00 00 00 b3 90

          ----------------

          Block 0, Base EDID:

            EDID Structure Version & Revision: 1.4

            Vendor & Product Identification:

              Manufacturer: APP

              Model: 41022

              Made in: week 16 of 2017

            Basic Display Parameters & Features:

              Digital display

              Bits per primary color channel: 10

              DisplayPort interface

              Maximum image size: 29 cm x 18 cm

              Gamma: 2.20

              Supported color formats: RGB 4:4:4

              First detailed timing includes the native pixel format and preferred refresh rate

            Color Characteristics:

              Red  : 0.6796, 0.3203

              Green: 0.2646, 0.6904

              Blue : 0.1503, 0.0507

              White: 0.3125, 0.3291

            Established Timings I & II: none

            Standard Timings: none

            Detailed Timing Descriptors:

              DTD 1:  2560x1600   60.000828 Hz   8:5     98.761 kHz    260.730000 MHz (286 mm x 179 mm)

                           Hfront    8 Hsync  32 Hback   40 Hpol P

                           Vfront   32 Vsync   8 Vback    6 Vpol N

              Display Product Name: 'Color LCD'

              Dummy Descriptor:

              Dummy Descriptor:

            Extension blocks: 1

          Checksum: 0x72

          ----------------

          Block 1, DisplayID Extension Block:

            Version: 1.2

            Extension Count: 0

            Display Product Type: Standalone display device

            Vendor-Specific Data Block (0x7f) (Apple), OUI 00-10-FA:

              Type: 3, Version: 1

              18 0f 28 17 00 00 00 00 00 00 00 00 00 00 00 00 '..(.............'

              00 00 00 4c 50 31 33 33 57 51 35 2d 53 4a 41 37 '...LP133WQ5-SJA7'

              0a 20 00 44 43 4e 31 33 30 32 30 30 32 58 50 58 '. .DCN1302002XPX'

              47 54 41 4b 0a 20 20 20 20 20                   'GTAK.     '

            Vendor-Specific Data Block (0x7f) (Apple), OUI 00-10-FA:

              Type: 2, Version: 1

              00 11 00 00 02 90 03 65 04 89 06 18 08 38 0b 20 '.......e.....8. '

              0f 19 14 8a 1c 00 26 3d 34 51 47 ae 62 5a 87 21 '......&=4QG.bZ.!'

              b9 e3 ff 7d                                     '...}'

            Checksum: 0xb3

          Checksum: 0x90

            devilgrove

            I tried this (with dither=0) on my Early 2015 13“ MacBook Pro with an Intel GPU and felt no difference in eye strain unfortunately.

            log show --predicate "processID == 0" | grep Dither

            Does not return anything

            nvram -p | grep dither

            returns boot-args dither=0

              devilgrove

              Can you give us more details about your macbook model please?

              You said 16".

              Which year?
              Which GPU?
              Which OS version do you have?

              Thank you

                karut I also have the MacBook Pro 13'' 2015 but it doesn't have dithering by default. And yes, log show --predicate "processID == 0" | grep Dither

                returns nothing.

                  NewDwarf

                  Interesting…I assume you also run the latest version of OSX Monterey. I will test the MacBook with an external monitor. The display should at least have no PWM according to Notebookcheck.

                  caboy my MacBook is actually a 16,2 meaning it's part of the 16th generation of MacBook Pros.

                  It'a a 2020 13" 4 TB3 running Catalina 10.15.7. It uses Intel Iris Plus from the Ice Lake generation.

                    NewDwarf

                    From what I can tell, the display panel is LG. Denoted by: LP133WQ5-SJA7

                    Looking online at the closest match to that model number it seems to be an 8-bit display (16.7 million colors). https://www.lcdsolar.com/products/ProductDetail.aspx/LGDISPLAY/LP133WQ1-SJA2/43520

                    I think the line with Bits per primary color channel: 10means that the GPU is a 10-bit GPU.

                    Thank you for posting and for your research finding a possible solution. I ordered a refurbished Macbook Pro Intel and will test when it arrives.

                    [Edit to add]

                    The LG panels previously gave me really bad eye strain (in 2012 models and others). This gives some hope. Thank you.

                      devilgrove Update to this:

                      I disabled AppleIntelICLGraphics.kext and AppleIntelSlowAdaptiveClocking.kext, and the display is now exactly like Safe Mode (as far as I'm aware). The only problem with this is that the display rendering is just as slow and just as glitchy as Safe Mode as well. Not sure if this is usable for me in the long run, but for those who can use Safe Mode but want full access to their Mac, give this a go.

                      Also, I have a rough idea of how I would go about trying to keep Safe Mode-level strain while being able to speed up the rendering. AppleIntelICLGraphics.kext is broken down into four bundles: The GLDriver, MTLDriver, VADriver, and VAME bundles. My theory is that I could disable or modify a combination of these bundles and keep ICLGraphics.kext enabled so that the render is back to normal speed. If anyone has ideas it would be appreciated, thanks.

                      Edit: too many applications required the use of OpenGL / Metal to run properly, so I reloaded AppleIntelICLGraphics.kext. I'll try to think of another solution (if there is one).

                        caboy

                        I think the line with Bits per primary color channel: 10means that the GPU is a 10-bit GPU.

                        No. According to the EDID specification, this is "Basic display parameters". So, this parameter is not related to the GPU. Primary colours are Red, Green, Blue. So each primary colour can be sampled by 210 levels.

                        dev