Releases: AlpyneDreams/d8vk
Version 1.0 - Croaka-Cola Classic 🟥 🐸
Our pattern of exponential (more like left shift) growth in version number continues. Version 1.0 is the definitive release of d8vk with the widest possible support for Direct3D 8 games and apps on Linux. This is the first production-ready release of d8vk that has been tested against many hundreds of games with better performance and compatibility than is possible with WineD3D or d3d8to9. See benchmarks below for concrete performance metrics.
If you encounter any issues (minor or major) on any games at all, please report a bug!
Screenshots: The Elder Scrolls III: Morrowind, 3D Mark 2001 SE. Usually 1000+ FPS, but these have 8x MSAA.
Changes
- Single combined
d3d8.dll
(d3d9 is statically linked) - New custom batcher for certain drawcall-heavy games
- Support overriding vertex shader declaration for games with undefined behavior
- Vertex buffers may now be stored in the managed pool automatically for improved performance and to prevent write ordering issues
- Implemented
bem
instruction - Support compiling on MSVC
- Correct surface desc sizes based on format
- State block types are now supported and should capture the relevant state
- Allow preserving current Proton installation by @Sid127 in #51
- Support GetInfo queries
- Countless game-specific configurations and minor features and tweaks
Bug Fixes
- Fixed a bug where CreateTexture would try to wrap a null texture
- Always use at least one backbuffer by @WinterSnowfall in #91
- Fixed backbuffers not being cached or referenced by the owning device
- Fixed textures, streams, and indices not clearing on reset
- Red Faction: Disable direct buffer mapping by @WinterSnowfall in #96
- Fixed location of Direct3DCreate8 in d3d8.def
- Fixed ref counting for rendertargets, depth stencils, and textures.
- Fixed null pixel shaders not being remembered
- Fixed rendertargets and depth stencils not being cached
- Fixed error if the client tries to enable SWVP on a hardware device
- Fixed devices not being freed
- Fixed segfault on freeing device with bound textures
- Countless other fixes...
Benchmarks - 3DMark 2001 SE
Implementation | WineD3D | d3d8to9 + dxvk (2.1) | d8vk |
---|---|---|---|
Score | 97134 | 118033 | 144660 |
Car Chase - Low | 1409.1 fps | 2075.5 fps | 2017.5 fps |
Car Chase - High | 352.1 fps | 148.9 fps | 553.8 fps |
Dragothic - Low | 1510.4 fps | 1853.3 fps | 2016.9 fps |
Dragothic - High | 807.6 fps | 792.3 fps | 1167.4 fps |
Lobby - Low | 1278.5 fps | 1528.5 fps | 1545.7 fps |
Lobby - High | 585.6 fps | 523.3 fps | 778.4 fps |
Nature | 1012.4 fps | 1708.6 fps | 1943.4 fps |
Fill Rate - Single Texture | 80163.2 MTexels/s | 64208.1 MTexels/s | 62904.5 MTexels/s |
Fill Rate - Multitexturing | 159903.7 MTexels/s | 97900.4 MTexels/s | 96772.7 MTexels/s |
High Poly Count (1 light) | 1335.1 MTris/s | 2217.0 MTris/s | 2375.5 MTris/s |
High Poly Count (8 lights) | 1267.6 MTris/s | 2092.4 MTris/s | 1853.5 MTris/s |
Environment Bump Mapping | 526.9 fps | 1430.8 fps | 2333.4 fps |
DOT3 (Normal) Mapping | 2025.1 fps | 1608.9 fps | 2331.6 fps |
Vertex Shader | 727.2 fps | 788.7 fps | 846.9 fps |
Pixel Shader | 1220.9 fps | 1059.8 fps | 1337.1 fps |
"Advanced" Pixel Shader | 4066.1 fps | 2808.6 fps (broken) | 2544.7 fps |
Point Sprites | 1193.9 MSprites/s | 1071.4 MSprites/s | 987.5 MSprites/s |
Default settings, except textures set to 32-bit due to a Wine bug / RTX 3080 Ti Laptop / Run in a Wine Desktop window on GNOME with background apps, so performance is somewhat variable. I've seen higher numbers than even these.
Notes
- You no longer need to install
d3d9.dll
for d8vk to work. - DXVK-Native builds (#15) are unfortunately not yet available.
New Acknowledgements
- @WinterSnowfall for their continued dedication to assist with this project
- @mrdeathjr28 for testing numerous games
- @Sid127 for revamping the installation script
Acknowledgements
- @Joshua-Ashton for creating DXVK's D3D9 frontend (a.k.a d9vk) and providing infinite support <3
- @doitsujin for creating DXVK, including the DXVK backend
- @WinterSnowfall, @Blisto91, Esdras Tarsis, @K0bin, @CME42, @TheComputerGuy96, for their extensive contributions and assistance
- Everyone in the Linux Gaming Dev Discord server who helped with testing, QA, and community stuff
- Everyone who's tried out d8vk and submitted issues or feedback. Thanks immensely for your help! We couldn't do it without you.
- Big thanks to everyone who's worked on other implementations of d3d8, including:
And remember to have fun!
Thank you all,
Jeff
Version 0.10 - New Croak 🆕 🐸
Catch the wave.
I am extremely pleased to announce the first pre-release Linux build of d8vk.
This build is currently based off of the latest master of dxvk v2.0. Dozens of games already work to differing extents, including a few highlights:
- The Elder Scrolls III: Morrowind
- Grand Theft Auto III
- Grand Theft Auto: Vice City
- Postal 2
- Silent Hill 2
- Silent Hill 3
- Deus Ex: Invisible War
- Splinter Cell
- Hotline Miami
- Scrapland Remastered
- The Simpsons: Hit & Run
- Indiana Jones and the Emperor's Tomb
- And many, many, more...
These games are very likely (not 100% guaranteed) to work without major issues on Linux. Proton is recommended but not required. Games not listed as supported may still work, but you'll have to test them. Do note, this is a pre-release.
If you encounter any issues (minor or major) on any games at all, please open an issue!
Features
- Comprehensive d3d8 API coverage
- Significant performance, compatibility, and stability improvements over WineD3D for supported games
- Significant performance and reliability improvements over dgVoodoo2 and d3d8to9
- For example,
- Complex CPU blits for CopyRects
- Shader translation extensions in both d3d8 and d3d9
- Shiny new vendor hacks!
- So much more!
Notes
- For now, it is required to install both
d3d8.dll
andd3d9.dll
in the same place for d8vk to work. You must use thed3d9.dll
that comes with the d8vk release, not one from upstream dxvk.- This is similar to how d3d10 and 11 work already, but building a single d3d8 dll (#19) is planned as a possible feature in the future.
- This is a Linux build only. Windows builds are not currently functional (#72). DXVK-Native builds (#15) are also not yet available.
- Windows builds will be included in a future release.
Edit (12/6): The binaries have been rebuilt with debug symbols stripped from d3d9.dll. Although not expected, if you have any performance issues try redownloading from here.
Acknowledgements
- @Joshua-Ashton for creating DXVK's D3D9 frontend (a.k.a d9vk) and providing infinite support <3
- @doitsujin for creating DXVK, including the DXVK backend
- @WinterSnowfall, @Blisto91, Esdras Tarsis, @K0bin, @CME42 for their extensive contributions and assistance
- Everyone in the Linux Gaming Dev Discord server who helped with testing, QA, and community stuff
- Everyone who's tried out d8vk and submitted issues or feedback. Thanks immensely for your help! We couldn't do it without you.
- Big thanks to everyone who's worked on other implementations of d3d8, including:
And remember to have fun!
Thank you all,
Jeff
Version 0.1.0 - Win32 Test
Warning: This version if highly outdated. If you want the latest builds, then check out the latest Linux artefacts.
Do not report bugs for this version!
This is the very first release of d8vk. Currently only a win32 test build is available; Linux binaries will be coming soon. It should be able to play most DX8 demos, and games such as Metal Gear Solid 2 (pictured below) with reasonable performance.
Note: Extract BOTH d3d8.dll
AND d3d9.dll
to the folder for the game/program you're running.