Contribute
Register

Adding/Using HiDPI custom resolutions

Status
Not open for further replies.
How do you use the defaults command to modify /Library/Preferences instead of ~/Library/Preferences or /private/var/root/Library/Preferences?
The correct command is:
Code:
sudo defaults write /Library/Preferences/com.apple.CoreDisplay multiRefreshRateScaledModes -bool true
 
Interesting. Looks like I have some experimentation to try this weekend.

Thanks joevt.
 
Can you show current resolutions and EDID?

Sure, here's the EDID.

Here's some screenshots of the list of resolutions I have in SwitchResX.

It says 5120x2880 is active so it should be an option. Then there should also be a 2560x1440 HiDPI option.

That's what's weird. Every other resolution combination is there except 2560x1440 HiDPI. For 2560x1440 there's only the low-res option.

I wonder why your System Preferences / Display screenshot doesn't have a "Show low resolution modes" option. Did you hold the Option key and click "Scaled"?

I can get the full list of resolutions to show up if I hold Alt/Option and click Scaled.

What version of macOS are you running?
10.14.6[/QUOTE]
 
The Current Resolutions list in SwitchResX might be easier to read if you sorted by Resolution instead of HiDPI.

SwitchResX shows all the 2560x1440 HiDPI resolutions (60Hz, 30Hz, 24Hz, 25Hz, 50Hz, 60Hz). Is there a difference between the two 60Hz options?

SwitchResX seems to be missing some resolutions. Displays preferences shows some low resolution modes but SwitchResX is only showing HiDPI modes. I wonder if there's a limit to the number of resolutions? Did you scroll the entire list in Displays preferences to find another 2560x1440 mode? Maybe there's a problem with the sorting. Maybe there's bugs in CoreDisplay framework.

Seems to be missing some refresh rates for higher resolutions. You have 120Hz up to 2160p and 144Hz up to 1440p. So why are all the scaled modes set to 60Hz or lower? Are GPU scalers unable to work at higher than 60Hz? Maybe this is a limit imposed by Apple. I would find the code with the limit and patch it to see what happens. The display scaler has no problem scaling 144Hz 1440p to 2160p. It looks like you have a 4320p mode scaling to 2160p at 60Hz so scaling 2880p to 2160p at 120Hz should work. Does Display Preferences show different refresh rates than SwitchResX for scaled HiDPI resolutions?

What is the "Scaled resolutions base" set to? I assume 3840x2160. If that's true, why would there be a 3840x2160 HiDPI mode? You wouldn't be able to see a difference except in screenshots. With 3840x2160 as the base resolution, you should be able to get scaled resolutions up to 120Hz but I don't see any in your SwitchResX screenshots.

This is with Radeon VII?

To verify DisplayPort connection, report output of the following command:
Code:
/System/Library/Extensions/AppleGraphicsControl.kext/Contents/MacOS/AGDCDiagnose -a > AGDCDiagnose_a.txt 2>&1
 
I've been doing some tests to answer some of my questions and maybe recreate your situation.

I don't have a high refresh rate flat panel display, but I do have a CRT which can have a refresh up to 170 Hz.

I think there might be a bug in SwitchResX:

I have a base resolution of 2048x1536 with refresh rates 50, 60, 73, 74, 74.999 (displayed as 75), 75.
Display preferences shows scaled modes (and the base resolution) have refresh rates 50, 60, 73, 74, 75.
SwitchResX shows only scaled modes with refresh rates 50, 60, 73. Something strange is going on.
 
The following may help show why a timing or scaled mode is rejected:
Code:
log stream --predicate 'sender contains "Thunderbolt" or sender contains "Graphics" or sender contains "Display"' --style compact --info --source --signpost
"Graphics" is for intel graphics. It should be replaced with something else for AMD and Nvidia.

Run the command in Terminal.app. Press Command-K to clear the window when you are going to start your test. Perform your test (connect a display or click "Activate immediately" in SwitchResX, or whatever). After the test is complete, Command-A to select all, Command-C to copy, Command-V to paste into a new text file.

Control-C to stop streaming the log.
 
If both Display preferences and SwitchResX don't show the resolution, then displayplacer might be able to, and it can probably change refresh rate to.
 
The Current Resolutions list in SwitchResX might be easier to read if you sorted by Resolution instead of HiDPI.

Sure thing, here's a screenshot of the full list sorted by resolution.


SwitchResX shows all the 2560x1440 HiDPI resolutions (60Hz, 30Hz, 24Hz, 25Hz, 50Hz, 60Hz). Is there a difference between the two 60Hz options?

There doesn't appear to be any difference from what I can see. Both options don't appear to budge from 60Hz too.

SwitchResX seems to be missing some resolutions. Displays preferences shows some low resolution modes but SwitchResX is only showing HiDPI modes. I wonder if there's a limit to the number of resolutions? Did you scroll the entire list in Displays preferences to find another 2560x1440 mode? Maybe there's a problem with the sorting. Maybe there's bugs in CoreDisplay framework.

After holding Alt/Option and clicking Scaled to show the list in Display Prefs, it only shows '2560x1440 (low resolution)' among others and not HiDPI 2560x1440 weirdly enough. The closest alternatives are 3008x1692 HiDPI and 2304x1296 HiDPI which both work at 120Hz.

