Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.
M1 can 'only' upscale to 6016x3384 (and subsequently downscale to max 3008x1692 through USB-C or max 2560x1440 through HDMI), so what you suggest is not an option, I think. Maybe with M2?
By the way, does this MacOS scaling say to 6016x3384 to 3008 x 1692 mean it actually output it as 3008x1692 to display and it is display that does the final scaling to panel native resolution (like 4k)? I mean if it is so, then there is additional issue with display scaling, it is not equally good in every model and some are actually horrible for anything else than native or 2x...
 
By the way, does this MacOS scaling say to 6016x3384 to 3008 x 1692 mean it actually output it as 3008x1692 to display and it is display that does the final scaling to panel native resolution (like 4k)? I mean if it is so, then there is additional issue with display scaling, it is not equally good in every model and some are actually horrible for anything else than native or 2x...
No, all the scaling is done by GPU: it upscales the chosen 'scaled as' resolution by factor 2 and then downscales to the native resolution of the connected monitor. Example: you have a 27" 4k monitor and you find text and UI too small in the native resolution (3840x2160) at 163 ppi. You choose 'scaled as '2560x1440' to get a text and UI equivalent of 109 ppi. The GPU upscales 2560x1440 to 5180x2880 and then downscales to (native) 3840x2160. The downscaling is asking less GPU-power if it's a integer factor (1, 2, etc), that's why default for Apple it's (often) factor two: their 5k iMac (5120x2880 => scaled as 2560x1440), their previous 21.5" 4k iMac (4096x2304 => scaled as 2048x1152) and now their new 4.5k 24" iMac (4480x2520 => scaled as 2240x1280).
 
  • Like
Reactions: gogoggoo
100% agree, except Apple exists in large part because of creative professionals who need accurate colors and gamma.
If I relied on my Mac to make a living, I'd be screwed. As a medical imager, I need dead-on accurate greyscales.
Then you should be fine with an Eizo ColorEdge or Radiforce ;)
 
I have a 43 inch Dell Ultrasharp coming next week for my M1 Mac mini. I have no idea how well they will play together but with a 30 day return window I’ll give it a try.
 
Last edited:
  • Like
Reactions: vtw
@gogoggoo, you can try redownloading and running the script again. I just updated it to account for preferences that may be located in ~/Library/Preferences/ByHost.
Thanks sudowork. I tried the updated script and get this error at https://pastebin.com/QpJPweCj:
Skipping `/Users/gogoggoo/Library/Preferences/ByHost/com.apple.windowserver.displays.0EFD2189-DD43-5272-AD52-47BA44EBD2DB.plist`. No `LinkDescription` found in display config. Try rotating your display from Display settings to generate the field in the plist.

Any tweaks I can try? Thanks for the help!
 
I'm thinking that after 6 months thw answer maybe that they cannot fix it for some reason and this will remain with the machines. If it was easy you would have expected this would have been way before now.
 
  • Like
Reactions: vtw
No, all the scaling is done by GPU: it upscales the chosen 'scaled as' resolution by factor 2 and then downscales to the native resolution of the connected monitor. Example: you have a 27" 4k monitor and you find text and UI too small in the native resolution (3840x2160) at 163 ppi. You choose 'scaled as '2560x1440' to get a text and UI equivalent of 109 ppi. The GPU upscales 2560x1440 to 5180x2880 and then downscales to (native) 3840x2160. The downscaling is asking less GPU-power if it's a integer factor (1, 2, etc), that's why default for Apple it's (often) factor two: their 5k iMac (5120x2880 => scaled as 2560x1440), their previous 21.5" 4k iMac (4096x2304 => scaled as 2048x1152) and now their new 4.5k 24" iMac (4480x2520 => scaled as 2240x1280).
Thanks, so it does not really matter how good or bad display internal scaling is then.
I just don't get it why it has to do scaling two times... Also I thought it first rendered whole display using the highest value and then down to half, and then finally to native display resolution. So it actually first upscale and then downscale, and not just downscale twice.

