Version 0.21 - Lollihop
Pre-release
Pre-release
I know, the pun really sucks 🍭🐸
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