It seems that I might've said some incorrect stuff in my former post... just goes to show the complexity and the number of settings involved, and whether SK does things "automatically" or not when various settings are enabled -- not to mention how often Special K changes and whatnot.
I was mighty confused for a bit as well as Kaldaien have apparently also, in the past, mentioned how waitable swapchains didn't work with G-Sync enabled, but I assume it was in earlier versions of Special K before he added necessary logic to account for G-Sync/VRR scenarios...
It turns out that the waitable being tearing free though was in regards to using V-Sync Off + G-Sync Off + Waitable -- not actually G-Sync On. I highly recommend reading the full post for the below quote and context:
https://discourse.differentk.fyi/t/topic-free-mega-thread-v-1-11-2020/79/2380 wrote:
Waitable (tearing free) has about 1 ms more latency than G-Sync On + V-Sync Off (which includes tearing). This is after building a new VBlank undershoot feature into my limiter, it’s designed to present frames for composition a little bit earlier than normal VSync would. The distance between each frame is still constant, I’m just racing to get the frame queued for presentation ~4% quicker than VBlank.
In a way, this is like scanline sync, only I couldn’t care less about syncing to a particular scanline or turning V-Sync off, I’m just working to keep the DWM and application synchronized.
And another relevant quote about waitable swapchains:
Previously Kaldaien have mentioned how Presentation Interval ("V-Sync") would need to be set to 1 for SK to drop frames, but that was back in September and the above quote is newer, so I don't think it applies any longer...
---
EeK wrote: ↑14 Nov 2020, 02:47
Ah, that's what I've always wondered. So, if I limit the frame rate to 3/4 FPS below the max refresh rate, I'm essentially already creating back buffers, right? When capping the frame rate at G-Sync recommended settings, I can just set back buffers to -1 in SK?
Leaving it to -1 will have the game use its default numbers of buffers (typically 2 or 3).
---
EeK wrote: ↑14 Nov 2020, 02:47
Oh, so waitable swapchain works as a substitute to VSync? When enabling the former, we should disable the latter?
Seems I was mistaken on this part, sadly.
I took it for a spin yesterday without V-Sync enabled and while I didn't experience any tearing, according to Kaldaien it does still produce tearing so it seems I was wrong. I recommend seeing the above linked post for the whole context as well as settings Kaldaien used when he mentioned that tearing was experienced (TL;DR: G-Sync On + V-Sync Off + Waitable Swapchains).
---
EeK wrote: ↑14 Nov 2020, 02:47
By globally, do you mean on NVCP's "Global Settings"?
Yes, I generally adhere to Blur Busters' overarching recommended settings still.
---
EeK wrote: ↑14 Nov 2020, 02:47
What about the low latency setting under the frame rate limiter?
To quote Kaldaien again (it's probably best that I keep doing that, lmao):
https://discourse.differentk.fyi/t/topic-free-mega-thread-v-1-11-2020/79/1828 wrote:
Also, when using G-Sync always use the Low Latency Mode in the framerate limiter advanced tab. That changes when the limiting is applied, with it off the CPU creates a frame but it gets delayed until target fps.
With it on, the new frame doesn’t start until target fps. Basically, it polls input closer to the actual image going out onto screen… but it would cause unstable framerates w/o G-Sync.
---
EeK wrote: ↑14 Nov 2020, 02:47
And do you always leave "Enable DWM Tearing" unchecked?
The relevance of that setting is only when two different windowed applications are on the screen simultaneously, apparently:
https://discourse.differentk.fyi/t/supports-tearing-in-windowed-mode-flag-when-running-game-in-borderless-windowed/812/4 wrote:Also, this notion of “tearing” as it is referred to, is REQUIRED for G-Sync to work if you have two different window applications on screen at the same time. What this tearing flag refers to is the foreground window controlling the refresh rate of the DWM independently. Without that flag, if you have two different windowed apps visible at the same time, they get synchronized to one another.
You know that setting in NVCPL called “G-Sync in Windowed mode?” That driver hack is the same thing as this tearing flag.
---
To be honest, I think I sorta made myself confused as a result of writing this post. Special K has a lot of configurable options, and how they apply in various scenarios differs.
Kaldaien mentioned recently how he wanted to throw up a custom wiki on his site and one of the things I think we can improve upon is to mention overarching common configurations for various scenarios that users might be interested in, such as G-Sync (focus on frame pacing), G-Sync (focus on latency),V-Sync Off (focus on latency and tearing-free) etc because this just goes to show how confusing it can at times be.