Editing Wrappers
Jump to navigation
Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
A '''wrapper''' is a reimplementation of a [[wikipedia:Library (computing)|library]], where the goal is to substitute the original API with a better-supported interface. It works as a drop-in replacement for the original library, since a lot of software usually bundled it as-is without any fine-tuning. Wrappers are most common for proprietary interfaces that are either abandoned or otherwise platform-specific. | A '''wrapper''' is a reimplementation of a [[wikipedia:Library (computing)|library]], where the goal is to substitute the original API with a better-supported interface. It works as a drop-in replacement for the original library, since a lot of software usually bundled it as-is without any fine-tuning. Wrappers are most common for proprietary interfaces that are either abandoned or otherwise platform-specific. | ||
− | + | ==90's APIs== | |
+ | (Glide, DirectDraw 1-7, Direct3D 2-7, OpenGL 1.1-1.2) | ||
− | + | During the 90s, many [[Intel CPUs|PC]] game developers chose to use 3Dfx's Glide API for their Voodoo graphics cards. These developers didn't anticipate that 3Dfx would run out of money trying to compete with NVIDIA's offering, and in 2000 NVIDIA bought them for their IP assets (presumably to improve their own cards). Despite the API getting an open source release in 2003, neither NVIDIA or ATI adopted support for Glide in their own drivers, meaning a wrapper is now needed to play these games with hardware acceleration. Or, if we're lucky, the game gets [[Game Engine Recreations and Source Ports|ported or reimplemented]] to use other APIs instead. | |
− | |||
− | |||
− | During the 90s, many [[ | ||
Even games using older versions of DirectDraw or Direct3D can benefit from wrappers, since those interfaces may not even work properly on newer systems. Wrappers can even enable various overrides and enhancements, such as [https://reshade.me/ ReShade]. | Even games using older versions of DirectDraw or Direct3D can benefit from wrappers, since those interfaces may not even work properly on newer systems. Wrappers can even enable various overrides and enhancements, such as [https://reshade.me/ ReShade]. | ||
Line 12: | Line 10: | ||
{| class="wikitable sortable" style="text-align:center;" | {| class="wikitable sortable" style="text-align:center;" | ||
|- | |- | ||
− | ! scope="col | + | ! scope="col"|Name |
! scope="col"|OS | ! scope="col"|OS | ||
! scope="col"|Latest Version | ! scope="col"|Latest Version | ||
! scope="col"|Translates | ! scope="col"|Translates | ||
! scope="col"|Into | ! scope="col"|Into | ||
− | |||
! scope="col"|<abbr title="Free and Open-Source Software">FOSS</abbr> | ! scope="col"|<abbr title="Free and Open-Source Software">FOSS</abbr> | ||
! scope="col"|Active | ! scope="col"|Active | ||
! scope="col"|[[Recommended Emulators|Recommended]] | ! scope="col"|[[Recommended Emulators|Recommended]] | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|[http://www.zeus-software.com/downloads/nglide nGlide] | |[http://www.zeus-software.com/downloads/nglide nGlide] | ||
Line 48: | Line 23: | ||
|[http://www.zeus-software.com/downloads/nglide 2.10] | |[http://www.zeus-software.com/downloads/nglide 2.10] | ||
|Glide | |Glide | ||
− | |Vulkan | + | |Vulkan, Direct3D 9 |
− | + | |{{✗}} ||{{✓}} ||{{✓}} | |
|- | |- | ||
− | |[ | + | |[http://dege.freeweb.hu/dgVoodoo2/ dgVoodoo2] |
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
− | |[ | + | |[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/ {{DgVoodoo2Ver}}] |
− | |DirectDraw 1-7 | + | |Glide, DirectDraw 1-7, Direct3D 2-7 |
− | |Direct3D | + | |Direct3D 11, Direct3D 12 |
− | + | |{{✗}} ||{{✓}} ||{{✓}} | |
|- | |- | ||
− | |[ | + | |[[Wine|WineD3D]] |
− | |align=left|{{Icon|Windows}} | + | |align=left|{{Icon|Windows|Linux|macOS}} |
− | |[https:// | + | |[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br/>[https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}] <small>(Windows)</small> |
− | + | |Direct3D 2-7 | |
− | + | |Vulkan, OpenGL | |
− | + | |{{✓}} ||{{✓}} ||{{✓}} | |
− | |||
− | |||
− | |||
− | | | ||
− | |||
− | | | ||
− | |||
|- | |- | ||
|[https://www.dxgl.org/ DXGL] | |[https://www.dxgl.org/ DXGL] | ||
Line 77: | Line 45: | ||
|DirectDraw 1-7 | |DirectDraw 1-7 | ||
|OpenGL | |OpenGL | ||
− | + | |{{✓}} ||{{✓}} ||{{TBD}} | |
|- | |- | ||
|[http://www.glidos.net/ Glidos] | |[http://www.glidos.net/ Glidos] | ||
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
− | |[http://www.glidos.net/download.html 1. | + | |[http://www.glidos.net/download.html 1.53b] |
|Glide <small>(DOS)</small> | |Glide <small>(DOS)</small> | ||
|? | |? | ||
− | + | |{{✗}} ||{{✗}} ||{{TBD}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|[http://openglide.sourceforge.net/ OpenGlide] | |[http://openglide.sourceforge.net/ OpenGlide] | ||
Line 98: | Line 59: | ||
|Glide | |Glide | ||
|OpenGL | |OpenGL | ||
− | + | |{{✓}} ||{{✗}} ||{{✗}} | |
|- | |- | ||
|[https://sourceforge.net/projects/psvoodoo/ psVoodoo] | |[https://sourceforge.net/projects/psvoodoo/ psVoodoo] | ||
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
− | |[https://sourceforge.net/projects/psvoodoo/files/latest/download 0. | + | |[https://sourceforge.net/projects/psvoodoo/files/latest/download 0.13] |
|Glide | |Glide | ||
|Direct3D 9 | |Direct3D 9 | ||
− | + | |{{✓}} ||{{✗}} ||{{✗}} | |
|- | |- | ||
|[https://github.com/ata4/glrage glrage] | |[https://github.com/ata4/glrage glrage] | ||
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
|[https://github.com/ata4/glrage/releases/latest r10] | |[https://github.com/ata4/glrage/releases/latest r10] | ||
− | |ATI3DCIF | + | |ATI3DCIF, DirectDraw 2 |
|OpenGL 3.3 | |OpenGL 3.3 | ||
− | + | |{{✓}} ||{{✗}} ||{{✓}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|} | |} | ||
− | |||
− | |||
===Comparisons=== | ===Comparisons=== | ||
Line 153: | Line 82: | ||
;dgVoodoo2 | ;dgVoodoo2 | ||
− | : | + | :Targets Glide 2.11, 2.45, 3.10, 3.1 Napalm, all versions of DirectDraw and Direct3D up to version 7, Direct3D 8.1, and Direct3D 9. Outputs Direct3D 11 and Direct3D 12 with different device types as wrapping output such as hardware or software rendering. |
;[[Wine|WineD3D]] | ;[[Wine|WineD3D]] | ||
− | :Wine's internal wrapper | + | :Wine's internal wrapper for Direct3D 2-11 that targets Vulkan and OpenGL. It works pretty well for running older Direct3D games, though it does not come with a Glide implementation of its own. A custom build incorporating Vulkan support is available for Windows [https://fdossena.com/?p=wined3d/index.frag here]. |
;DXGL | ;DXGL | ||
Line 164: | Line 93: | ||
:Reimplements ATI3DCIF, an API from ATI used in a handful of games, and DirectDraw 2 over OpenGL. Originally designed specifically for Tomb Raider 1/UB patched with ATIRage patch, currently also supports Assault Rigs and Wipeout. Additionally, it applies some improvements, fixes and QoL changes to the games. | :Reimplements ATI3DCIF, an API from ATI used in a handful of games, and DirectDraw 2 over OpenGL. Originally designed specifically for Tomb Raider 1/UB patched with ATIRage patch, currently also supports Assault Rigs and Wipeout. Additionally, it applies some improvements, fixes and QoL changes to the games. | ||
− | == | + | ==2000's and later APIs== |
− | (Direct3D 8 and higher, OpenGL | + | (Direct3D 8 and higher, OpenGL 1.3 and higher, Vulkan) |
Modern Windows games will likely need one of these wrappers to work on other platforms. Usually these are not separate downloads, and will come packaged into [[compatibility layers]] like [[Proton]], [[Wine]], or [https://www.codeweavers.com/crossover CrossOver]. | Modern Windows games will likely need one of these wrappers to work on other platforms. Usually these are not separate downloads, and will come packaged into [[compatibility layers]] like [[Proton]], [[Wine]], or [https://www.codeweavers.com/crossover CrossOver]. | ||
Line 184: | Line 113: | ||
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/ {{DgVoodoo2Ver}}] | |[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/ {{DgVoodoo2Ver}}] | ||
|Direct3D 8-9 | |Direct3D 8-9 | ||
− | |Direct3D 11, 12 | + | |Direct3D 11, Direct3D 12 |
|{{✗}} ||{{✓}} ||{{✓}} | |{{✗}} ||{{✓}} ||{{✓}} | ||
|- | |- | ||
− | |[https://github.com/ | + | |[https://github.com/doitsujin/dxvk DXVK] |
− | |align=left|{{Icon | + | |align=left|{{Icon|Linux}} |
− | |[https://github.com/ | + | |[https://github.com/doitsujin/dxvk/releases {{DXVKVer}}] |
− | |Direct3D | + | |Direct3D 9-11 |
|Vulkan | |Vulkan | ||
|{{✓}} ||{{✓}} ||{{✓}} | |{{✓}} ||{{✓}} ||{{✓}} | ||
|- | |- | ||
− | |[https://github.com/ | + | |[https://github.com/HansKristian-Work/vkd3d-proton VKD3D-Proton] |
− | |align=left|{{Icon | + | |align=left|{{Icon|Linux}} |
− | |[https://github.com/ | + | |[https://github.com/HansKristian-Work/vkd3d-proton/releases 2.6] |
− | |Direct3D | + | |Direct3D 12 |
|Vulkan | |Vulkan | ||
|{{✓}} ||{{✓}} ||{{✓}} | |{{✓}} ||{{✓}} ||{{✓}} | ||
Line 205: | Line 134: | ||
|[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 8-11 | |Direct3D 8-11 | ||
− | |Vulkan | + | |Vulkan, OpenGL |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|{{✓}} ||{{✓}} ||{{✓}} | |{{✓}} ||{{✓}} ||{{✓}} | ||
|- | |- | ||
Line 221: | Line 143: | ||
|Vulkan | |Vulkan | ||
|{{✓}} ||{{✓}} ||{{✗}} | |{{✓}} ||{{✓}} ||{{✗}} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|[https://github.com/KhronosGroup/MoltenVK MoltenVK] | |[https://github.com/KhronosGroup/MoltenVK MoltenVK] | ||
|align=left|{{Icon|macOS|iOS}} | |align=left|{{Icon|macOS|iOS}} | ||
− | |[https://github.com/KhronosGroup/MoltenVK/releases | + | |[https://github.com/KhronosGroup/MoltenVK/releases {{MoltenVKVer}}] |
|Vulkan | |Vulkan | ||
|Metal | |Metal | ||
Line 252: | Line 153: | ||
|[https://github.com/iXit/wine-nine-standalone Gallium Nine] | |[https://github.com/iXit/wine-nine-standalone Gallium Nine] | ||
|align=left|{{Icon|Linux}} | |align=left|{{Icon|Linux}} | ||
− | |[https://github.com/iXit/wine-nine-standalone/releases v0. | + | |[https://github.com/iXit/wine-nine-standalone/releases v0.8] <small>(WIP)</small> |
|Direct3D 9 | |Direct3D 9 | ||
|Gallium | |Gallium | ||
Line 264: | Line 165: | ||
|{{✓}} ||{{✓}} ||{{TBD}} | |{{✓}} ||{{✓}} ||{{TBD}} | ||
|- | |- | ||
− | |[https://github.com/ | + | |[https://github.com/crosire/d3d8to9/ d3d8to9] |
|align=left|{{Icon|Windows}} | |align=left|{{Icon|Windows}} | ||
− | |[https://github.com/ | + | |[https://github.com/crosire/d3d8to9/releases git] |
+ | |Direct3D 8 | ||
|Direct3D 9 | |Direct3D 9 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|{{✓}} ||{{✓}} ||{{~}} | |{{✓}} ||{{✓}} ||{{~}} | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
|} | |} | ||
===Comparisons=== | ===Comparisons=== | ||
− | |||
− | |||
− | |||
;DXVK | ;DXVK | ||
− | :Was originally designed to accelerate support for Direct3D 11 games running under [[Wine]] since a native implementation seemed unlikely. Today it is bundled | + | :Was originally designed to accelerate support for Direct3D 11 games running under [[Wine]] since a native implementation seemed unlikely. Today it is bundled into [[Proton]]. Later merged D9VK to add Direct3D 9 support. |
;WineD3D | ;WineD3D | ||
− | :Wine's internal wrapper | + | :Wine's internal wrapper for Direct3D 2-11 that targets Vulkan and OpenGL. For newer APIs it has more bugs than DXVK. A custom build incorporating Vulkan support is available for Windows [https://fdossena.com/?p=wined3d/index.frag here]. |
− | ; | + | ;MoltenVK |
− | : | + | :Developed by the Brenwill Workshop under the Khronos Group, it reimplements Vulkan for Metal. Emulators like [[Dolphin]] and [[DuckStation]] use MoltenVK instead of a native Metal renderer to support Apple devices. |
;vkd3d | ;vkd3d | ||
:Wine's work-in-progress Direct3D 12 to Vulkan wrapper. | :Wine's work-in-progress Direct3D 12 to Vulkan wrapper. | ||
− | ; | + | ;VKD3D-Proton |
− | : | + | :A fork of VKD3D funded by Valve, which is more ahead and experimentally supports DXR via VK_KHR_ray_tracing. |
− | |||
− | |||
− | |||
;Gallium Nine | ;Gallium Nine | ||
− | :An implementation of the Direct3D 9 library on top of the Gallium driver for Linux. By using calls native to Linux, applications running under Wine run "at near-native speeds" according to the maintainers. The caveat is that | + | :An implementation of the Direct3D 9 library on top of the Gallium driver for Linux. By using calls native to Linux, applications running under Wine run "at near-native speeds" according to the maintainers. The caveat is that this only works on Mesa, not NVIDIA's proprietary driver. |
;Zink | ;Zink | ||
Line 336: | Line 203: | ||
==External links== | ==External links== | ||
− | |||
− | |||
* [https://www.gamingonlinux.com/articles/dxvk-102-is-out-with-some-bug-fixes-d9vk-seems-to-be-progressing-nicely.13868/page=2#r151939 State of Direct3D 9-12 translation layers] by DXVK author YoRHa-2B (2019-04-02) | * [https://www.gamingonlinux.com/articles/dxvk-102-is-out-with-some-bug-fixes-d9vk-seems-to-be-progressing-nicely.13868/page=2#r151939 State of Direct3D 9-12 translation layers] by DXVK author YoRHa-2B (2019-04-02) | ||
− | |||
[[Category:Not really emulators]] | [[Category:Not really emulators]] |