Version 0.12 - Cool Lookin' Blue Frog
Pre-release
Pre-release
Hi! I'm happy and pleased to release version 0.12 for all you froggos out there 🐸 ❤️ 😄
Hope you enjoy, ribbit! 🐸
Features
Improved Performance
- Entirely rewritten texture code
- Should be faster in every instance and correct some memory errors.
- SystemMem textures are system-mem only and have no image, copies to real textures (ie. DEFAULT) are done when needed, reducing video memory and improving performance.
- Refactored and rewritten presentation and swapchain code
- Includes support for vsync + proper fullscreen w/ mode setting. Fixes other issues also.
- Contiguous surface allocation
- Improves stuttering in games which spam and abuse CreateTexture (eg. A Hat in Time, League of Legends)
- Improve determining when we should wait on textures.
- Optimized image views by avoiding creating duplicates and instead dually referencing existing ones if SRGB formats do not exist for the given D3D9 format.
New Features
- Build
- You can now choose what modules to build, if you so desire.
- Queries
- Minor query optimisations
- Implement D3DQUERYTYPE_VERTEXSTATS
- Alpha to Coverage
- Supports both the AMD/NV driver hacks
- Fixes hair in Final Fantasy [some roman numeral].
- May improve appearance of other games also
- Cursor Position Setting
- The cursor position is correctly set/flushed when the application desires (immediate or at Present time)
- Partial support for Presentation Rects
- Fixes the fact that A Hat in Time doesn't recreate its backbuffer when making the resolution go down. (pls fix devs ❤️)
- Resolve Z
- The AMD resolve-z hack has been implemented.
- Initial Data
- Added support for CreateTexture InitialData in the shared handle for D3DPOOL_SYSTEMMEM.
- Fixes CS:GO
- GDI Interop
- There is now experimental support for GetDC/ReleaseDC.
- Version Info
- Correct version info is now reported in the DLL, this should satisfy some anti-cheats.
- GetStreamSourceFreq got implemented (by Rhedox)
- Basic support for D3D9Ex
Bug Fixes
- D3D9
- We now hold a reference to the auto depth stencil created by device Reset, some applications depended on this (ie. Gothic III)
- Minor query fixes
- Fixes for initializing both regular and lazy alloced resources
- Fixes "punch card" issue in The Sims 3
- Fix for stride returned for ATI1/2 formats not respecting Mip
- Don't apply view sample swizzle on depth views (fixes some validation errors)
- Fixed vsync + fullscreen issues
- Corrected some cursor bugs where it would vanish in, for eg. GW2
- In theory, some OOM issues may be corrected.
- Fixed R8G8B8 fixup not working properly in some instances.
- Fix mode order being incorrect.
- Some extra undocumented interfaces are now stubbed and exposed (ie. Direct3DCreateShaderValidator9, PGSPError, etc)
- Corrected refcounting for surfaces and fixed a bug where sometimes invalid memory would be used/deleted there.
- Fixed a bug where UpdateSurface would pass an incorrect extent to Vk.
- Fixed a bug where RestoreDisplayMode would fail
- Fixed FP precision being set invalidly on x64 MSVC builds.
- Fixes for multisample state not being bound in some instances causing no rendering.
- DXSO (Shaders)
- Fixed a GPU hang in some games on RADV. This has been fixed with discard deferral.
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