D7VK continues to mature its Direct3D 7, 6, 5 and three to Vulkan translation, to deliver enhancements for retro Home windows video games with Wine / Proton on Linux.
The most recent launched version 2.1 had a pleasant deal with optimizing loading occasions for varied video games, with the developer noting “Some titles can see a huge impact, with loading occasions lower in half or extra… that being stated, they weren’t usually an issue in early D3D to start with”.
Moreover they famous that they are reaching the stage of diminishing returns, however the code is now “much more manageable and maintainable because of this, although there are not any significantly flashy efficiency jumps to showcase this time”.

Pictured – Empire Earth: The Artwork of Conquest
- Diminished the overhead of object creation (by trimming down lifecycle monitoring), which has improved loading/startup occasions total, with a visual influence in a wide range of video games, throughout all supported APIs.
- Mounted a use-after-free bug on connected depth stencil floor launch, which, unusually, was solely hit with MSVC/clang compiled binaries (due to @NemesisElectron for bringing it to my consideration). This has mounted a crash on startup in Arx Fatalis.
- Added an non-compulsory direct path for
GetDC/ReleaseDCcalls, which could enhance efficiency in video games which might be heavy customers of such calls. Word that this path additionally has the potential to sluggish issues down much more, relying on what the sport does, so your mileage might range. Whereas a rise of FPS in Arx Fatalis has been noticed throughout gameplay, by about 5-10%, it sadly comes with a noticeable efficiency drop when rendering the primary menu. A traditional instance of “you’ll be able to’t have your cake and eat it too“. - Added an optimistic path for the early initialization of D3D7/6 vertex buffers, which eliminates any frametime spikes on preliminary object entry. This, nonetheless, is not all the time doable, so it is an optimization fully depending on sport habits.
- Additional optimized logging use to scale back CPU overhead and the general reminiscence footprint, this time with little to no influence on benchmarks (it may have a constructive influence on efficiency in CPU restricted situations on (very) sluggish CPUs).
- Barely improved the efficiency of floor uploads/downloads, in addition to devised a couple of extra tips to disregard unnecessary transfers in sure circumstances. This yields a minor, however noticeable efficiency enhance in Blade of Darkness, Knight Rider, Silent Hunter II and probably different titles when “god rays” are rendered.
- Tweaked DDraw objects and helper libraries to have much less of an overhead when D7VK acts as a easy forwarding proxy to DDraw. That is primarily geared toward DDraw-only video games which shall be forwarded to WineD3D/Home windows native DDraw fully, however D7VK D3D-related DDraw operations will even profit from barely much less overhead because of this.
- Added an alternate pixel heart config possibility, together with a hard and fast operate implementation, which has mounted background picture artifacts in Resident Evil 2 (retail launch). The choice will, for any sensible function, act just like the equally named historic ATI/Nvidia driver possibility from the Home windows 9x/XP period, shifting pixel heart alignment by half a texel. Word that there is not any cause to make use of the workaround exterior of identified misbehaving purposes, because it WILL trigger artifacting, particularly on any rendered textual content.
- Improved total efficiency in Venture I.G.I. and Sonic World DX by utilizing managed vertex buffers.
- Labored round suboptimal buffer entry patterns in Empire Earth (:The Artwork of Conquest), enhancing CPU-bound efficiency when a variety of items are in view.
- Labored round lacking foremost menu backgrounds in MechWarrior 3.
- Due to @CkNoSFeRaTU, we now have non-SSE2 ProcessVertices() fallback helpers, that are used when compiling for ARM architectures. They’re identified to be slower and have solely been launched for comparative testing or an in any other case academical function (there aren’t any ARM-native DDraw video games, after all).
- Mounted a bug which triggered DDraw floor description corrections to be utilized erroneously, which in flip may need triggered improper floor kind/format mappings within the DXVK backend.
- Added assist for
R3G3B28-bit colour surfaces, due to @CkNoSFeRaTU. That is saved disabled by default, nonetheless, as most often a scarcity of assist forces video games to change to 16-bit colour codecs, which improves picture high quality. A second cause for conserving it disabled is the truth that such surfaces can outright fail on creation in sure circumstances, as a result of a WineD3D limitation. - Prolonged the 8-bit mode masking config choice to filter out any 8-bit colour modes reported by DDraw throughout show mode enumeration.
- Optimized gadget cap(skills) struct copies and caching, together with gadget enumeration, which improves efficiency in circumstances the place video games abuse such calls. This has decreased the preliminary startup time in Empire Earth (as much as intro playback) to about one second, down from 3-4 seconds.
🌐 Exterior Sources: GitHub – d7vk – v2.1