Seems to be missing some refresh rates for higher resolutions. You have 120Hz up to 2160p and 144Hz up to 1440p. So why are all the scaled modes set to 60Hz or lower? Are GPU scalers unable to work at higher than 60Hz? Maybe this is a limit imposed by Apple. I would find the code with the limit and patch it to see what happens. The display scaler has no problem scaling 144Hz 1440p to 2160p. It looks like you have a 4320p mode scaling to 2160p at 60Hz so scaling 2880p to 2160p at 120Hz should work. Does Display Preferences show different refresh rates than SwitchResX for scaled HiDPI resolutions?

Display Prefs seems to show the same list of resolutions, but the difference is that SwitchResX doesn't seem to list the resolutions that are capable of 120Hz and only shows them as 60Hz or below. 1920x1080 and 1280x720 seem to be the exceptions to that as they're listed properly.

What is the "Scaled resolutions base" set to? I assume 3840x2160. If that's true, why would there be a 3840x2160 HiDPI mode? You wouldn't be able to see a difference except in screenshots. With 3840x2160 as the base resolution, you should be able to get scaled resolutions up to 120Hz but I don't see any in your SwitchResX screenshots.

Yep, 3840x2160 for scaled resolutions base.

This is with Radeon VII?

Yep, Radeon VII. I use Lilu+WhateverGreen too. Not sure if that'd affect anything.

To verify DisplayPort connection, report output of the following command:
Code:
/System/Library/Extensions/AppleGraphicsControl.kext/Contents/MacOS/AGDCDiagnose -a > AGDCDiagnose_a.txt 2>&1

Here's the full output.

My Radeon VII is connected to a Dell UP2715K (primary display - MST DisplayPort - 2x DP) and the Acer Nitro XV273KP (SST 1x DP 1.4).

If both Display preferences and SwitchResX don't show the resolution, then displayplacer might be able to, and it can probably change refresh rate to.

Thanks, I'll try using displayplacer and see what happens. I'll run the log stream filter too while I give that a try tomorrow :)
 
Last edited:
Sure thing, here's a screenshot of the full list sorted by resolution.

Display Prefs seems to show the same list of resolutions, but the difference is that SwitchResX doesn't seem to list the resolutions that are capable of 120Hz and only shows them as 60Hz or below. 1920x1080 and 1280x720 seem to be the exceptions to that as they're listed properly.
The developer of SwitchResX has a fix which will be released soonish.

There doesn't appear to be any difference from what I can see. Both options don't appear to budge from 60Hz too.
Double click each to see the timing info (pixel clock, sync width, etc.).

After holding Alt/Option and clicking Scaled to show the list in Display Prefs, it only shows '2560x1440 (low resolution)' among others and not HiDPI 2560x1440 weirdly enough. The closest alternatives are 3008x1692 HiDPI and 2304x1296 HiDPI which both work at 120Hz.
You might just have to use SwitchResX when the fix becomes available and ignore Display prefs.

Yep, Radeon VII. I use Lilu+WhateverGreen too. Not sure if that'd affect anything.
Probably not.

Here's the full output.

My Radeon VII is connected to a Dell UP2715K (primary display - MST DisplayPort - 2x DP) and the Acer Nitro XV273KP (SST 1x DP 1.4).
Interesting. As expected, it shows two DisplayPort 1.2 connections to the Dell and a single DisplayPort 1.4 connection for the Acer. Each connection of the Dell has a different EDID. The longer, main EDID has all the info and says it's for the right side of the display, the shorter EDID is there to identify itself as the left side of the display. Neither of these has a 5120x2880 resolution. Apple has a fake EDID in the overrides which is missing the tiling info (left/right side indicator) and it has only a 5120x2880 60Hz timing. SwitchResX only shows one of the EDIDs (the main one, maybe in the past it showed the faked one?)
 
Last edited:
The developer of SwitchResX has a fix which will be released soonish.

Thanks for your help. I'll just wait until that's released and see how it goes. It's not absolutely imperative that I have 120Hz in macOS at 2560x1440 HiDPI, but it'd be nice to have. I mostly use the Acer Nitro monitor for gaming in Windows and as my secondary screen for design work in macOS. It's more of an annoying 'why isn't this working when it should?' kind of puzzle :)


Ah looks like there's a few minor differences in pixel clock and other specs.

1080p HiDPI #1

Pixel clock: 533.25 MHz Horizontal Vertical
Active 3840 pixels 2160 lines
Front porch 48 pixels 3 lines
Sync width 32 pixels 5 lines
Back porch 80 pixels 54 lines
Blanking 160 pixels 62 lines
Total 4000 pixels 2222 lines
Scan rate 133.312 kHz 59.997 Hz
Scale to N/A N/A
[✓] Positive sync. [ ] Positive sync.


1080p HiDPI #2

Pixel clock: 594.00 MHz Horizontal Vertical
Active 3840 pixels 2160 lines
Front porch 176 pixels 8 lines
Sync width 88 pixels 10 lines
Back porch 296 pixels 72 lines
Blanking 560 pixels 90 lines
Total 4400 pixels 2250 lines
Scan rate 135.000 kHz 60.000 Hz
Scale to N/A N/A
[✓] Positive sync. [✓] Positive sync.
 
Status
Not open for further replies.
Back
Top