Is there a reason why not being able to run old games is the default?
The question is why is d7vk not part of the repos and/or included with installs by default?
D7VK is often slower than WineD3D for DDraw games. Run some benchmarks and be amazed. Also chain loading DXWrapper or dgVoodoo2 with DXVK (d3d9.dll / dxgi.dll + d3d11.dll) out performs D7VK in almost all tests I’ve ran.
D7VK is still in early development, current solutions are still better. Eventually this will change and maybe D7VK will universally be better, but DXWrapper and dgVoodoo2 have much more powerful config options than D7VK and support a wider list of DDraw/D3D8/D3D9 games.
So why force everyone to use something that isn’t actually faster? When it comes to API wrappers, it is always a case-by-case basis for which one you should use (either for performance, compatibility, or features).
As a basic list of what is out there wrapper wise:
VKD3D (ships with Wine)
D3D12 → Vulkan
VKD3D-Proton
D3D12 → Vulkan
Note1: VKD3D-Proton is separate from Wine and infinitely better than VKD3D.
Note2: Requires DXVK’s dxgi.dll to work.
WineD3D (ships with Wine)
2D/3D DDraw (D3D7 and lower) + D3D8 to D3D11 → OpenGL or Vulkan (currently an experimental backend)
Note: For 3D games, the OpenGL backend has horrible mipmap and anisotropic visual quality. The experimental Vulkan backend looks excellent but, currently, performs poorly. Use WINE_D3D_CONFIG="renderer=vulkan" to test the new Vulkan backend.
DXVK
D3D8 to D3D11 → Vulkan
Note: Usually has better game compatibility than WineD3D as well as better visual quality in 3D games. It also has easy to configure options (via dxvk.conf) that WineD3D does not provide. However, sometimes WineD3D provides better FPS. As always, profiling each is important if you are trying to get the best performance or least power draw when gaming on a laptop.
CNC-DDraw
2D DDraw → OpenGL or D3D9
Note: Works well for Starcraft I.
DXGL
2D DDraw → OpenGL
DXWrapper
2D/3D DDraw + D3D8 to D3D9 → D3D9/D3D9Ex
Note1: Has nice upscaling feature and generally works well. But dgVoodoo2 still outperforms it (mainly with lower frame times at 4k resolutions).
Note2: Can be used with WineD3D or DXVK’s d3d9.dll. In 3D games, DXVK provides better visual quality, but WineD3D provides higher FPS–but has bad mipmaps and anisotropic filtering. TL;DR chain-load DXVK for better visual quality or use WineD3D for more FPS. For 2D games there is no visual difference between D3D9 backend.
dgVoodoo2 (v2.81.3 is last working version)
GLIDE + 2D/3D DDraw + D3d8 to D3D9 → D3D11 or D3D12
Note1: Developer is hostile towards Linux and has deleted all older versions that worked with Wine out of spite. Regardless, when chain-loading DXVK, it works better than DXWrapper and D7VK. v2.81.3 can be downloaded from the Internet Archive.
Note2: Provides 64bit GLIDE DLLs for use with DOSBox. Also supports 64bit D3D9.
Note3: Use DXVK as the D3D11 backend. While you can use VKD3D-Proton as a D3D12 backend, it doesn’t perform any better than using the D3D11 backend from my testing on an RDNA3 GPU.
nGlide
GLIDE → D3D9 or Vulkan
Note1: The Vulkan backend sucks, use D3D9. Testing was done with Unreal Tournament 1999 at 1600x1200 resolution (highest the game supported) on both an Intel Xe iGPU and an AMD RDNA3 GPU, nGLide’s D3D9 output + DXVK’s d3d9.dll out performed nGlide’s native Vulkan option.
Note2: Can often be used with a DDraw wrapper of your choice, since most GLIDE games used DDraw for the main menu and switch to GLIDE when rendering the game.
openglide
GLIDE → OpenGL
Note: Basically a dead project, use dgVoodoo2 or nGlide for better performance and QoL features.
openglide-ng
GLIDE → OpenGL
Note: Very recent project looking to modernize openglide!
Game Specific Wrappers
And then there are game specific API wrappers that work much better than the above generic API wrappers.
For example Verok’s WinG / DDraw to OpenGL wrapper for Heroes of Might & Magic I, II, III, and IV games. Or Verok’s OpenGL wrapper for Disciples I and II games.
Or D2GL’s GLIDE to OpenGL wrapper for Diablo II.