Comments (14)
Well, it is a shame indeed. Since we rely on a private framework Apple has given us primarily to support virtual display adapters (like Sidecar, AirPlay etc), there is probably an inherent lock at 60Hz. There is not much we can do about it, but I'll leave this issue open, maybe somebody will come up with a solution or we'll bump into one somehow.
from betterdisplay.
Yes, this seems to be an issue. Whenever I select the dummy as optimize for
, the refresh rate resets to 60Hz and there is no selector available.
The following refresh rates should be added to the virtual display:
24, 25, 30, 48, 50, 60, 72, 75, 90, 96, 100, 120, 125, 144, 150
I'll experiment with this further, maybe by adding only certain refresh rates to the virtual display this could be circumvented. I can only experiment with 30Hz and 60Hz though as I don't have a high refresh rate display.
from betterdisplay.
I can serve as a testbed, I just updated to monterey and it even has variable refresh rate, but with the virtual display the refresh speed goes away. I wonder if setting the virtual display to 120Hz or even to adaptive sync might make it mirror at that speed on the real display
from betterdisplay.
Hi,
Firstly I just wanted to say thanks so much for making this app, it's a nifty tool to get around the HiDPI issue for M1 Mac users!
Unfortuantely I seem to be having a similar problem that @gbaraldi is facing, whereby mirroring the display on my M1 Mac Mini seems to leave the refresh rate stuck at 60 Hz, despite selecting a higher refresh rate in the settings. I had a similar issue when I modified some of FluffyDisplay's code to create a 4K display with a higher refresh rate – it was also stuck at 60 Hz. I'm rather naive with Swift and C code in general, but I wonder if it might be that the emulated display appears to be coming from HDMI input which is limited to 60 Hz on the Mac Mini?
Happy also to test for the app, and help out in other ways if need be :)
from betterdisplay.
@cpolish - this should not interfere, the emulated display is unrelated to the HDMI port (the app icon is just for show only :)) as it is purely a software construct (but it is actually used as a placeholder in the app, normally is an outlet of a networked data stream which can be utilized by some kind of display solution on the receiving end - DisplayLink and SideCar would use this).
To me it seems like macOS tries to match the physical display as close to the mirrored display's refresh rate as possible - preferring 60Hz if that is an option. I did some tweaks based on this finding, but I am not sure if this will help with on a high refresh rate display or not as I don't have one. Worth a shot.
Can you guys please try this build?
https://www.dropbox.com/s/z9fu4677dbscb44/BetterDummy.zip?dl=1
The procedure is the following:
- First set the display config to unmirrored
- Change the refresh rate of your display to the highest setting
- Activate mirroring (might need more than one try on Monterey because of the Displays preferences bug).
- Is it still 60Hz?
If it is still stuck at 60Hz then I have no additional idea on how to make things better. It might be that virtual displays simply can't go beyond 60Hz (Apple might not have implemented virtual display streaming above 60Hz so it would make no sense to support it as our use case is not really what the creators of CGVirtualDisplay - which is a part of a private framework anyway - at Apple had in mind).
Thanks!
from betterdisplay.
@cpolish - this should not interfere, the emulated display is unrelated to the HDMI port (the app icon is just for show only :)) as it is purely a software construct (but it is actually used as a placeholder in the app, normally is an outlet of a networked data stream which can be utilized by some kind of display solution on the receiving end - DisplayLink and SideCar would use this).
To me it seems like macOS tries to match the physical display as close to the mirrored display's refresh rate as possible - preferring 60Hz if that is an option. I did some tweaks based on this finding, but I am not sure if this will help with on a high refresh rate display or not as I don't have one. Worth a shot.
Can you guys please try this build?
https://www.dropbox.com/s/z9fu4677dbscb44/BetterDummy.zip?dl=1
The procedure is the following:
- First set the display config to unmirrored
- Change the refresh rate of your display to the highest setting
- Activate mirroring (might need more than one try on Monterey because of the Displays preferences bug).
- Is it still 60Hz?
If it is still stuck at 60Hz then I have no additional idea on how to make things better. It might be that virtual displays simply can't go beyond 60Hz (Apple might not have implemented virtual display streaming above 60Hz so it would make no sense to support it as our use case is not really what the creators of CGVirtualDisplay - which is a part of a private framework anyway - at Apple had in mind).
Thanks!
I've tried following your steps with a 144Hz Dell monitor and a M1 MacBook Air, but no dice. I did notice though that in SwitchResX it labels all the dummy resolutions as 240Hz, whereas with the build in the releases it showed 150Hz.
Maybe you're right and virtual displays are limited to 60Hz?
from betterdisplay.
@cpolish - this should not interfere, the emulated display is unrelated to the HDMI port (the app icon is just for show only :)) as it is purely a software construct (but it is actually used as a placeholder in the app, normally is an outlet of a networked data stream which can be utilized by some kind of display solution on the receiving end - DisplayLink and SideCar would use this).
To me it seems like macOS tries to match the physical display as close to the mirrored display's refresh rate as possible - preferring 60Hz if that is an option. I did some tweaks based on this finding, but I am not sure if this will help with on a high refresh rate display or not as I don't have one. Worth a shot.
Can you guys please try this build?
https://www.dropbox.com/s/z9fu4677dbscb44/BetterDummy.zip?dl=1
The procedure is the following:
1. First set the display config to unmirrored 2. Change the refresh rate of your display to the highest setting 3. Activate mirroring (might need more than one try on Monterey because of the Displays preferences bug). 4. Is it still 60Hz?
If it is still stuck at 60Hz then I have no additional idea on how to make things better. It might be that virtual displays simply can't go beyond 60Hz (Apple might not have implemented virtual display streaming above 60Hz so it would make no sense to support it as our use case is not really what the creators of CGVirtualDisplay - which is a part of a private framework anyway - at Apple had in mind).
Thanks!
Unfortunately, no luck for me: doing the UFO test got me 60 Hz unfortunately :(. It could well be the case that the virtual display framework is limited to 60 Hz. Thank you for your work still :).
from betterdisplay.
Well, this is a sad outcome. I was able to set lower than 60Hz framerates on my displays so the virtual display does not seem to be fixed at 60Hz but it appears like it can't get beyond 60Hz.
:(
I'll leave this issue open, maybe somebody finds a solution to this. Thanks for the testing and the feedback!
from betterdisplay.
Hey, I can sadly confirm that this is also the case with the new MBP (M1 Pro) with the 120hz ProMotion-Display (Displayport, 144hz 3440x1440, UFO-Test --> 60fps). If you want to do some tests feel free to contact me.
I am really disappointed that the device is not capable of displaying sharp text on an external display. Thank you for your awesome work however!
from betterdisplay.
One thing I would say, open feedbacks on feedback assistant. I opened one about supporting HiDPI on quadHD monitors which is the underlying issue, but maybe open one about the specific framework you used on swift. Maybe they respond do something, who knows.
from betterdisplay.
The app utilizes a private Apple framework and the way we use it is actually unsupported (it was meant for something else entirely). So I doubt Apple will fix this issue for us, but might fix the underlying issue about sub-4K displays and HiDPI (even though it did not do it for about a year, despite numerous complaints and feedbacks). But still, we should hope for a fix!
from betterdisplay.
some more discussion of this here: #30 (closed)
from betterdisplay.
I would add that many people have reported 4K 144Hz working fine when connected via DP 1.4.
But that when connected via HDMI or even a DP 1.4->HDMI 2.1 adapter it is still limited to 60Hz.
Would be curious how OSX knows that a HDMI monitor is attached.
from betterdisplay.
Until Apple adds ProMotion support to CGVirtualDisplay (for Sidecar for example), this issue will probably not be fixed. The problem is listed in Known Issues. No reason to keep this issue open. I'll convert this into to a discussion.
from betterdisplay.
Related Issues (20)
- Enabling HDR results in washed out image on HDMI Port (USB-C ok) HOT 4
- Long press resolution slider favorite selection cycle might be triggered inadvertently HOT 12
- Yellow hue/Display resolution issues HOT 1
- Flexible scaling resolution sometimes not available after wake + fix? HOT 1
- Cannot see login screen form HOT 1
- Add option to reapply DDC settings on wake for displays that forget DDC settings HOT 11
- App changes the brightness level of Apple displays on first start or when a display is newly detected HOT 2
- Multiple pip windows of the same screen, each with unique crop areas
- Problem with HiDpi HOT 1
- Add option `only synchronize brightness changes triggered externally` HOT 8
- Entering clamshell mode reduces the brightness of external screens unexpectedly when brightness syncing is on with syncing external changes is enabled and auto brightness is also enabled HOT 6
- Display list is not updated under Settings/Groups upon configuration change when that tab is open
- When `Fully dim display on disconnect` is enabled for Intel, the full dimming on disconnect can sync to other displays as well
- Delta syncing skips some steps when syncing externally induced brightness changes on Apple displays
- EDR is not turned off in some scenarios when it should be turned off with `Continuous XDR upscaling readiness` set to disabled
- Add advanced option to override configuration delay HOT 1
- Add advanced option to override wake delay HOT 1
- Feature Request | OpenXR support for Virtual Office HOT 1
- MacOS crash when certain applications render on external HiDPI screen. HOT 1
- Add option to limit lowest brightness for software dimming
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from betterdisplay.