Difference between revisions of "Wrappers"

From Emulation General Wiki
Jump to navigation Jump to search
m
m (Added icons)
Line 16: Line 16:
 
|-
 
|-
 
|[http://www.zeus-software.com/downloads/nglide nGlide]
 
|[http://www.zeus-software.com/downloads/nglide nGlide]
|Windows
+
|align=left|{{Icon|Windows}}
 
|[http://www.zeus-software.com/downloads/nglide 2.10]
 
|[http://www.zeus-software.com/downloads/nglide 2.10]
 
|Glide
 
|Glide
Line 23: Line 23:
 
|-
 
|-
 
|[http://dege.freeweb.hu/ dgVoodoo 2]
 
|[http://dege.freeweb.hu/ dgVoodoo 2]
|Windows
+
|align=left|{{Icon|Windows}}
 
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2.html 2.62.3]
 
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2.html 2.62.3]
 
|Glide, DirectX 1-9
 
|Glide, DirectX 1-9
Line 30: Line 30:
 
|-
 
|-
 
|[[Wine|WineD3D]]
 
|[[Wine|WineD3D]]
|Windows, Linux, macOS
+
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br /> [https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}] <small>Windows</small>
 
|[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br /> [https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}] <small>Windows</small>
 
|DirectX 1-11
 
|DirectX 1-11
Line 37: Line 37:
 
|-
 
|-
 
|[https://www.dxgl.org/ DXGL]
 
|[https://www.dxgl.org/ DXGL]
|Windows
+
|align=left|{{Icon|Windows}}
 
|[https://www.dxgl.org/downloads/ 0.5.17]
 
|[https://www.dxgl.org/downloads/ 0.5.17]
 
|DirectX 1-7
 
|DirectX 1-7
Line 44: Line 44:
 
|-
 
|-
 
|[http://www.glidos.net/ Glidos]
 
|[http://www.glidos.net/ Glidos]
|Windows
+
|align=left|{{Icon|Windows}}
 
|[http://www.glidos.net/download.html 1.53b]
 
|[http://www.glidos.net/download.html 1.53b]
 
|Glide <small>(DOS)</small>
 
|Glide <small>(DOS)</small>
Line 51: Line 51:
 
|-
 
|-
 
|[http://openglide.sourceforge.net/ OpenGlide]
 
|[http://openglide.sourceforge.net/ OpenGlide]
|Windows
+
|align=left|{{Icon|Windows}}
 
|[https://sourceforge.net/projects/openglide/files/latest/download 0.09 Alpha]
 
|[https://sourceforge.net/projects/openglide/files/latest/download 0.09 Alpha]
 
|Glide
 
|Glide
Line 58: Line 58:
 
|-
 
|-
 
|[https://sourceforge.net/projects/psvoodoo/ psVoodoo]
 
|[https://sourceforge.net/projects/psvoodoo/ psVoodoo]
|Windows
+
|align=left|{{Icon|Windows}}
 
|[https://sourceforge.net/projects/psvoodoo/files/latest/download 0.13]
 
|[https://sourceforge.net/projects/psvoodoo/files/latest/download 0.13]
 
|Glide
 
|Glide
Line 91: Line 91:
 
|-
 
|-
 
|[https://github.com/doitsujin/dxvk DXVK]
 
|[https://github.com/doitsujin/dxvk DXVK]
|Linux
+
|align=left|{{Icon|Linux}}
 
|[https://github.com/doitsujin/dxvk/releases 1.5]
 
|[https://github.com/doitsujin/dxvk/releases 1.5]
 
|Direct3D 9-11
 
|Direct3D 9-11
Line 98: Line 98:
 
|-
 
|-
 
|[[Wine|WineD3D]]
 
|[[Wine|WineD3D]]
|Windows, Linux, macOS
+
|align=left|{{Icon|Windows|Linux|macOS}}
 
|[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br /> [https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}]  <small>Windows</small>
 
|[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br /> [https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}]  <small>Windows</small>
 
|Direct3D 1-11
 
|Direct3D 1-11
Line 105: Line 105:
 
|-
 
|-
 
|[https://github.com/iXit/wine-nine-standalone Gallium Nine]
 
|[https://github.com/iXit/wine-nine-standalone Gallium Nine]
|Linux
+
|align=left|{{Icon|Linux}}
 
|[https://github.com/iXit/wine-nine-standalone 0.5]
 
|[https://github.com/iXit/wine-nine-standalone 0.5]
 
|Direct3D 9
 
|Direct3D 9
Line 112: Line 112:
 
|-
 
|-
 
|[https://source.winehq.org/git/vkd3d.git/ vkd3d]
 
|[https://source.winehq.org/git/vkd3d.git/ vkd3d]
|Linux
+
|align=left|{{Icon|Linux}}
 
|[https://source.winehq.org/git/vkd3d.git/ 1.1]
 
|[https://source.winehq.org/git/vkd3d.git/ 1.1]
 
|Direct3D 12
 
|Direct3D 12
Line 119: Line 119:
 
|-
 
|-
 
|[https://github.com/KhronosGroup/MoltenVK MoltenVK]
 
|[https://github.com/KhronosGroup/MoltenVK MoltenVK]
|macOS, iOS
+
|align=left|{{Icon|macOS|iOS}}
 
|[https://github.com/KhronosGroup/MoltenVK/releases 1.0.39]
 
|[https://github.com/KhronosGroup/MoltenVK/releases 1.0.39]
 
|Vulkan
 
|Vulkan
Line 126: Line 126:
 
|-
 
|-
 
|[https://www.collabora.com/news-and-blog/blog/2018/10/31/introducing-zink-opengl-implementation-vulkan/ Zink]
 
|[https://www.collabora.com/news-and-blog/blog/2018/10/31/introducing-zink-opengl-implementation-vulkan/ Zink]
|Linux
+
|align=left|{{Icon|Linux}}
 
|[https://gitlab.freedesktop.org/kusma/mesa/tree/zink Git]
 
|[https://gitlab.freedesktop.org/kusma/mesa/tree/zink Git]
 
|OpenGL
 
|OpenGL
Line 133: Line 133:
 
|-
 
|-
 
|[https://github.com/Joshua-Ashton/d9vk D9VK]
 
|[https://github.com/Joshua-Ashton/d9vk D9VK]
|Linux
+
|align=left|{{Icon|Linux}}
 
|[https://github.com/Joshua-Ashton/d9vk Git]
 
|[https://github.com/Joshua-Ashton/d9vk Git]
 
|Direct3D 9
 
|Direct3D 9
Line 140: Line 140:
 
|-
 
|-
 
|[https://github.com/crosire/d3d8to9/ d3d8to9]
 
|[https://github.com/crosire/d3d8to9/ d3d8to9]
|Windows
+
|align=left|{{Icon|Windows}}
 
|[https://github.com/crosire/d3d8to9/releases 1.10.0]
 
|[https://github.com/crosire/d3d8to9/releases 1.10.0]
 
|Direct3D 8
 
|Direct3D 8
Line 147: Line 147:
 
|-
 
|-
 
|[https://github.com/Joshua-Ashton/dxup DXUP]
 
|[https://github.com/Joshua-Ashton/dxup DXUP]
|Windows, Linux
+
|align=left|{{Icon|Windows|Linux}}
 
|[https://github.com/Joshua-Ashton/dxup Git]
 
|[https://github.com/Joshua-Ashton/dxup Git]
 
|Direct3D 9-10
 
|Direct3D 9-10
Line 154: Line 154:
 
|-
 
|-
 
|[https://github.com/disks86/VK9 VK9]
 
|[https://github.com/disks86/VK9 VK9]
|Windows, Linux
+
|align=left|{{Icon|Windows|Linux}}
 
|[https://github.com/disks86/VK9/releases 0.29.0]
 
|[https://github.com/disks86/VK9/releases 0.29.0]
 
|Direct3D 9
 
|Direct3D 9

Revision as of 14:24, 19 January 2020

A wrapper is a common name for a technology used to transparently replace calls made to one graphics API with calls made to another. This can be used to run software on systems they were not designed for, such as running old PC games made for 3Dfx Glide graphics card on modern Windows 10 systems, or running modern Windows-only DirectX 11 games on Linux. A wrapper often takes the form of a shared library that replaces the original, though it can also be a standalone interceptor. Wrappers aren't needed for OpenGL since its APIs don't require much translation. Despite this, a wrapper was created for it anyway.

90's APIs

To understand why wrappers are needed for older games, it's important to understand that during the 90s the graphics card market for IBM PCs and compatibles was in its infancy, and Direct3D wasn't an automatic choice for developers. Some games were often designed for 3Dfx's Glide API so that it would run with their Voodoo card. With 3dfx going bankrupt however, support for Glide didn't stay around and the API was made open-source, but NVIDIA and AMD never incorporated it into their drivers. A wrapper is now needed to play these games with hardware acceleration, or if we're lucky the game gets a port to other APIs instead.

Name Operating System(s) Latest Version Translates Into Active Recommended
nGlide Windows 2.10 Glide Vulkan, Direct3D 9
dgVoodoo 2 Windows 2.62.3 Glide, DirectX 1-9 Direct3D 11
WineD3D Windows Linux macOS 9.0 (Linux, macOS)
9.6 Windows
DirectX 1-11 OpenGL
DXGL Windows 0.5.17 DirectX 1-7 OpenGL WIP
Glidos Windows 1.53b Glide (DOS) ? ?
OpenGlide Windows 0.09 Alpha Glide OpenGL ?
psVoodoo Windows 0.13 Glide Direct3D 9 ?

Comparisons

nGlide

Currently the best Glide wrapper, but it's closed-source. All three public API versions are supported; 2.11, 2.60 and 3.10, and it reads them using Direct3D 9. Vulkan output was added in 2.0, which allows it to work under Linux using Wine 2.10.0 and newer.[1] nGlide also supports high resolution modes. See the compatibility list.

dgVoodoo 2

Despite the name, dgVoodoo 2 reimplements more than Glide. It replaces multiple APIs; Glide 2.11, 2.45, 3.1, 3.1 Napalm, all versions of DirectDraw and Direct3D up to version 7, Direct3D 8.1, and Direct3D 9. This wrapper outputs Direct3D 11 with different device types as wrapping output such as hardware or software rendering.

Wine

Wine is a compatibility layer for Linux and macOS. On its own, Wine works pretty well for running older DirectX games. Some forks allow Wine's built-in reimplementations to run under Windows.

DXGL

A free replacement for ddraw.dll outputting OpenGL. It's designed to overcome driver bugs, mainly in Windows Vista and beyond. It adds various rendering enhancements such as display scaling and filtering options. DXGL also supports Direct3D 7, however it's currently under development and doesn't work with many programs.

2000's and later APIs

Name Operating System(s) Latest Version Translates Into Active Recommended
DXVK Linux 1.5 Direct3D 9-11 Vulkan
WineD3D Windows Linux macOS 9.0 (Linux, macOS)
9.6 Windows
Direct3D 1-11 OpenGL
Gallium Nine Linux 0.5 Direct3D 9 Native ~ WIP
vkd3d Linux 1.1 Direct3D 12 Vulkan WIP
MoltenVK macOS iOS 1.0.39 Vulkan Metal ?
Zink Linux Git OpenGL Vulkan ?
D9VK Linux Git Direct3D 9 Vulkan
d3d8to9 Windows 1.10.0 Direct3D 8 Direct3D 9
DXUP Windows Linux Git Direct3D 9-10 Direct3D 11
VK9 Windows Linux 0.29.0 Direct3D 9 Vulkan

Comparisons

DXVK

A wrapper for Direct3D 9-11. DXVK was designed to speed up support for Direct3D 11 games in Wine and, later, Proton since a native implementation seemed unlikely.

D9VK
A fork for Direct3D 9, originally created when DXVK was designed for Direct3D 10 and 11. Was merged back into the main project in version 1.5.
Wine

Has an internal graphics API wrapper for Direct3D 1-11 using OpenGL. It works mostly well for older games, but is slower and has more bugs than newer wrappers using Vulkan, such as DXVK. It's possible to use Wine's wrapper in Windows using different forks.

Gallium Nine

An open-source implementation of the Direct3D 9 library. Gallium Nine is different since it uses calls native to Linux as opposed to another graphics API like Vulkan. This allows applications to run at near-native speeds. The catch is that it relies on Gallium, Linux's open source 3D renderer, and any driver that doesn't use Gallium is less likely to work (such as NVIDIA's proprietary drivers).

vkd3d

A work-in-progress Direct3D 12 to Vulkan wrapper created for Wine by Valve.

VK9

A Direct3D 9 wrapper that outputs to Vulkan.

External links

See also

References