It seems to me that a number of games, I think mostly DX9 games, are inherently less smooth to play in windowed mode than fullscreen mode, even if through using special K the frametime seems more stable when using windowed mode. An annoying example of this is Bayonetta, which has a bug that introduces stutters in fullscreen mode after some time. However, when panning the camera, it just glides much more smoothly than in windowed mode. I have a g-Sync monitor btw.
Exclusive Full Screen has exclusive allocation of resources to the game. After that the smoothness of the gameplay can come from several factors:
- How your system is capable of running it;
- How many buffers. Fullscreen is double buffered most of the time.
- Is the game well made? Some game limiters are wacky.
The two major complain of doing windowed/borderless are:
- the lack of resources;
- the lag caused by adding another buffer on top of the one used in exclusive fullscreen.
Bordeless Windows with discard flip mode enabled, almost kill entirely the lag caused by 2, and you have the extra smoothness of many buffers. But you can use that only after dx11 and Win10 (don’t know if win8 have it).
I don’t thing there is a golden bullet for everything… and dx9 is pretty old …
Mhm, Dx9 was created for a different era. While technically flip model was added for Dx9 in the D3D9Ex update, making use of it requires specific handling of resources which means it’s a more in-depth change that is needed than flip model for Dx11.
It’s a shame, but it is what it is.
I image the few games that natively support D3D9Ex might feel smoother in window mode, but they’re really rare.
Edit: To further complicate matters I believe Dx9 in Win10 doesn’t really function as it once did in previous OSes, and instead Microsoft is doing some additional tweaks or changes at a low level of the OS for that API. Don’t quote me on this though as I might be wrong, but I believe I’ve heard or read something along those lines over the years.
Wonder if wrapping D3D9 through dgVoodoo2 (DX11 for now, D3D12 possibly later from the WIP version.) or DXVK and into Vulkan could be a method for gaining some of these advantages.
dgVoodoo2’s control panel exposes a range of interesting options and DXVK has a few settings but D3D9 as a base instead of D3D11 presents a number of challenges and limitations as well.
Standards from the API as of DirectX 10 and DirectX 11 would also be a thing thus the numerous compatibility profiles and default settings found in both dgVoodoo2 and DXVK such as a recent issue with black screen after alt-tab or certain problematic formats or lack of documentation or unsupported workarounds or other non-standard code.
I believe you can wrap dgVoodoo2 and SpecialK for D3D8 but also D3D9 into D3D11 and get access to some of these D3D11 SpecialK options that might help but I’m not 100% sure on how well that works compared to D3D11 natively.
(DirectX 12 support is still a work in progress and Vulkan well it kinda works through DXVK and SpecialK compatibility but that’s about it from my knowledge on this.)
EDIT: Oh and this can improve framerate too sometimes by a pretty large margin but in this case it’s more about smoothness not hitting 100+ but frequent dips resulting in micro stuttering and framerate drops and a overall less smooth experience as a result though it may be possible to also have both and SpecialK could be useful with it’s overrides in some of these cases.
(Others might need a framerate cap because the engine just isn’t going to behave well or there’s other compatibility problems which unfortunately does happen.)
EDIT: dgVoodoo2 but I’m not entirely sure on which specific version is bundled into SpecialK 0.11.46+ directly and DXVK is available here.
I did actually try the dgVoodoo2 route with Bayonetta specifically, but I couldn’t get it to work in the short span of time that I tinkered with it.
Anyway, thank you all for the explanations, and I’m glad I’m not going crazy, seeing how Kaldaien is always talking about the superiority of windowed mode (I guess I should play newer games :’) )
Yeah flip model and improvements in Windows 8 and newer but it’s taking time to see native support in games although it’s improving bit by bit.
There’s limited overrides and support Microsoft can do for earlier versions of DirectX too and since it’s tiered and split into feature levels Microsoft rarely directly changes the code to avoid breakage unless needed and then like a former 4 GB problem it’s often in the form of less invasive workarounds.
Makes SpecialK really handy for getting the benefits of some of these features so you get the lowest possible input lag, smoother frame rate variance and stable framerate time / frame time and a decrease in latency overall by reducing the additional frames and waiting that would otherwise be adding input lag and latency for some of these modes.
Not sure but I don’t think the AMD and NVIDIA driver control panel overrides affect much for D3D9 either but it might have some effect even if there’s less possibilities than what you can get out of D3D11 and then for D3D12 I don’t know how NVIDIA handles it but developers are intended to use some of this as the new main model but can still customize a few other things so some overrides can still be beneficial.
Vulkan I think follows most of this but draws on it’s extension system for stuff like full-screen display and other enhancements but as the SDK is updated and newer versions are released more of these land as standards and will be in natively without requiring more from the developers.
(Still don’t think there’s too many actual games if any drawing on Vulkan 1.2.x though it’s mostly apps or emulation going with the latest and newest here.)
EDIT: Fullscreen exclusive is good and can still be the better mode but there are ways to potentially get at least part of the newer benefits but it may not always be the easiest depending on compatibility and these wrapper workarounds often have to resolve compatibility issues of their own too.
From what I have read even NVIDIA can benefit nicely from D3D9 to D3D11 or Vulkan wrapping in some cases which was really surprising but I don’t think I’ve seen any major testing to input latency and frame pacing on this subject it’s mostly been framerate and the max FPS value on it’s own is only part of it.
(Plus with stuttering and so on it can also make some things worse.)
Well I’ll be damned. I lauched Bayonetta with Force D3D9Ex enabled, and lo and behold: windowed mode exhibits the same smoothness as fullscreen mode, without the weird stutter being introduced during longer gameplay (as far as I can see). Aemony, your comment might have singlehandedly provided a durable fix for this problem.
Great to hear. I wasn’t even sure if that feature still worked I have not touched anything D3D9 in years.
Thankfully the API hasn’t changed too much in years either other than various tweaks and updates like that fix for going above 4 GB memory where it instead of looping to zero or crashing it just keeps at 4 GB if I recall that correctly.
I do remember a few games possibly crashing if enabling this but if it works that solves it at least in this games case.
(I also remember few games supporting it directly, Armed Assault / ArmA as one possibly later builds of Source and maybe a few other games but D3D11 started taking over more and more.)