Changes

Jump to navigation Jump to search

Wrappers

6,207 bytes added, 1 April
'90s APIs
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==(GlideSee [[Emulation Accuracy]] page for more information about terms like "[[Hypervisors|hypervisors]]", DirectDraw 1-7"[[Simulators|simulators]]", "[[Compatibility_layer|compatibility layers]]", "[[Wrappers|wrappers]]", Direct3D 2"[[FPGA|FPGA-7, OpenGL)based hardware cloning]]" and "[[:Category:Emulators|software emulators]]".
=='90s APIs==(Glide, DirectDraw 1-7, Direct3D 2-7<ref group=N name=>Direct3D 1 doesn't exist, since DirectX 1 did not have a Direct3D component. The first release was Direct3D 2.</ref>, OpenGL 1.x) During the 90s, many [[Intel CPUsPOS_(Pong_Consoles)_CPUs_and_Other_Chips#Intel_CPU.27s|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.
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].
{| class="wikitable sortable" style="text-align:center;"
|-
! scope="col" colspan="2"|Name
! scope="col"|OS
! scope="col"|Latest Version
! scope="col"|Translates
! scope="col"|Into
! scope="col"|Compatibility
! scope="col"|<abbr title="Free and Open-Source Software">FOSS</abbr>
! scope="col"|Active
! scope="col"|[[Recommended Emulators|Recommended]]
|-
| rowspan=14 |Graphics
|[http://dege.freeweb.hu/dgVoodoo2/ dgVoodoo2]
|align=left|{{Icon|Windows}}
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/ {{DgVooDoo2Ver}}]
|Glide 2.11-3.10<br>DirectDraw 1-7<br>Direct3D 2-7
|Direct3D 11, 12
|[https://www.vogons.org/viewforum.php?f=59 ?] ||{{✗}} ||{{✓}} ||{{✓}}
|-
|[[Wine|WineD3D]]
|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><ref group=N name=XPcompatibility>DxWnd 2.05.70, WineD3D 1.7.52 or 1.9.7-staging(partially) versions are the latest compatible versions with Windows XP (if [https://github.com/Skulltrail192/One-Core-API-Binaries OneCoreAPI] is '''not''' installed to OS), for getting these old "WineD3D for Windows" builds use [https://www.vogonsdrivers.com/wrappers/files/DirectX/OpenGL/WineD3D/2000+/ this link]. Also you can use [https://github.com/JHRobotics/wine9x?tab=readme-ov-file#wined3d-port-for-windows-9x JHRobotics port for using WineD3D on Windows 9x or Windows XP].</ref>
|DirectDraw 1-7<br>Direct3D 2-7
|Vulkan<br>OpenGL
|[https://appdb.winehq.org/objectManager.php?sClass=application&sTitle=Browse%20Applications&sOrderBy=appName&bAscending=true ?] ||{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://sourceforge.net/projects/dxwnd DxWnd]
|align=left|{{Icon|Windows}}
|[https://sourceforge.net/projects/dxwnd/files/Latest%20build/ {{DxWndVer}}]<ref group=N name=XPcompatibility></ref>
|DirectDraw 1-7<br>Direct3D 2-7
|<small>no API conversion</small>
| ||{{✓}} ||{{✓}} ||{{✓}}
|-
|[http://www.zeus-software.com/downloads/nglide nGlide]
|[http://www.zeus-software.com/downloads/nglide 2.10]
|Glide
|Vulkan, <br>Direct3D 9| ||{{✗}} ||{{✗}} ||{{✓}} |-|[https://github.com/elishacloud/dxwrapper DxWrapper]|align=left|{{Icon|Windows}}|[https://github.com/elishacloud/dxwrapper/releases v1.0.6900.22]|DirectDraw 1-7<br>Direct3D 2-7|Direct3D 9<ref group=N name=dxwrapper>Through '''dd7to9'''.</ref><br>Direct3D 7 (for Direct3D 2-6)<br>DirectDraw 7 (for DirectDraw 1-6)|[https://github.com/elishacloud/dxwrapper/wiki/DirectDraw-to-Direct3D9-Conversion#table-key ?] ||{{✓}} ||{{✓}} ||{{~}}
|-
|[httphttps://degegithub.freeweb.hucom/narzoul/ dgVoodoo2DDrawCompat DDrawCompat]
|align=left|{{Icon|Windows}}
|[httphttps://degegithub.freeweb.hucom/dgVoodoo2narzoul/dgVoodoo2DDrawCompat/ {{DgVoodoo2Ver}}tags v0.5.1]|Glide, DirectDraw 1-7, <br>Direct3D 2-97<br>GDI (Partially)|Direct3D 11, Direct3D 12<small>no API conversion</small>| ||{{}} ||{{✓}} ||{{~}}
|-
|[[Wine|WineD3D]https://github.com/FunkyFr3sh/cnc-ddraw cnc-ddraw]|align=left|{{Icon|Windows}}<br>{{Icon|Linux|macOS}}|[https://wiki.winehq.org/Download {{WineVer}}] <smallref group=N name=cnc-ddraw>(Linux, and macOS)are supported through wine.</small><br/ref>|[https://fdossenagithub.com/?p=wined3dFunkyFr3sh/cnc-ddraw/indexreleases 6.frag {{WineDevVer}}3] |DirectDraw 1-7|GDI<smallbr>(Windows)OpenGL</smallbr>Direct3D 9|Direct3D 2-11|Vulkan, OpenGL|{{✓}} ||{{✓}} ||{{~}}
|-
|[https://www.dxgl.org/ DXGL]
|DirectDraw 1-7
|OpenGL
| ||{{✓}} ||{{✓}} ||{{TBD~}}
|-
|[http://www.glidos.net/ Glidos]
|align=left|{{Icon|Windows}}
|[http://www.glidos.net/download.html 1.53b59]
|Glide <small>(DOS)</small>
|?
| ||{{✓}} ||{{✓}} ||{{✗}} |-|[http://dege.freeweb.hu/dgVoodoo/dgVoodoo/ dgVoodoo]|align=left|{{Icon|Windows}}|[http://dege.freeweb.hu/dgVoodoo/dgVoodoo/ v1.50b2]|Glide 2.11-2.45|Direct3D 7, 9| ||{{✗}} ||{{TBD✗}} ||{{✗}}
|-
|[http://openglide.sourceforge.net/ OpenGlide]
|Glide
|OpenGL
| ||{{✓}} ||{{✗}} ||{{✗}}
|-
|[https://sourceforge.net/projects/psvoodoo/ psVoodoo]
|align=left|{{Icon|Windows}}
|[https://sourceforge.net/projects/psvoodoo/files/latest/download 0.1317]
|Glide
|Direct3D 9
| ||{{✓}} ||{{✗}} ||{{✗}}
|-
|[https://github.com/ata4/glrage glrage]
|align=left|{{Icon|Windows}}
|[https://github.com/ata4/glrage/releases/latest r10]
|ATI3DCIF, <br>DirectDraw 2
|OpenGL 3.3
| ||{{✓}} ||{{✗}} ||{{✓}}|-|[https://apps.microsoft.com/detail/9NRCQJ8VLGTK?hl=en-us&gl=US RReady (Rendition Verite wrapper)]|align=left|{{Icon|Windows}}|[https://apps.microsoft.com/detail/9NRCQJ8VLGTK?hl=en-us&gl=US RReady Rendition Verité]|RRedline|OpenGL| ||{{✗}} ||{{✓}} ||{{✓}}|-| rowspan=2 |Input|[https://github.com/csutorasa/XOutput XOutput]|align=left|{{Icon|Windows}}|[https://github.com/csutorasa/XOutput/tags 3.32]|DirectInput|XInput| ||{{✓}} ||{{✓}} ||{{✓}}|-|[https://github.com/elishacloud/dxwrapper DxWrapper]|align=left|{{Icon|Windows}}|[https://github.com/elishacloud/dxwrapper/releases v1.0.6900.22]|DirectInput 1-7|DirectInput 8| ||{{✓}} ||{{✓}} ||{{~}}|-| rowspan=1 |Sound|[https://github.com/kcat/dsoal DSOAL]|align=left|{{Icon|Windows}}|[https://github.com/kcat/dsoal/actions git]|DirectSound|OpenAL| ||{{✓}} ||{{✓}} ||{{TBD}}
|-
|}
 
<references group=N />
===Comparisons===
;dgVoodoo2
:Targets Supports 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's internal wrapper for . Wraps DirectDraw and Direct3D 2-11 that targets up to 7 into 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
: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 2000s and later APIs==(Direct3D 8 and higher, OpenGL 12.3 x 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].
! scope="col"|[[Recommended Emulators|Recommended]]
|-
|[http://dege.freeweb.hu/dgVoodoo2/ dgVoodoo2]
|align=left|{{Icon|Windows}}
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/ {{DgVoodoo2Ver}}]
|Glide, DirectDraw 1-7, Direct3D 28-9|Direct3D 11, Direct3D 12
|{{✗}} ||{{✓}} ||{{✓}}
|-
|[https://github.com/AlpyneDreams/d8vk D8VK]
|align=left|{{Icon|Windows|Linux}}
|[https://github.com/AlpyneDreams/d8vk/releases 1.0]
|Direct3D 8
|Vulkan
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://github.com/doitsujin/dxvk DXVK]
|align=left|{{Icon|Windows|Linux}}
|[https://github.com/doitsujin/dxvk/releases {{DXVKVer}}]
|Direct3D 9-11
|Vulkan
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[[Wine|WineD3D]]
|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>
|Direct3D 8-11
|Vulkan<br>OpenGL
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://github.com/HansKristian-Work/vkd3d-proton VKD3D-Proton]
|align=left|{{Icon|Windows|Linux}}|[https://github.com/HansKristian-Work/vkd3d-proton/releases 2.6{{VKD3D-ProtonVer}}]
|Direct3D 12
|Vulkan
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[[Wine|WineD3D]]
|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>
|Direct3D 2-11
|Vulkan, OpenGL
|{{✓}} ||{{✓}} ||{{✓}}
|-
|Vulkan
|{{✓}} ||{{✓}} ||{{✗}}
|-
|[https://github.com/crosire/d3d8to9/ d3d8to9]
|align=left|{{Icon|Windows}}
|[https://github.com/crosire/d3d8to9/releases 1.12.0]
|Direct3D 8
|Direct3D 9
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://downloads.fdossena.com/Projects/Mesa3D/Builds/index.php Mesa3D for Windows + MesaInjector]
|align=left|{{Icon|Windows}}
|[https://downloads.fdossena.com/Projects/Mesa3D/Builds/index.php 20.1.8] <br/>[https://github.com/lightningterror/Mesa3D-Windows lightningterror's builds] <br/>[http://www.vogonsdrivers.com/wrappers/files/OpenGL/GDI/Mesa/ vogonsdrivers builds]
|OpenGL
|Software
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://github.com/libcg/grvk grvk]
|align=left|{{Icon|Windows}}
|[https://github.com/libcg/grvk/tags 0.5.0]
|Mantle
|Vulkan 1.2
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://github.com/KhronosGroup/MoltenVK MoltenVK]
|align=left|{{Icon|macOS|iOS}}
|[https://github.com/KhronosGroup/MoltenVK/releases {{MoltenVKVer}}1.3.268]
|Vulkan
|Metal
|[https://github.com/iXit/wine-nine-standalone Gallium Nine]
|align=left|{{Icon|Linux}}
|[https://github.com/iXit/wine-nine-standalone/releases v0.89] <small>(WIP)</small>
|Direct3D 9
|Gallium
|{{✓}} ||{{✓}} ||{{TBD}}
|-
|[https://github.com/crosiremicrosoft/d3d8to9/ d3d8to9D3D9On12 D3D9On12]
|align=left|{{Icon|Windows}}
|[https://github.com/crosiremicrosoft/d3d8to9/releases D3D9On12 git]|Direct3D 8
|Direct3D 9
|Direct3D 12
|{{✓}} ||{{✓}} ||{{~}}
|-
|[https://github.com/microsoft/D3D11On12/ D3D11On12]
|align=left|{{Icon|Windows}}
|[https://github.com/microsoft/D3D11On12/ git]
|Direct3D 11
|Direct3D 12
|{{✓}} ||{{✓}} ||{{~}}
|-
|[https://github.com/bo3b/3Dmigoto/ 3Dmigoto]
|align=left|{{Icon|Windows}}
|[https://github.com/bo3b/3Dmigoto/tags 1.3.16]
|Direct3D 11 <small>(Stereo3D)</small>
|<small>no API conversion</small>
|{{✓}} ||{{✓}} ||{{~}}
|-
|[https://www.pcgamingwiki.com/wiki/Glossary:VorpX VorpX] ($)
|align=left|{{Icon|Windows}}
|[https://www.vorpx.com/support-faq/ v21.3.2]
|Direct3D 11 <small>(Stereo3D)</small>
|<small>no API conversion</small>
|{{✗}} ||{{✓}} ||{{~}}
|-
|GLon12
|align=left|{{Icon|Windows|Xbox}}
|
|OpenGL
|Direct3D 12
|{{✓}} ||{{✓}} ||{{TBD}}
|-
|}
===Comparisons===
;dgVoodoo2
:Supports Direct3D 8-9. Outputs Direct3D 11 and Direct3D 12 with different device types as wrapping output, such as hardware or software rendering.
 
;DXVK
:Was originally designed to accelerate support for Direct3D 11 games running under [[Wine]] since a native implementation seemed unlikely. Today it is bundled into with [[Proton]]. Later merged D9VK to add Direct3D 9 support.
;WineD3D
:Wine's internal wrapper for . Wraps Direct3D 28-11 that targets into 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].
;MoltenVKVKD3D-Proton:Developed A fork of VKD3D funded by the Brenwill Workshop under the Khronos GroupValve, it reimplements Vulkan which is more developed and has experimental support for MetalDXR via VK_KHR_ray_tracing. Emulators like [[Dolphin]] and [[DuckStation]] use MoltenVK instead of a native Metal renderer Requires DXVK's dxgi.dll file to support Apple deviceswork on Windows.
;vkd3d
:Wine's work-in-progress Direct3D 12 to Vulkan wrapper.
;VKD3D-Protond3d8to9:Not as versatile as dgVoodoo2, however it's the only wrapper that can wrap Direct3D 8 into 9. Its main advantage is Windows XP support, which dgVoodoo2 lacks. It's specifically useful for Windows XP running in VMware, since VMware's Direct3D 8 acceleration has graphical and/or performance issues. ;MoltenVK:A fork of VKD3D funded Developed by Valvethe Brenwill Workshop under the Khronos Group, which is more ahead it re-implements Vulkan for Metal. Emulators like [[Dolphin]] and experimentally supports DXR via VK_KHR_ray_tracing[[DuckStation]] use MoltenVK instead of a native Metal renderer to support Apple devices.
;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 this it only works on Mesa, not NVIDIA's proprietary driver.
;Zink
==External links==
;* [https://www.vogons.org/viewtopic.php?f=9&t=36412 VOGONS: The Wrapper Collection Project]
;* [https://www.pcgamingwiki.com/wiki/Glossary:Display_wrapper PCGamingWiki: Display wrapper]
* [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.youtube.com/@Levan4KGaming/search?query=performance%20benchmark Levan's Wrapper Benchmarks]
[[Category:Not really emulators]]
10,935
edits

Navigation menu