Has anyone tried using the NVRAM parameter on an external monitor (an existing usable one preferably)?
OSX dithering - Help wanted
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.
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".
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.
- Edited
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
- Edited
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
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
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.
Awesome. Thank you.
- Edited
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: 10
means 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.
- Edited
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).
I think the line with
Bits per primary color channel: 10
means 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.