A new version of D9VK, a Vulkan-based DirectX 9 translation layer for WINE based on DXVK has been released
Ribbit, here is 0.13 for you all. It's been a while since we marked a stable release ????
???????? Hypnotoad commands you to download! ????????
Features
Implemented fixed function
Includes everything except lighting, texcoord transforms, spheremap texcoords and constant texture arg.
Works well enough for most games if you can deal with with them being fullbright.
Better fallback for D16_S8, going to D24_S8 if it is not supported rather than D32
Implemented GetGammaRamp
Implemented ColorFill
Added a way to workaround resource hazards
d3d9.hasHazards = True to enable hazard checks -- only necessary on AMD
Implemented disjointed timestamp queries
Implemented Hardware Cursor support (for games like old WoW and Guild 2)
Implemented implicit samplers for PS 1.x (ie. cubemaps/volume textures)
Respect ordinal indices for exports of the DLL (may help with some anti cheats or older games)
** Better Performance**
Use a push constant for the Alpha Test Reference
Only dirty a clip plane if it is enabled
Avoid redundant vertex buffer changes (@doitsujin)
Offload input layout creation to command stream (@doitsujin)
Only update input assembly state if necessary (@doitsujin)
Avoid referencing dxvk device in BindSamplers
Constant uploading optimizations (via. ranges & dirtying)
Implemented async. presentation
Avoid some unnecessary syncs with CS thread
Use new DXVK signals as frame sync events
Enabled early discard for ACO compiler
Bug Fixes
D3D9
Clamp reference counting, avoid it wrapping around
Fixes a crash in Star Wars: The Force Unleashed
Use a private reference for auto depth stencil
Fixes another crash in Star Wars: The Force Unleashed
Normalized floating point inputs given to us (ie. remove NaNs)
Fixes a glowy man in Mass Effect: 2
Fixed a bug in GDI code where things would not be updated after being modified
Fixed the range of returned elements in GetDeclaration
Fixes a bug in Assassin's Creed
Correct mip view indices for framebuffer
Fixes black rendering in Lego Star Wars Saga
Normalize mipmapLodBias in range -15.0f to 15.0f and round to nearest .5
Avoids invalid state and stops runaway pipeline creation for games that using mip fading (a better solution instead of rounding would be good here)
Fix fast path for StretchRect occasionally firing when it shouldn't
Fixes wacky colours in GTA: SA
Use BC2 for DXT2 rather than BC1 which was incorrect
Fix crash on SWVP shaders
DXSO (Shaders)
Fixed a bug when parsing shaders that used relative indices for control flow ops.
Account for header token in bytecode size
Fixes games that readback their own shaders
Correct EXPP implementation
Fixes spots in HDR in TESIV: Oblivion, Fallout Series
Correct LIT implementation
Notes
Please do not use wine's d3d9x or d3dcompiler with d9vk. They make invalid API calls and generate bad shaders. I cannot stress this enough.
If you are compiling with MinGW, please use the dwarf2 exception patch to improve performance.
Acknowledgements
ドイツ人 (doitsujin): for creating the base of the project, DXVK
Rhedox and CME: for helping with debugging
VKx and Frog Family Discords: for helping with testing
Thank you and Enjoy!