The launch of the new version of project D9VK 0.40, which provides a Direct3D 9 implementation, which works through the translation of calls to the graphical API of Vulkan. The project is based on the DXVK project code base, which was extended with support for Direct3D 9. Compared to the WineD3D-based implementation of Direct9D 3, D9VK enables higher performanceas Direct3D 9 translation through OpenGL works slower than translation through Vulkan.
D9VK can be used to run 3D applications and games on Linux using Wine. Supports launch of most Direct3D 9 based games using Shader version 2 or 3.
Main news of D9VK 0.40
In this new version the ability to use more than 4 GB of video memory was implemented on 32-bit applications, which solved the issues when launching Skyrim and Oblivion game modes.
As well asynchronous processing of the rendering result output to the screen is enabled (presentation stage). To reduce delays in the main rendering sequence, output processing is done in the command dispatch thread.
In addition to that the code to determine the internal time was carried over to the use of a platform specific timer, which helped to solve problems with the incorrect behavior of high_resolution_clock by MinGW.
Pending buffers MANAGED and SYSTEMMEM were downloaded onto the stage before PrepareDraw runs, which resolved performance issues in Risen and Legend of the Heroes: Trails of the Sky.
Excessive sync points have been removed from the command flow when retrieving the requested data.
Added support for D3DTA_CONSTANT, which allowed to implement the correct representation of the glow effect in games SpinTyres and Mudrunner.
In the ad, also it is noted that performance optimizations were made and the problems that appear when launching different games have been solved.
Of the other changes that stand out from this new version, we can find:
- Improved DirectX 9Ex (D3D9Ex) support. He considered the details of the ResetEx and Reset processing.
- The code was cleaned up and refactored.
- Direct mapping of WRITEONLY buffers is provided, which can positively affect performance and prevent crash in Counter-Strike: Global Offensive game, leading to continuous recording to the buffer after it is unlocked.
- I implemented the SetDialogBoxMode method, which allows to use dialog boxes in full screen applications.
- Implemented support for vertex blending, including the indexed vertex blending required for SWVP (SoftWare Vertex Processing).
- The sample counter displayed on top of the current image (display screen, HUD) has been changed.
- Added option d3d9.dialogBoxMode, which can be used to disable the job only in full screen mode.
In addition, the intention of the project developer can be observed DXVK for a while to concentrate efforts only on correcting mistakes, slowing down the expansion of functionality. This wish was caused by fears about a decline in quality code base and future maintenance complications.
Each update to the 1.4.x branch generates complaints about regressive changes that cannot be reproduced, located and removed.
These problems require an analysis of the causes of their appearance, otherwise, leaving them uncorrected while you continue to develop the functionality can only aggravate the situation and turn the maintenance process into a nightmare.
From the plans that the DXVK developer intend to deploy before switching to bug fix mode only, they say to add support for some useful Vulkan extensions and merge with the developments from the D9VK project.
For those who are interested in knowing more about it, they can find the code as well as the details of this new version can be found In the following link.