Skip to content

Releases: AlpyneDreams/d8vk

Version 1.0 - Croaka-Cola Classic 🟥 🐸

10 May 07:32
d8vk-v1.0
e1df54c
Compare
Choose a tag to compare
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

Version 0.10 - New Croak 🆕 🐸

06 Dec 15:48
d8vk-v0.10
Compare
Choose a tag to compare
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

Notes

  • For now, it is required to install both d3d8.dll and d3d9.dll in the same place for d8vk to work. You must use the d3d9.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

26 Jul 21:30
Compare
Choose a tag to compare
Pre-release

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.