Software 42327 Published by

A new version of D9VK, a Vulkan-based DirectX 9 translation layer for WINE based on DXVK has been released



Features
D3D9

Implemented D3DBLEND_BOTHSRCALPHA
Implemented D3DBLEND_BOTHINVSRCALPHA
Implemented locking of MSAA images with intermediate resolve (invalid behaviour in d3d9 docs, but everyone supports this)
Implemented locking of depth stencil images (and MSAA depth stencil images)
Implemented video formats YUV2 and YUVY via. compute shader
Implemented extended constant set when software vertex processing is enabled
Minor performance improvements

DXSO

Implemented TexM3x3Spec
Implemented TexM3x3VSpec
Implemented constant bounds checking (fixes vert. explosions in The Witcher 2) by @doitsujin

Fixed Function

Implemented D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR
Implemented D3DTSS_TCI_SPHEREMAP
Use unresolved arguments for fastpath decision, may improve performance

Bug Fixes
D3D9

Made ProcessVertices support optional (fixes D9VK on Haswell)
Fixed texture offsets and alignments when locking block compressed textures
Fixed a bug in UpdateSurface where block compressed textures had incorrect copy offsets
Fixed a crash when calling SetLOD on a D3DPOOL_SYSTEMMEM image
Handle degenerate present regions (fixes a crash when playing a recent version of A Hat in Time)
Set scissor to viewport (fixes minimap in GTA IV)
Removed pointer initialization in CreateVertexShader (matches native behaviour, fixes a crash in The Witcher)
Fixed the texture (and not the mip) extent being used in ColorFill on full surfaces
Fixed src/dst subresource being confused in GetRenderTargetData (fixes cars in GRID)
Report NOTAVAILABLE rather than INVALIDCALL for unavailable sample counts
Fixed uploads of partial locking of buffers -- some games go OOB
Removed unbinding for mismatching rt/ds extents (introduces regressions)
Fully wait in GetRenderTargetData for it to complete (fixes rthdribl 2.0 demo)
Fixed black walls in Serious Sam 2 (improved border color normalization)

DXSO

Always export COLOR0 and COLOR1 in vertex shaders (fixes rendering errors in some fixed func. games)

Fixed Function

Ensured normalize(0) -> 0 in fixed function (@CME42 fixes a bug in fr-030 demo)
Fixed a bug where fixed function shaders were generating incorrect keys
Handled color/alpha write special case behaviour for D3DTOP_DOTPRODUCT3
Fixed some minor validation errors and a bug where some fixed function shaders were using features not exposed in GLSL
Ignore texcoord count given to API when special transform flags are used.
Respect count for texture projection, rather than use the image count
Workaround for an Nvidia bug where they were using the incorrect value for projection
Fixed bias in D3DTOP_DOTPRODUCT3

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
  D9VK 0.21 released