D9VK 0.40 release, providing Direct3D 9 implementation over Vulkan

Took place project release D9VK 0.40, offering Direct3D 9 implementation that operates by translating calls to the graphics API Vulkan. The project is based on the codebase of the DXVK, which has been extended to support Direct3D 9. Compared to the Direct3D 9 implementation based on WineD3D, D9VK achieves higher performance since the translation of Direct3D 9 through OpenGL is slower than through Vulkan.

D9VK can be used to run 3D applications and games on Linux using Wine. It supports running most Direct3D 9-based games that utilize Shader Model version 2 or 3. The project code is distributed is under the free Zlib license. To use D9VK, drivers supporting the Vulkan API are required, such as AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+, and AMDVLK.

Key Improvements:

  • The ability to use more than 4 GB of video memory in 32-bit applications has been implemented, which solved problems when launching Skyrim and Oblivion mods;
  • Asynchronous processing of rendered output to the screen (presentation stage) has been included. To reduce latency in the main rendering thread, output processing occurs in the command submission thread;
  • Excessive synchronization points in the command thread when retrieving requested data have been removed;
  • The code for determining internal time has been revised to use a platform-specific timer, which helped resolve issues with the incorrect behavior of high_resolution_clock from MinGW;
  • Deferred buffer unloading for MANAGED and SYSTEMMEM has been ensured before the PrepareDraw stage, addressing performance issues in the games Risen and Legend of the Heroes: Trails of the Sky;
  • Support added D3DTA_CONSTANT, which enabled the proper rendering of glow effects in the games SpinTyres and Mudrunner;
  • Improved compatibility with DirectX 9Ex (D3D9Ex). The specifics of handling ResetEx and Reset have been taken into account;
  • Code cleanup and refactoring have been conducted;
  • Direct mapping of WRITEONLY buffers has been ensured, which may positively impact performance and bypass an issue in the game
    Counter-Strike: Global Offensive, which caused continued writing to the buffer after it was unlocked;
  • Implemented method SetDialogBoxMode, allowing the use of dialog boxes in fullscreen applications;
  • Support has been implemented vertex blending, including indexed vertex blending, necessary for SWVP (SoftWare Vertex Processing);
  • The sampler counter has been revamped, displayed over the current image (heads-up display, HUD);
  • A d3d9.dialogBoxMode option has been added, which can be used to disable operation only in fullscreen mode;
  • Performance optimizations have been made, and issues that arise when launching games such as GTA: San Andreas, The Masquerade Bloodlines, Max Payne 2, The Sims 2, Silent Hunter 3, Senran Kagura Shinovi, Dungeons and Dragons, Crysis, Metal Slug X, ANGLE, Need for Speed: Carbon, and Risen 1 have been resolved.

Additionally, it can be noted intent project developer DXVK (implementation of DXGI, Direct3D 10, and Direct3D 11 over Vulkan API) to temporarily focus efforts solely on bug fixing, pausing the expansion of functionality. This desire is driven by concerns about the degradation of code quality and the complexity of maintenance in the future. Each update in the 1.4.x branch triggers complaints about regressive changes that cannot be reproduced, localized, or resolved.

These issues require investigation into their causes; otherwise, leaving them unresolved while continuing to increase functionality may only exacerbate the situation and turn maintenance into a nightmare. Among the plans that the DXVK developer intends to implement before switching to a bug-fixing-only mode is the addition of support for some useful Vulkan extensions and merging with the work of the D9VK project.

Supplement: hot on the heels of is formed the corrective release D9VK 0.40.1, which fixed the default value of COLOR0 to vec4(1) in vertex shaders and resolved the issue where the bits for shader output slots were incorrectly applied by default, thus being incorrectly corrected by the backend, causing them to be replaced with vec4(0).

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster