narzoul / DDrawCompat

DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11
BSD Zero Clause License
941 stars 70 forks source link

Some unrelated questions... #158

Closed BEENNath58 closed 1 year ago

BEENNath58 commented 1 year ago

It is just some unrelated questions I have from my Windows 8 experience, some tricks that I learnt from DirectDrawCompat in 2018. I was trying to test the same on Windows 11 but failed, so:

  1. In Windows 8, I used to enable DXPrimaryEmulation with a parameter, to remove some low FPS cap. On Windows 10/11 if I do the same setting, every game (I tested games across 1996-1999) crashes. Can you judge why that happens and if there's something more to change?
  2. I read that all games in Win10/11 run in borderless fullscreen + some optimisation technology. Are they responsible for the crash? Is there a way to disable them and return to real fullscreen? Will it fix the crash?
  3. Not important but can you explain what the DXPrimaryEmulation actually + parameter actually did to fix Windows 8 performance?

Hopefully, you will respond to it.

Thank you.

narzoul commented 1 year ago
  1. In Windows 8, I used to enable DXPrimaryEmulation with a parameter, to remove some low FPS cap. On Windows 10/11 if I do the same setting, every game (I tested games across 1996-1999) crashes. Can you judge why that happens and if there's something more to change?

I assume you mean the "-DisableMaxWindowedMode" parameter. I'm not aware of any crashes caused by it, except if you also have NVIDIA G-Sync enabled. That's probably an NVIDIA driver issue, workaround is to disable G-Sync. Based on some reports I got for DDrawCompat v0.3.1, "G-Sync compatible" (aka NVIDIA's FreeSync) is also affected.

  1. I read that all games in Win10/11 run in borderless fullscreen + some optimisation technology. Are they responsible for the crash? Is there a way to disable them and return to real fullscreen? Will it fix the crash?

I'm not aware of any specific optimizations affecting this, but it's hard to tell what exactly happens in various fullscreen modes with various APIs nowadays. It also seems to be constantly evolving with new Windows releases. There are some online resources, but even those might be outdated now, e.g.: https://devblogs.microsoft.com/directx/demystifying-full-screen-optimizations/ It doesn't even mention which DirectX versions are affected. Tools like PresentMon might provide some insight too into what exactly is being used, but I'm not sure if optimizations show up there in any way.

  1. Not important but can you explain what the DXPrimaryEmulation actually + parameter actually did to fix Windows 8 performance?

I don't know exactly. From what I recall, the NoGDIHWAcceleration shim was similarly effective in most cases. I guess it had something to do with how the presentation was redirected into a window texture for DWM by default. Maybe there was something wrong with some GDI acceleration functionality used for that, and that's why that other shim also helped.

BEENNath58 commented 1 year ago

I'm not aware of any specific optimizations affecting this, but it's hard to tell what exactly happens in various fullscreen modes with various APIs nowadays. It also seems to be constantly evolving with new Windows releases. There are some online resources, but even those might be outdated now, e.g.: https://devblogs.microsoft.com/directx/demystifying-full-screen-optimizations/ It doesn't even mention which DirectX versions are affected. Tools like PresentMon might provide some insight too into what exactly is being used, but I'm not sure if optimizations show up there in any way.

I haven't run into any problems with the FSO yet, and it is hard to differentiate in these old games if any difference exists and if it actually works. All I know is they are borderless windowed too, at least since Jane's USNF era (DX3?)

I don't know exactly. From what I recall, the NoGDIHWAcceleration shim was similarly effective in most cases. I guess it had something to do with how the presentation was redirected into a window texture for DWM by default. Maybe there was something wrong with some GDI acceleration functionality used for that, and that's why that other shim also helped.

I had two culprits, either these games didn't render on the Primary Surface or it was running on some Secondary DirectX emulation; the first remains more authentic but there's no documentation...

I assume you mean the "-DisableMaxWindowedMode" parameter. I'm not aware of any crashes caused by it, except if you also have NVIDIA G-Sync enabled. That's probably an NVIDIA driver issue, workaround is to disable G-Sync. Based on some reports I got for DDrawCompat v0.3.1, "G-Sync compatible" (aka NVIDIA's FreeSync) is also affected.

Yes, I meant that parameter. Probably DDC still uses the shim and parameter combination, right? Yes I am surprised to why it crashes, I don't have G-Sync either since my monitor isn't compatible with it and DDC 0.3.1 works completely fine in most games.