github WinterSnowfall/d7vk v1.10
Version 1.10

5 hours ago

Even the major 2D improvements in v1.9 weren't nearly enough for some games, so in v1.10 we've managed to squeeze a bit more performance in 2D heavy titles by skipping data copies on surfaces which would have been overwritten anyway.

Sounds logical and easy enough, but believe me when I say that dealing with the myriad of corner cases DDraw has to offer and figuring out when it is safe to skip an operation is hardly an easy task. I was even a bit too optimistic at first and @CkNoSFeRaTU had to pull me back to reality, but thankfully most of my optimizations have survived the test of time.

It's not anything nearly as groundbreaking as the jump between v1.8 and v1.9, but it's still something, especially in the worst possible situations, such as the inventory screen in Omikron: The Nomad Soul:

Omikron: The Nomad Soul v1.9 Omikron: The Nomad Soul v1.10
Omikron_v19 Omikron_v110

Swapchain fixes and front buffer emulation

In addition to performance improvements, v1.10 also addresses various flickering issues we've had due to an oversight in our back buffer mapping logic. The new approach should also provide a bit less input latency than before, not that it is generally of much concern with these early titles anyway.

While improving things in that department, it also became apparent we were not meeting an expectation of DDraw swapchains, namely that a permanent front buffer should always retain the on screen data, and serve as a source or destination for blits. It became apparent some games were missing backgrounds during pause menus which relied on this effect, but since DXVK's D3D9 backend does not cater for this situation we had to get a bit creative and emulate our way around it.

As all good things in life, this doesn't come for free though, and implies an additional image copy, but we do need to resort to it on occasion, to ensure things are displayed as expected. An obvious example is the in-game pause screen of Warhammer: Dark Omen:

Warhammer: Dark Omen v1.9 Warhammer: Dark Omen v1.10
DO_V19 DO_v110

Fixes/additions:

  • Improved the performance of 2D heavy scenarios by skipping D3D9 image downloads of surfaces which would be overwritten during DDraw blits. This provides minor improvements is most 2D heavy games, and more impactful ones on occasion, such as in Omikron: The Nomad Soul and SCP – Containment Breach.
  • Implemented front buffer emulation, fixing missing backgrounds and camera effects in: Escape from Monkey Island, Evolva, Black & White, Tomb Raider: The Last Revelation, Tomb Raider Chronicles, Star Wars: Episode I - The Phantom Menace, Descent: FreeSpace, FreeSpace 2, Warhammer: Dark Omen and Interstate '76.
  • Thanks to @CkNoSFeRaTU, added a workaround to prevent startup crashes in Interstate '76 and Interstate '76: Nitro Pack, making both games fully playable in D3D(5) mode.
  • Also thanks to @CkNoSFeRaTU, added a workaround to fix missing geometry in COPS 2170: The Power of Law.
  • Added a workaround to fix a black screen in the Eschalon: Book I launcher (which uses D3D7).
  • Also thanks to some investigative work by @CkNoSFeRaTU, added a workaround to restore projected shadows in Expendable.
  • Fixed a regression introduced in v1.9 which could cause rendering issues with mixed D3D3-D3D5 device use.
  • Thanks to @CkNoSFeRaTU, identified and implemented a workaround to fix window creation behavior in Star Trek: The Next Generation - Klingon Honor Guard, which is now fully playable. Other early / D3D6 Unreal Engine titles may be positively impacted.
  • Fixed a rare texture upload quirk which caused minor rendering artifacts in Z.A.R.
  • Fixed various issues which prevented Powerslide both from starting at all and rendering correctly (also thanks to @CkNoSFeRaTU for fixing a minor execute buffer oversight).
  • Cleaned up logging and reduced our dependency on proxied D3D objects coming from the underlying DDraw implementation, which somewhat improves overall CPU bound performance and reduces memory overhead.

A short rant on the scalability of ancient D3D games on modern systems/GPUs

Not long ago, I ran across a forum comment expressing surprise at how poorly some of the showcased games performed and asking something in the lines of (and I'm paraphrasing): "Shouldn't these ancient games run at 50.000 FPS on modern GPUs?". The short answer to that is: "it's complicated."

You see, there are two categories of ancient D3D games:

  • a) Games developed by people who understood that in order to implement efficient 3D rendering you have to respect some basic etiquette, not stall the GPU or move data around needlessly
  • b) Everything else

Perhaps I'm a bit too harsh here, since it's true most games at the time were targeting and happy with 20-30 FPS on the hardware of their age, so doing things that would absolutely penalize performance on modern hardware like locking the back buffers repeatedly to blit (yes, blit, not render) one line of text at a time was not that great of a concern.

Games in category b) will most definitely not run "at 50.000 FPS" on any GPU, no matter how modern, simply because they were designed in a different time and played by very different rules. The good news, however, is that there are also quite a lot of category a) games out there which scale just fine on modern hardware and you can play them @8K without issues if you want, at least in theory. DDraw could never display anything above 2048x2048, as a reminder, and we honor that limit, though some patches/mods may work around it.

The bottom line is: don't expect every ancient game to scale properly, not with any wrapper or even on modern Windows, because it's not really the norm, rather the happy exception of what is a very cursed set of D3D APIs with a whole lot of DDraw (2D) baggage dragging them down. In most cases, playing these type of games at their original intended resolutions will provide the best experience (and it also comes with a bonus "retro" feel of pixel gazing).

I hope some of the newly supported titles in this release bring back good memories of the olden days, at least to some people. Until next time, I leave you with a bit of trivia from my favorite vehicular combat game: did you know Interstate '76 includes radio poetry recitals?

Don't miss a new d7vk release

NewReleases is sending notifications on new releases.