github WinterSnowfall/d7vk v1.2
Version 1.2

11 hours ago

This release improves support for the D3D6 frontend, while fixing up and adding features on top of the existing D3D7 implementation, and, since D3D6 is... a bit less experimental now, something had to take its place. Do peak at the spoiler below, that is, in case you haven't been following the recent commit history:

Ancient D3D secret Carma2

Don't get too excited though, because this D3D archeological expedition has reached its final stopping point. Even with D3D6/5 we are firmly in the land of diminishing returns, where most games offer better rendering capabilities on Glide, aren't even working at all in Wine due to various cursed reasons which are unrelated to graphics, or are simply doing things so cursed that there's no plausible approach for supporting them in D7VK.

For more details on the D3D6-related work, check out the highlights section below.

Fixes/additions:

  • A somewhat fundamental rewrite of our DDraw wrapping logic, which was needed because I did not anticipate adding support for earlier APIs when I started this project, and everything was an absolute mess. The end effect is transparent to end users, albeit it does come with the side effect of better memory management. Granted, memory pressure has never been a problem in the context of these early APIs.
  • Added an alternative deployment option for Wine/Linux which allows some stubborn games to load D7VK from the system path, as they would otherwise ignore it. More details can be found in the readme. Note that this will NOT work on Windows.
  • Fixed device capability reporting, which allows Conquest: Frontier Wars to properly detect D3D7 support and enables in-game resolution switching.
  • Added a vertex processing workaround which helps 1NSANE get full levels of performance regardless of T&L HAL/HAL device choice.
  • The Need for Speed III: Hot Pursuit and Need For Speed: High Stakes modern patch now fully works with D7VK, both with its D3D7 and D3D6 renderers, both of which offer better capability support than the D3D8 renderer (lack of fogging being the most obvious gripe in the latter).
  • Added an IClassFactory implementation for DDraw since some games (mainly D3D6/5 titles) were relying on it to properly instantiate DirectDraw (for whatever odd design choice) and crashed on startup otherwise.
  • Various compatibility fixes to get 3DMark 99 Max in working order out of the box (you need no "modern patch/ fixed exe" with D7VK now), see #66 . Thanks to @archeYR for that bit of investigative work.

And now, a word from our new "sponsor", D3D6:

The biggest motivation for adding D3D6 support, by far, was Drakan: Order of the Flame , as I am a big fan of the series and have both the PC original in retail box and the PS2 exclusive sequel in its jewelcase sitting on a display stand in my living room.

I've already played quite a bit of the game with D7VK (or D6VK, if you will), as you'll see in the below screenshot showcase, and, outside of some minor issues like the lack of savegame screenshots and pause menu backgrounds (both of which are inherent limitations, sadly), it works beautifully.

Before we get into actual games, there's the obligatory, yet somewhat irrelevant, benchmarking to get out of the way. Irrelevant because 3DMark 99 Max is VSync capped by default, and there's no way to disable it with WineD3D (or, at least I'm not aware of one). I have however disabled VSync in D7VK via a builtin config option, so you all can now heat up your rooms by throwing modern GPUs at it, heh. Here are the results on my Nvidia RTX 4070:

D7VK v1.2 (VSync) WineD3D (VSync) D7VK v1.2
DXVK WineD3D D7VK_MAX

Drakan isn't, of course, the only noteworthy D3D6 title in existence, so, while testing the release, I've put together a showcase of what works well at this point:

Drakan: Order of the Flame Drakan
Battlezone II: Combat Commander Battlezone 2
Earth 2150 LostSouls
Expendable Expendable
Rayman 2: The Great Escape Rayman2
Tomb Raider: Chronicles TRChronicles
Indiana Jones and the Infernal Machine IJTIF
Star Wars: Rogue Squadron SWRogueSQ
Tachyon: The Fringe Tachyon
Arabian Nights ArabianNights
Panzer Elite Panzer Elite

And now, to the bugfixmobile, because there are plenty of things still in need of fixing.

I know I've complained about the lack of tooling for these early APIs, and that still mostly holds true save for the brave efforts of @CkNoSFeRaTU, who's been working on bringing the apitrace support for early D3D and DDraw in a decent shape, and adding replay and inspection capabilities for them. By all means, investigating what goes wrong in most cases is still challenging, but now at least a technical possibility.

Don't miss a new d7vk release

NewReleases is sending notifications on new releases.