Enable Adaptive Sync
RaptaG opened this issue ยท 37 comments
What config to change
As said by the title, disable VSync and and enable Adaptive VSync (Extras
tab)
Why should it be changed
People are constantly reporting that they are getting no FPS improvements while using FO and most of the times it's because of that. Some examples are:
- https://discord.com/channels/859124104644788234/859124571005648946/1004097034887901194
- https://discord.com/channels/859124104644788234/859124571005648946/1002938224987078697
- https://discord.com/channels/859124104644788234/893444857929023558/1003833242522234922
(from the Discord server: https://discord.gg/yxaXtaQqdB)
Doing this will improve frame rates while having stability
Category
Vanilla option
Additional details
Enabling Adaptive VSync is a solution to potential drawbacks of disabling VSync itself. See:
https://www.intel.com/content/www/us/en/developer/articles/technical/enabling-intel-adaptive-sync-with-11th-generation-intel-processor-graphics-and-microsoft.html
Note that the VESA Adaptive Sync standard for variable refresh rate displays (or proprietary technologies G-SYNC/FreeSync) is not the same as the "Adaptive VSync" (NVIDIA's term, AMD seems to call it Enhanced Sync) controlled by
WGL_EXT_swap_control_tear
that Sodium Extra enables. It appears to be fairly widely supported in terms of GPU vendors, and doesn't require explicit monitor support, but is not as effective as Adaptive Sync technologies. I believe that users with variable refresh rate displays just need to disable VSync for Adaptive Sync to work, though this may depend on GPU drivers.Alright, so if my machine claims on a sticker that it has "Adaptive Sync", how would I make sure it also has NVIDIA's standard, considering it has a recent NVIDIA card?
From what i read on internet G-sync is supported on all NVIDIA GPU at starting from series 10.
And for the Adaptive Sync that we can enable in sodium extra just check in it if currently you can enable it.
After researching more it seems like Adaptive VSync is a quite old technology.
NVIDIA decided to remove some pages about it but webarchive helped me.
https://web.archive.org/web/20210917033925/https://www.nvidia.com/en-us/geforce/technologies/adaptive-vsync/supported-gpus/
From what i can see Adaptive VSync compatible card listed here are only Pre-series 10 so i think NVIDIA just replaced it with G-sync but all new cards are just compatible with Adaptive VSync too.
Adaptive VSync (not Adaptive Sync / G-SYNC / FreeSync) is usually implemented in the driver, and has very wide support across vendors. That list was likely not kept up to date; all 10-series cards support it.
Adaptive VSync (not Adaptive Sync / G-SYNC / FreeSync) is usually implemented in the driver, and has very wide support across vendors. That list was likely not kept up to date; all 10-series cards support it.
Not only the 10-series: the oldest card to support it there is the 710 (the 705 being left out), so it's pretty much all of the 7-series.
Oh also, it's the 6-series too. Wait, it actually does go down to the 2-series!
If I'm correct, it's just VSYNC that disables itself when fps under monitor refresh rate?
Adaptive Sync needs V-Sync on to work
Could add that smth like "Require Vsync enabled to work !" in Adaptive sync tooltip ?
Sorry, my bad. It overrides.
ok so it's confirmed either A-sync or Vsync need to be enabled, not both at same time.
My polls and logic is still valid then.
Could you make it so that A-sync override Vsync ? I actually don't know if this is in your power or if it's a thing just that you couldn't even control.
Adaptive Sync needs V-Sync on to work
Could add that smth like "Require Vsync enabled to work !" in Adaptive sync tooltip ?
Sorry, my bad. It overrides.
ok so it's confirmed either A-sync or Vsync need to be enabled, not both at same time. Could you make it so that A-sync override Vsync ? I actually don't know if this is in your power or if it's a thing just that you couldn't even control.
I'm so sorry, my brain is on autopilot and just typing out random stuff. It needs Vsync to work if not it just fallbacks to whatever state vsync is in. Adaptive Sync should not be enabled by default. Not all machines support it. I need to add another layer of checks to prevent it from being enabled via config.
Can't you turn on both? A-sync will override vsync? Internally it's the same glfw property
Can't you turn on both? A-sync will override vsync? Internally it's the same glfw property
Are you sure it will Override ? Maybe we should ask @FlashyReese to be sure
Adaptive Sync needs V-Sync on to work
Could add that smth like "Require Vsync enabled to work !" in Adaptive sync tooltip ?
Adaptive Sync needs V-Sync on to work
Could add that smth like "Require Vsync enabled to work !" in Adaptive sync tooltip ?
Sorry, my bad. It overrides.
ok so it's confirmed either A-sync or Vsync need to be enabled, not both at same time. Could you make it so that A-sync override Vsync ? I actually don't know if this is in your power or if it's a thing just that you couldn't even control.
I'm so sorry, my brain is on autopilot and just typing out random stuff. It needs Vsync to work if not it just fallbacks to whatever state vsync is in. Adaptive Sync should not be enabled by default. Not all machines support it. I need to add another layer of checks to prevent it from being enabled via config.
Well if it's enabled via config but not available it'll simply disable itself right ?
I get the idea, but what to do for people who don't have Adaptive Vsync?
Which people dont' have Adaptive VSync?
What config to change
As said by the title, disable VSync and and enable Adaptive VSync (
Extras
tab)Why should it be changed
People are constantly reporting that they are getting no FPS improvements while using FO and most of the times it's because of that. Some examples are:
- https://discord.com/channels/859124104644788234/859124571005648946/1004097034887901194
- https://discord.com/channels/859124104644788234/859124571005648946/1002938224987078697
- https://discord.com/channels/859124104644788234/893444857929023558/1003833242522234922
(from the Discord server: https://discord.gg/yxaXtaQqdB)
Doing this will improve frame rates while having stability
Category
Vanilla option
Additional details
Enabling Adaptive VSync is a solution to potential drawbacks of disabling VSync itself. See:
https://www.intel.com/content/www/us/en/developer/articles/technical/enabling-intel-adaptive-sync-with-11th-generation-intel-processor-graphics-and-microsoft.html
I say no to this but inform people that if they can do it they should do it
Edit : First do polls to see whether majority have A-sync or don't have it and to see if people whitout it need Vsync or if they don't.
If majority have it then disable Vsync and FPS cap and enable A-sync. Tell people that if they have tearing they should enable Vsync. (with a quick explanation of what's tearing because some person will have the problem but won't know the word)
If majority don't have it well the other question
If most people have tearing leave Vsync enabled otherwise disable Vsync. If Vsync is enabled by default tell them to try disabling it and see if they need to enable it back. If Vsync is disabled by default tell people that if they have tearing they should enable Vsync.
Also tell people in both case that if they can have A-sync they should enable it and disable Vsync.
We should do multiple really simple polls to get some ideas of numbers
1st : Do you have access to adaptive sync ?
If it's greyed out under the extra tab, the response is not.
2nd : If you don't have access to A-sync, do you have tearing with Vsync disabled ?
Try both option during a normal game session.
Tell us in thread if either you had so much tearing you had to enable it back, if you had some tearing but it was completly play able or if you had no tearing at all.
Give your hardware and OS info so we can see if some configs are particularly affected by it.
Adaptive Sync needs V-Sync on to work
Could add that smth like "Require Vsync enabled to work !" in Adaptive sync tooltip ?
Sorry, my bad. It overrides.
ok so it's confirmed either A-sync or Vsync need to be enabled, not both at same time. Could you make it so that A-sync override Vsync ? I actually don't know if this is in your power or if it's a thing just that you couldn't even control.
I'm so sorry, my brain is on autopilot and just typing out random stuff. It needs Vsync to work if not it just fallbacks to whatever state vsync is in. Adaptive Sync should not be enabled by default. Not all machines support it. I need to add another layer of checks to prevent it from being enabled via config.
Well if it's enabled via config but not available it'll simply disable itself right ?
Nope, this check is only done via the GUI. The feature was directly picked from CaffeineMC/sodium#1194.
OK i ran Quick Tests on my High-end PC which has a 240Hz panel which support A-sync
Type of sync : MAX / Avg / min
A-sync : 210 / 205 / 200
Vsync : 220 / 200 / 170
No sync : 240 / 237 / 233
I'm not sure about the fact A-sync is so much better than no sync.
But it's clear that it's far more stable than Vsync and so a note should be added to recommand it over just using Vsync if possible
Adaptive Sync needs V-Sync on to work
Could add that smth like "Require Vsync enabled to work !" in Adaptive sync tooltip ?
Sorry, my bad. It overrides.
ok so it's confirmed either A-sync or Vsync need to be enabled, not both at same time. Could you make it so that A-sync override Vsync ? I actually don't know if this is in your power or if it's a thing just that you couldn't even control.
I'm so sorry, my brain is on autopilot and just typing out random stuff. It needs Vsync to work if not it just fallbacks to whatever state vsync is in. Adaptive Sync should not be enabled by default. Not all machines support it. I need to add another layer of checks to prevent it from being enabled via config.
Well if it's enabled via config but not available it'll simply disable itself right ?
Nope, this check is only done via the GUI. The feature was directly picked from CaffeineMC/sodium-fabric#1194.
Should i make an issue in sodium-extra to add the requirement to A-sync tooltip ?
Should i also make another issue to add this behavior of disabling A-sync tautomatically if it's unsupported ?
If this behavior is added it would mean that FO can just enable A-sync and Vsync and people who can't use A-sync fall back to Vsync.
Should i make an issue in sodium-extra to add the requirement to A-sync tooltip ?
Should i also make another issue to add this behavior of disabling A-sync tautomatically if it's unsupported ?
If this behavior is added it would mean that FO can just enable A-sync and Vsync and people who can't use A-sync fall back to Vsync.
That won't be necessary, I've already pushed a fix for machines that don't support it and has it enabled via config. This will be available in the next release. I might replace that VSync control to cycle between None, VSync and Adaptive Sync
.
Should i make an issue in sodium-extra to add the requirement to A-sync tooltip ?
Should i also make another issue to add this behavior of disabling A-sync tautomatically if it's unsupported ?
If this behavior is added it would mean that FO can just enable A-sync and Vsync and people who can't use A-sync fall back to Vsync.That won't be necessary, I've already pushed a fix for machines that don't support it and has it enabled via config. This will be available in the next release. I might replace that VSync control to cycle between
None, VSync and Adaptive Sync
.
That would fix both problems at the same time
If you don't have A-sync but is on it on the config could it go back to Vsync automatically ?
Note that the VESA Adaptive Sync standard for variable refresh rate displays (or proprietary technologies G-SYNC/FreeSync) is not the same as the "Adaptive VSync" (NVIDIA's term, AMD seems to call it Enhanced Sync) controlled by WGL_EXT_swap_control_tear
that Sodium Extra enables. It appears to be fairly widely supported in terms of GPU vendors, and doesn't require explicit monitor support, but is not as effective as Adaptive Sync technologies. I believe that users with variable refresh rate displays just need to disable VSync for Adaptive Sync to work, though this may depend on GPU drivers.
Require to disable Vsync for which Adaptive Sync to work ? That one from sodium extra ? Or the other ? Because from what i tested the A-sync from SE do need Vsync enabled.
It doesn't need "vsync" to work. It can be written to work without vsync being enabled. It's just been picked and has never been modified from the original PR.
Note that the VESA Adaptive Sync standard for variable refresh rate displays (or proprietary technologies G-SYNC/FreeSync) is not the same as the "Adaptive VSync" (NVIDIA's term, AMD seems to call it Enhanced Sync) controlled by
WGL_EXT_swap_control_tear
that Sodium Extra enables. It appears to be fairly widely supported in terms of GPU vendors, and doesn't require explicit monitor support, but is not as effective as Adaptive Sync technologies. I believe that users with variable refresh rate displays just need to disable VSync for Adaptive Sync to work, though this may depend on GPU drivers.
Require to disable Vsync for which Adaptive Sync to work ? That one from sodium extra ? Or the other ? Because from what i tested the A-sync from SE do need Vsync enabled.
(For adaptive sync to be enabled, you need to have both V-Sync and Adaptive Sync options enabled)
Require to disable Vsync for which Adaptive Sync to work ? That one from sodium extra ? Or the other ? Because from what i tested the A-sync from SE do need Vsync enabled.
It doesn't need "vsync" to work. It can be written to work without vsync being enabled. It's just been picked and has never been modified from the original PR.
Yeah i didn't meant like the technology need the other technology, i mean that here you need both options to be enabled. If you only have A-sync it doesn't do anything.
@RaptaG should change name to simply "Enable Adaptive Sync"
Because Vsync needs to be enabled in options.
This might get a bit obsolete once next version of sodium extra is released due to that :
And when that is released we can just enable A-sync and it'll fall back to Vsync for users that can't have A-sync.
@RaptaG should change name to simply "Enable Adaptive Sync"
๐
So the idea is to wait for the next Sodium Extra, which will add additional checks for the feature, and still enable Adaptive Vsync by default in FO?
So the idea is to wait for the next Sodium Extra, which will add additional checks for the feature, and still enable Adaptive Vsync by default in FO?
Yes
Note that the VESA Adaptive Sync standard for variable refresh rate displays (or proprietary technologies G-SYNC/FreeSync) is not the same as the "Adaptive VSync" (NVIDIA's term, AMD seems to call it Enhanced Sync) controlled by
WGL_EXT_swap_control_tear
that Sodium Extra enables. It appears to be fairly widely supported in terms of GPU vendors, and doesn't require explicit monitor support, but is not as effective as Adaptive Sync technologies. I believe that users with variable refresh rate displays just need to disable VSync for Adaptive Sync to work, though this may depend on GPU drivers.
Alright, so if my machine claims on a sticker that it has "Adaptive Sync", how would I make sure it also has NVIDIA's standard, considering it has a recent NVIDIA card?
@RaptaG should change name to simply "Enable Adaptive Sync" Because Vsync needs to be enabled in options. This might get a bit obsolete once next version of sodium extra is released due to that : And when that is released we can just enable A-sync and it'll fall back to Vsync for users that can't have A-sync.
Amazing! Gotta love those QoL revisions
If I'm correct, it's just VSYNC that disables itself when fps under monitor refresh rate?
I think so, yes.
The update with change of Adaptive Sync's placement on Sodium Extra has been released.
The update with change of Adaptive Sync's placement on Sodium Extra has been released.
Amazing! As an extra, I didn't notice much difference (on the previous release so far) in frame responsiveness using the adaptive sync checkmark while running Linux. I am using X11, and will do further tests on Linux and Windows with the new release soon.