AlpyneDreams / d8vk

Direct3D 8 to Vulkan translation for DXVK! Merged into dxvk: https://github.com/doitsujin/dxvk
zlib License
486 stars 6 forks source link

[d3d8 + util] Remove managedBufferPlacement and adjust config options #199

Closed WinterSnowfall closed 2 days ago

WinterSnowfall commented 6 months ago

Includes #176 and #186. Fixes #198, fixes #154.

As mentioned in the issue, the main culprit and reason behind us going with managedBufferPlacement in the first place was 3DMark2001 SE, which was sort of a red herring because of my inaccurate testing (sorry for that, btw).

Since it no longer helps games such as Supreme Ruler 2010 / 2020, there's really no reason to keep it around at this point. Batching does look promising, however, to handle the jank these games throw at us, it just needs a bit more work, since it was never intended for these games in particular (it does fix the text rendering even in its current state, but breaks rendering on the 3D world map).

In the apparently rare cases where we hit issues that are caused by direct buffer mapping, we can simply disable it. Testing has proven that doing this globally is, however, a rather bad idea, as it negatively affects a lot of games in various degrees, some in a rather dramatic way.

I'll keep it as draft for a while until I can test it more extensively, but initial impressions are good and it does look a lot cleaner this way in the end.

WinterSnowfall commented 6 months ago

I'm done testing the PR and it looks like the vast majority of games are happier (fps wise) like this... a couple were doing reads from dynamic writeonly buffers and needed cachedDynamicBuffers to perform well, but 3 out of 100+ isn't bad at all.

Since it's d3d8 we're talking about, most differences aren't that visible (e.g. in Blowout I get ~350 fps with managedBufferPlacement and ~500 fps with this PR), but I haven't seen any game to artifact or misbehave outside of the usual suspects, and I've added back the config options we had for them in place before managedBufferPlacement was a thing.

WinterSnowfall commented 4 months ago

I've also added a framecap for all Cossacks II engine games as part of this PR. Long story short, gameplay will accelerate if uncapped, and Alexander has no limit whatsoever. Cossacks II enables vsync, but that might still cause issues with high refresh rate displays.