Version 0.13 - Hypnotoad
Pre-release
Pre-release
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
- Correct range check in SetRenderState to mirror native behaviour
- Fixes crash in SWTFU
- Disable the READONLY lock flag for games in the Risen series
- Fixes black rendering as they use it incorrectly
- Clamp reference counting, avoid it wrapping around
- 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