All in all which way it works, it sounds like graphics will be messed pretty badly in 1:1 pixel wise unless using full 2x scale, or just run 1x using low resolution monitor like 2K/2560x1440 and suffer from rough fonts. So it one likes to have 2560x1440 looks like desktop and perfect graphics only 5K monitor works for that Or then if only nice looking fonts are important and no need for precise pixel perfect graphics then 4K monitor using 2560x1440 looks like desktop works...
If I was inventing feature like this I would output graphics using monitor 1:1 resolution and just allow larger fonts using scaling for them. That's how I understood it works in Windows. Probably need more coding to do it that way.
 
Thanks sudowork. I tried the updated script and get this error at https://pastebin.com/QpJPweCj:
Skipping `/Users/gogoggoo/Library/Preferences/ByHost/com.apple.windowserver.displays.0EFD2189-DD43-5272-AD52-47BA44EBD2DB.plist`. No `LinkDescription` found in display config. Try rotating your display from Display settings to generate the field in the plist.

Any tweaks I can try? Thanks for the help!
I would start by reading both plists manually and see if there are correct values. There is not really more than 2 or 3 places per monitor (it there is listed more than one, that can be seen from different UUID's whether they exist in plist or not) to fix. Probably your case maybe only one of the plists is corrected and maybe causes some errors.

Tip. You can read plists without any additional sw by just selecting correct plist file with one left mouse button click and then hit space bar. For editing files they need to be converted to XML and then after editing back to Binary. There are some editors that do it automatically.
 
  • Like
Reactions: GJtn7 and gogoggoo
Thanks, so it does not really matter how good or bad display internal scaling is then.
I just don't get it why it has to do scaling two times... Also I thought it first rendered whole display using the highest value and then down to half, and then finally to native display resolution. So it actually first upscale and then downscale, and not just downscale twice.

All in all which way it works, it sounds like graphics will be messed pretty badly in 1:1 pixel wise unless using full 2x scale, or just run 1x using low resolution monitor like 2K/2560x1440 and suffer from rough fonts. So it one likes to have 2560x1440 looks like desktop and perfect graphics only 5K monitor works for that Or then if only nice looking fonts are important and no need for precise pixel perfect graphics then 4K monitor using 2560x1440 looks like desktop works...
If I was inventing feature like this I would output graphics using monitor 1:1 resolution and just allow larger fonts using scaling for them. That's how I understood it works in Windows. Probably need more coding to do it that way.
The previous MacMini (2018), with Intel integrated GPU, didn't have great graphics for non-integer scaling, but, apparently, the M1 chip is much better and does sharp non-integer scaling; so e.g. 'scaled as' 2560x1440 on a 4k monitor will be fine. The issues with M1 graphics are different, e.g.:
* less max. 'scaled as' resolution (and even less through HDMI)
* the YYV/YPbPr - RGB issues for some (many?) monitors
* fuzzy/less-sharp font on non-HiDPI monitors - not because of M1, but because M1 is on Big Sure (only)
 
Well whether the HDMI cable trick worked, or whether something else changed, I was surprised to see that my Dell P2421DC monitor is now showing up as RGB when I logged on just now. When I swapped back to HDMI, the colour changed to the magenta wash but RGB has returned when it's back on Display Port. Will see whether it is sustained....
 
That is exactly where I learned about tweaking plists. I just had to make some additional tricks as I learned my Mini sees my U2518D THREE different ways for the reasons I have no idea. Also mine had 10 Bit colors defined in the YPbPr section I edited, so I also changed that from 10 or 8 to make sure it works and is like in other "two" dispays which already were RGB originally. Also I edited plist located in ByHost which is user specific, so if some who has edited only one plist and has situation where display goes from RGB to YPbPr after login should check that location too.
 
  • Like
Reactions: strawbale
Thanks sudowork. I tried the updated script and get this error at https://pastebin.com/QpJPweCj:
Skipping `/Users/gogoggoo/Library/Preferences/ByHost/com.apple.windowserver.displays.0EFD2189-DD43-5272-AD52-47BA44EBD2DB.plist`. No `LinkDescription` found in display config. Try rotating your display from Display settings to generate the field in the plist.

Any tweaks I can try? Thanks for the help!

One question, did you ever run the script without the `--dry-run` flag? From your --dry-run output, I do see that one display config is slated to be fixed once you run it without the dry-run flag. In other words, running python3 ~/Downloads/fix_m1_rgb.py
 
My 43 inch Dell Ultrasharp (U4320Q) arrived today. I really like it! I have it connected via DisplayPort and it is using YPbPr. I did open the plist file as shown in the video above but it was already set correctly according to the video. It doesn't bother me though as I really don't see what difference it makes.

i-N9jRKnf-X3.jpg
 
Last edited:
My 43 inch Dell Ultrasharp (U4320Q) arrived today. I really like it! I have it connected via DisplayPort and it is using YPbPr. I did open the plist file as shown in the video above but it was already set correctly according to the video.
Did you check the file in ByHost location too? I'm pretty sure problem is there then. Also check plist files if they have more than one monitor listed (different UUID), if so make sure all are set to RGB.
 
  • Like
Reactions: seadragon
Did you check the file in ByHost location too? I'm pretty sure problem is there then. Also check plist files if they have more than one monitor listed (different UUID), if so make sure all are set to RGB.
Thank you! I just looked again and there was indeed an area that I missed. I changed the settings and now I'm running RGB. Thanks again!
 
  • Like
Reactions: 0906742
Thank you! I just looked again and there was indeed an area that I missed. I changed the settings and now I'm running RGB. Thanks again!
Good to hear it worked for you too. Mine has also been 100% RGB since I edited both plists. Just be aware that changing settings in display menu often causes them to go back to default but as long as not change resolutions there it is solid (changing just ICC profiles do not seem to reset it, nor does night shift).
 
  • Like
Reactions: seadragon
Anyone find a way to get subpixel anti-aliasing working in Big Sur?
I found this command was supposed to turn it on defaults write -g CGFontRenderingFontSmoothingDisabled -bool False but that has no effect in my system (I tried of course logout / login to actually load changes).

Anyone who has not tried that setting ever could you check your machine what is default value for this setting?
This command only reads it: defaults read -g CGFontRenderingFontSmoothingDisabled
 
Last edited:
I modified both the plists in preferences and ByHost and initially the monitor started in YPbPr. Switching the bit rate from 10 to 8 in both did the trick and my M1 Mac mini with P3421W monitor now displays RGB in 24bit colour. Fonts look a bit better and gradients are smoother .
 
I modified both the plists in preferences and ByHost and initially the monitor started in YPbPr. Switching the bit rate from 10 to 8 in both did the trick and my M1 Mac mini with P3421W monitor now displays RGB in 24bit colour. Fonts look a bit better and gradients are smoother .
Yes, bit depth needed to set 8 from 10 for RGB in my case too. I mentioned it earlier in this thread.

Could you do me a favor, please check what your system reports for this command in terminal?
defaults read -g CGFontRenderingFontSmoothingDisabled
 
  • Like
Reactions: mjohnston39
The domain/default pair of (kCFPreferencesAnyApplication, CGFontRenderingFontSmoothingDisabled) does not exist

copied the line into terminal and got the above...
Great thanks. So I guess this command should put this setting back to default
defaults delete -g CGFontRenderingFontSmoothingDisabled
Since running that results the same message as yours.

This command is also said to revert to original setting
defaults write -g CGFontRenderingFontSmoothingDisabled -bool True
But running it reports this value as 1.

So not really sure what is going on there as I tested changing this value originally using command
defaults write -g CGFontRenderingFontSmoothingDisabled -bool False
Where it says 0 when reading what value it reports with read command.

However I'm not quite sure it restored back to how it was before playing with this command...
Looks a bit like grayscale anti-aliasing stays on what ever I do.

Anyone else played with this setting?
 
  • Like
Reactions: mjohnston39
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.