github WinterSnowfall/d7vk v1.7
Version 1.7

8 hours ago

If you were to think there are some aspects of the D3D API which have remained mostly unchanged since early D3D up to D3D9, then you'd be right. It was this very fact that has allowed our rather steady progress of older and older API adoption. However, not everything played along. One area of clear divergence we've started digging into, and is now a featured part of v1.7, are legacy (D3D6 and earlier) vertex transformations, clipping and lighting.

The previously dark planets and units in O.R.B: Off-World Resource Base are now beautifully lit. Other games making use of legacy fixed function lighting aren't that "lucky" and still need some further work, so we're not all the way there yet.

On the sidelines, after some tinkering in the realm of games which have been broken for quite some time on Linux/Wine (as always, with the help of @CkNoSFeRaTU), we've found the means/workarounds to make some titles playable, such as Requiem: Avenging Angel and Warhammer: Dark Omen.

O.R.B: Off-World Resource Base Requiem: Avenging Angel
O R B Requiem

Fixes/additions:

  • Implemented legacy fixed function light attenuation for D3D6 and earlier.
  • Thanks to @CkNoSFeRaTU, viewport transformations, clipping as well as D3D3 execute buffer transforms are also implemented, with a few remaining features to be ironed out in the future. This means quite a few early D3D3 and later titles are now in a somewhat playable state, for example Resident Evil, Revenant, Forsaken and many others.
  • Worked around an iClassFactory initialization quirk to make Requiem: Avenging Angel happy, to the point where it starts up properly instead of complaining about missing D3D support.
  • Thanks to @CkNoSFeRaTU, implemented a blit-instead-of-flip presentation workaround which happens to be very useful for handling the particularly odd way Warhammer: Dark Omen goes about setting up its presentation swapchain. It will now play back intros and gameplay just fine, instead of only a black screen. Note that the game is still affected by several Wine surface blit bugs, which cause missing/flipped menu elements.
  • Vastly improved the reference counting situation, which may ultimately help with Windows compatibility. Mind you, Windows is still an unofficially supported platform that gets absolutely no testing with D7VK, so your mileage may vary.
  • Fixed an oversight which prevented proper video memory reporting on GPUs with less than 2GB of VRAM and some iGPUs.
  • Added a minimal ComputeSphereVisibility implementation, enough to get Space Empires V going (thanks to @Duneathor).
  • Fixed a D3D6 viewport clear problem which affected sky color in Need For Speed III: Hot Pursuit (with the modern patch), thanks again to @CkNoSFeRaTU's investigative skills.
  • Fixed several obscure device teardown issues which caused crashes on game exit in Incoming.
  • Fixed missing 2D backgrounds in Return to Krondor.
  • Reworked D7VK's D3D9 backend modifications in order to play nicely with the existing D3D8/9 implementation, for concurrent use. This has streamlined the integration between D7VK and DXVK code, and opened up a way for... downstreaming (of sorts)! Read the next section for more information on that angle.

Upstreaming? No. Downstreaming? Yes!

Thanks to efforts by @pythonlover02, D7VK has been backported to DXVK-Sarek. This is good news for anyone still using an only Vulkan 1.1/1.2 capable GPU, most notably Nvidia Kepler cards, or older generations of Intel iGPUs. Mind you, performance on that kind of hardware won't be exceptional anyway, but it will most likely be enough for D3D7 and earlier D3D APIs.

Apart from some missing features, which sadly aren't supported by Sarek's aging DXVK backend, you are getting all the bells and whistles D7VK has to offer. Impressively, DXVK-Sarek now supports everything from D3D3 up to D3D11.

Before you get too excited, it's probably best to wait for the next DXVK-Sarek release before giving it a go, because some backport enhancements and quality of life improvements are still underway, now that I've started actively looking into it as well. You'll be happy to hear DXVK-Sarek is also getting a backport of the latest legacy lighting model work, a rewrite on top of DXVK's legacy shader compiler.

Here are a couple of screenshots taken with the in-flight backport code:

DXVK-Sarek - Sacrifice DXVK-Sarek - Codename: Outbreak
Sarek-Sacrifice Sarek-Outbreak

It's lovely to see these old games workable on even older Vulkan-capable hardware, and thanks again to @pythonlover02 for his work in maintaining DXVK-Sarek and his openness and support in backporting these ancient APIs.

Have fun with the new release, and remember to report any problems you stumble into, especially if you've giving D7VK a go with any obscure/hard to obtain games that have flown under our radar so far.

Don't miss a new d7vk release

NewReleases is sending notifications on new releases.