VOGONS


First post, by KuraiShidosha

User metadata
Rank Newbie
Rank
Newbie

I've recently updated my install of dgvoodoo2 and I noticed no matter what I do I can't get back my legacy flip mode, the true exclusive fullscreen where overlays don't appear over the game window. Is there some setting somewhere I'm missing? I really hope this option hasn't been removed completely for those of us who still prefer no intrusive overlays on our games.

Reply 1 of 17, by Dege

User metadata
Rank l33t
Rank
l33t

I didn't change anything in respect of that, the D3D11 backend still creates swapchains with legacy flip-discard mode, so fullscreen is (or at least should be) true fullscreen.

That's the case btw when dgVoodoo can fully control the gamma ramp and it's not inherited from the system settings.

Reply 2 of 17, by KuraiShidosha

User metadata
Rank Newbie
Rank
Newbie

Thanks for reply Dege.

In my case, I came from version 2.71.3. There, with even just a default configuration, all my D3D1-8 and DirectDraw games can run in a proper legacy flip mode where overlays (like Windows Volume) don't appear over the game. When upgrading to latest version, suddenly no matter what I do, these same games draw the overlays above the games and PresentMon shows the games as running in Independent Flip the new mode known as FSO/fullscreen optimizations. Trying to disable it doesn't help, it is always in this mode with overlays popping up over game.

I have not bisected which version triggers this change. I can do that now rather easily and reply back later.

Reply 3 of 17, by KuraiShidosha

User metadata
Rank Newbie
Rank
Newbie

Wow after checking down the list from newest version to my old pre-updated version, 2.71.3, I have discovered that the change came not from your software, but from Windows. Previously, I used to run all my DX9-11 games with FSO disabled as easily as running a registry edit with the following changes:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\System\GameConfigStore]
"GameDVR_HonorUserFSEBehaviorMode"=dword:00000001
"GameDVR_DXGIHonorFSEWindowsCompatible"=dword:00000001
"GameDVR_FSEBehavior"=dword:00000002
"GameDVR_FSEBehaviorMode"=dword:00000002

That is NOT sufficient anymore. Even with my old version 2.71.3, I am still getting independent flip modes with dgvoodoo2 running DirectDraw or DX8 emulation. Previously, simply running that registry tweak was enough to get proper legacy flip. Now, I must manually go in and flag each and every executable with compatibility changes to disable this mode.

It would seem I was mistaken about it being a change with your software. My apologies Dege. Thank you for your wonderful work.

Reply 4 of 17, by Dege

User metadata
Rank l33t
Rank
l33t

Yeah, Full Screen Optimizations is sort of a combination of true and borderless fullscreen: basically let the game possess the resources exclusively like in true fullscreen but let the DWM step into action and compose the screen like in windowed mode when overlay-like windows are detected over the fullscreen area. This is clearly noticable, the FPS-performance decreases a little for me when I get a message window at the bottom right. But it jumps back to normal when it disappears.

It's not really a brand new thing however. For more, see: https://devblogs.microsoft.com/directx/demyst … -optimizations/

Reply 5 of 17, by KuraiShidosha

User metadata
Rank Newbie
Rank
Newbie

Yep I am intimately familiar with FSO, it's why I made that registry tweak and keep the file on my desktop to run periodically (because Microsoft resets them every now and then.) It's just this is new behavior, where apps running with dgvoodoo2 are no longer respecting those registry tweaks and I must take it a step further to force the exe to disable FSO to get it to run in legacy flip. I'm glad it's still possible for the time being, PresentMon proves how cancerous it is to frametimes and presents, not to mention I have no need for it, but man it really is getting harder and harder to avoid it seems.

Reply 6 of 17, by Dege

User metadata
Rank l33t
Rank
l33t

How much is the performance loss btw? Because I thought FSO lets the application present in true flipping mode in the legacy way and switch to composition mode for the time when overlay windows appears.

Maybe MS should have added a compatibility option for FSO to the application compatibility page.

Reply 7 of 17, by KuraiShidosha

User metadata
Rank Newbie
Rank
Newbie

It's roughly the same performance wise but frames are presented to the display in sometimes odd intervals depending on the game. For instance, Hitman Blood Money has broken v-sync timings under FSO but run perfectly fine with it off. Even though it is running freely to the display, it is still technically under ownership of the DWM and has to be ready to switch to composition at a moment's notice. I guess this causes interference with present timings in some way and I'd just rather not deal with it.

Reply 9 of 17, by Aemony

User metadata
Rank Newbie
Rank
Newbie

