Skip to content

Version 1.0 - Croaka-Cola Classic 🟥 🐸

Latest
Compare
Choose a tag to compare
@AlpyneDreams AlpyneDreams released this 10 May 07:32
· 800 commits to main since this release
d8vk-v1.0
e1df54c
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!

Elder Scrolls 3  Morrowind Screenshot3DMark01 Screenshot - Dragothic3DMark01 Screenshot - High Poly3DMark01 Screenshot - Water

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

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