@dege, is there any plans on adding the ability to override the swap effect in D3D11 ? To essentially get sequential flip or discard flip without relying on wrapping a game to D3D12 ? Right now one has to use Special K in conjunction with dgVoodoo to achieve that, which sometimes have so~so compatibility when mixed in some games. Not all that critical (and I guess even less so with Microsoft's upcoming windowed optimizations) but a feature I've been surprised to see missing in dgVoodoo after D3D12 was added.

Reply 10 of 17, by Dege

User metadata
Rank l33t
Rank
l33t

You mean discard (DXGI_SWAP_EFFECT_DISCARD) and flip-discard (DXGI_SWAP_EFFECT_FLIP_DISCARD) effects?
Sequential modes only provide swapchain buffers content to be kept but dgVoodoo does not need that feature, it'd only lower the presentation performance.
Anyway, I didn't care about the swap effect for D3D11 because of Win7 compatibility and the fact that DXGI_SWAP_EFFECT_DISCARD provides the true flipping workig mode under ideal circumstances, if I get it right.
Altough DXGI_SWAP_EFFECT_FLIP_DISCARD would probably be better suited for windowed mode.

Reply 11 of 17, by Aemony

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2022-05-07, 13:09:
You mean discard (DXGI_SWAP_EFFECT_DISCARD) and flip-discard (DXGI_SWAP_EFFECT_FLIP_DISCARD) effects? Sequential modes only prov […]
Show full quote

You mean discard (DXGI_SWAP_EFFECT_DISCARD) and flip-discard (DXGI_SWAP_EFFECT_FLIP_DISCARD) effects?
Sequential modes only provide swapchain buffers content to be kept but dgVoodoo does not need that feature, it'd only lower the presentation performance.
Anyway, I didn't care about the swap effect for D3D11 because of Win7 compatibility and the fact that DXGI_SWAP_EFFECT_DISCARD provides the true flipping workig mode under ideal circumstances, if I get it right.
Altough DXGI_SWAP_EFFECT_FLIP_DISCARD would probably be better suited for windowed mode.

In general the idea was if it would be possible to expose the swap effect as a controllable parameter, but specifically it's mostly about enabling the use of DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL as well as DXGI_SWAP_EFFECT_FLIP_DISCARD in D3D11.

Compatibility-wise:
- D3D11 on Win7 actually technically supports DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL with the Platform Update from 2012 or whenever it was released, though it's implemented differently so shouldn't be expected to work the same (random fun tidbit I've come across).
- Windows 8.x added support for DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
- Windows 10 added support for DXGI_SWAP_EFFECT_FLIP_DISCARD

Either flip swap effect in D3D11 enables windowed VRR on Windows 10-11 (maybe even Win8.x?) and on Windows 11 it also typically allows Auto-HDR to engage for the game -- all without relying on either FSE or FSO while still allowing all the other benefits of window mode (superior multitasking, notifications if one wants it, etc).

In regards to best suited default for different display modes and OSes, it would probably be something like this:
- Fullscreen Exclusive - DXGI_SWAP_EFFECT_DISCARD (non-flip) on all OSes
- Windowed on Win7 - DXGI_SWAP_EFFECT_DISCARD
- Windowed on Win8.x - DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
- Windowed on Win10/11 - DXGI_SWAP_EFFECT_FLIP_DISCARD

Though as I mentioned earlier having it be user-configurable (if so only through a parameter) would be cool. I tend to tinker with stuff, and I'd probably set up a machine running Windows 7 solely to try out DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL on it, for example. Though the primary intent of the suggestion/question is to improve windowed mode on Win10/11.

Reply 12 of 17, by Dege

User metadata
Rank l33t
Rank
l33t
Aemony wrote on 2022-05-08, 03:08:
In general the idea was if it would be possible to expose the swap effect as a controllable parameter, but specifically it's mos […]
Show full quote
Dege wrote on 2022-05-07, 13:09:
You mean discard (DXGI_SWAP_EFFECT_DISCARD) and flip-discard (DXGI_SWAP_EFFECT_FLIP_DISCARD) effects? Sequential modes only prov […]
Show full quote

You mean discard (DXGI_SWAP_EFFECT_DISCARD) and flip-discard (DXGI_SWAP_EFFECT_FLIP_DISCARD) effects?
Sequential modes only provide swapchain buffers content to be kept but dgVoodoo does not need that feature, it'd only lower the presentation performance.
Anyway, I didn't care about the swap effect for D3D11 because of Win7 compatibility and the fact that DXGI_SWAP_EFFECT_DISCARD provides the true flipping workig mode under ideal circumstances, if I get it right.
Altough DXGI_SWAP_EFFECT_FLIP_DISCARD would probably be better suited for windowed mode.

In general the idea was if it would be possible to expose the swap effect as a controllable parameter, but specifically it's mostly about enabling the use of DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL as well as DXGI_SWAP_EFFECT_FLIP_DISCARD in D3D11.

Compatibility-wise:
- D3D11 on Win7 actually technically supports DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL with the Platform Update from 2012 or whenever it was released, though it's implemented differently so shouldn't be expected to work the same (random fun tidbit I've come across).
- Windows 8.x added support for DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
- Windows 10 added support for DXGI_SWAP_EFFECT_FLIP_DISCARD

Either flip swap effect in D3D11 enables windowed VRR on Windows 10-11 (maybe even Win8.x?) and on Windows 11 it also typically allows Auto-HDR to engage for the game -- all without relying on either FSE or FSO while still allowing all the other benefits of window mode (superior multitasking, notifications if one wants it, etc).

In regards to best suited default for different display modes and OSes, it would probably be something like this:
- Fullscreen Exclusive - DXGI_SWAP_EFFECT_DISCARD (non-flip) on all OSes
- Windowed on Win7 - DXGI_SWAP_EFFECT_DISCARD
- Windowed on Win8.x - DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL
- Windowed on Win10/11 - DXGI_SWAP_EFFECT_FLIP_DISCARD

Though as I mentioned earlier having it be user-configurable (if so only through a parameter) would be cool. I tend to tinker with stuff, and I'd probably set up a machine running Windows 7 solely to try out DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL on it, for example. Though the primary intent of the suggestion/question is to improve windowed mode on Win10/11.

Thanks, it's a nice summary with valid points. I'll see how it could be exposed into the config.
Btw, then, plain discard swap effects don't work with auto-HDR? (I have neither Win11 nor a HDR monitor).

Reply 13 of 17, by Aemony

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2022-05-08, 12:24:

Thanks, it's a nice summary with valid points. I'll see how it could be exposed into the config.
Btw, then, plain discard swap effects don't work with auto-HDR? (I have neither Win11 nor a HDR monitor).

Flip model is required for Auto HDR to engage, and is actually one of the reasons specified by Microsoft why they're working on their new optimizations for windowed games which automatically tries to convert legacy BitBlt model presentation to modern flip model. Those optimizations are currently being tested in the Insider Program for a potential official release later this year. That said however, unofficially Microsoft have already enabled them for select games in the stable version of Windows 11 when Auto HDR is enabled.

This means that there is a likelihood that Auto HDR might engage for a game that dgVoodoo 2 is being used on if Windows 11's windowed optimizations takes that legacy swap effect that dgVoodoo 2 sets up and convert it into modern flip model, though this is not a guarantee yet since those optimizations aren't officially released/available for all games yet. I am not aware of an actual list of whitelisted entries, but at least Remember Me and Mirror's Edge both engage Auto HDR if dgVoodoo 2 is used in my testing.

As mentioned though those windowed optimizations are currently only available on the stable channel of Windows 11 when Auto HDR is enabled, which mean non-HDR users are missing out on the other benefits of modern flip model in window modes as for them the legacy swap effects would remain untouched. Microsoft have also not communicated any intentions of making their windowed optimizations feature available on Windows 10 so I doubt it will be available there either.

Reply 14 of 17, by Dege

User metadata
Rank l33t
Rank
l33t
Aemony wrote on 2022-05-08, 14:07:

Flip model is required for Auto HDR to engage, and is actually one of the reasons specified by Microsoft why they're working on their new optimizations for windowed games which automatically tries to convert legacy BitBlt model presentation to modern flip model.

This is consistent with this:

Note There are differences between full screen exclusive and full screen UWP. If you are porting a Direct3D 11 application to U […]
Show full quote

Note There are differences between full screen exclusive and full screen UWP. If you are porting a Direct3D 11 application to UWP on a Windows PC, be aware that the use of DXGI_SWAP_EFFECT_DISCARD when creating swap chains does
not behave the same way in UWP as it does in Win32, and its use may be detrimental to GPU performance.

This is because UWP applications are forced into FLIP swap modes (even if other swap modes are set), because this reduces the computation
time used by the memory copies originally done by the older bitblt model.

https://docs.microsoft.com/en-us/windows/win3 … xgi_swap_effect

They already do it officially for UWP applications.
Thanks for the info! I'll look into it, what additional developments needed in dgVoodoo, etc.

Reply 17 of 17, by Aemony

User metadata
Rank Newbie
Rank
Newbie
Dege wrote on 2022-05-10, 17:46:

I implemented the flip-discard swap effects for D3D11. You can test it with WIP86.1:

Re: dgVodooo 2.7.x and related WIP versions (2)

So far it's working great! Thanks for adding support for this so quickly.