Changes

Jump to navigation Jump to search

Wrappers

8,550 bytes added, 1 April
'90s APIs
{{WIP}}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 name for a proprietary interfaces that are either abandoned or otherwise platform-specific. See [[Emulation Accuracy]] page for more information about terms like "[[Hypervisors|hypervisors]]", "[[Simulators|simulators]]", "[[Compatibility Compatibility_layer|compatibility layers]]", "[[Wrappers|compatibilitywrappers]]", "[[FPGA|FPGA-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.</translation layerref>, OpenGL 1.x) During the 90s, many [[POS_(Pong_Consoles)_CPUs_and_Other_Chips#Intel_CPU.27s|PC]] that translates from one 'game developers chose to use 3Dfx's Glide API for their Voodoo graphics APIcards. 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 anotherimprove 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. This can be used Or, if we're lucky, the game gets [[Game Engine Recreations and Source Ports|ported or reimplemented]] to run software on systems they were not designed foruse other APIs instead. Such as running old PC  Even games made for 3Dfx Glide graphics card using older versions of DirectDraw or Direct3D can benefit from wrappers, since those interfaces may not even work properly on modern Windows 10 newer systems. Wrappers can even enable various overrides and enhancements, or running modern Windows-only DirectX 11 games on Linuxsuch as [https://reshade.me/ ReShade].
==90's APIs==
{| class="wikitable sortable" style="text-align:center;"
|-
! scope="col" colspan="2"|Name! scope="col"|Operating System(s)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]
|align=left|{{Icon|Windows}}
|[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/ dgVoodoo 2DDrawCompat DDrawCompat]|align=left|{{Icon|Windows}}|[httphttps://degegithub.freeweb.hucom/narzoul/dgVoodoo2DDrawCompat/dgVoodoo2tags v0.html 25.62.31]|Glide, DirectX DirectDraw 1-97<br>Direct3D 2-7<br>GDI (Partially)|Direct3D 11<small>no API conversion</small>| ||{{✓}} ||{{✓}} ||{{~}}
|-
|[[Wine|Wine DirectX]]|Windows, Linux, macOS|[https://wikigithub.winehq.orgcom/FunkyFr3sh/Download cnc-ddraw cnc-ddraw]|align=left|{{WineVerIcon|Windows}}] <smallbr>({{Icon|Linux, |macOS)}}</smallref group=N name=cnc-ddraw>Linux and macOS are supported through wine.<br /ref> |[https://fdossenagithub.com/?p=wined3dFunkyFr3sh/cnc-ddraw/indexreleases 6.frag {{WineDevVer}}3] <small>Windows</small>|DirectX DirectDraw 1-117|GDI<br>OpenGL<br>Direct3D 9| ||{{✓}} ||{{✓}} ||{{~}}
|-
|[https://www.dxgl.org/ DXGL]
|align=left|{{Icon|Windows}}|[https://www.dxgl.org/downloads/ 0.5.17{{DXGLVer}}]|DirectX DirectDraw 1-7
|OpenGL
| ||{{✓}} ||{{✓}} ||{{~}} <small>WIP</small>
|-
|[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| ||{{✗}} ||?{{✗}} ||{{✗}}
|-
|[http://openglide.sourceforge.net/ OpenGlide]
|align=left|{{Icon|Windows}}
|[https://sourceforge.net/projects/openglide/files/latest/download 0.09 Alpha]
|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===
;[http://www.zeus-software.com/downloads/nglide nGlide] A closed-source 3Dfx Voodoo :Currently the best Glide wrapper. It allows you to play games designed for 3Dfx Glide API without the need for having 3Dfx Voodoo graphics card. All , supporting all three API public versions are supported, Glide (2.11, Glide 2.60 and Glide 3.10) but it's closed-source. nGlide emulates Glide environment with It originally only used Direct3D 9 and version until Vulkan output was added in 2.0 implemented Vulkan support, which also makes allowing it to work under Linux using [[Wine]] Staging 2.10.0 or and newer.<ref name="nglidevulkan">http://www.zeus-software.com/forum/viewtopic.php?f=2&t=2044</ref> Glide wrapper nGlide also supports high resolution modes. This is currently See the best Glide wrapper. Has a [http://www.zeus-software.com/downloads/nglide/compatibility compatibility list]. ;dgVoodoo2:Supports Glide 2.11, 2.45, 3.10, 3.1 Napalm, all versions of DirectDraw, and Direct3D up to version 7. 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. Wraps DirectDraw and Direct3D 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 is available for Windows [https://fdossena.com/?p=wined3d/index.frag here]. ;DXGL:Reimplements DirectDraw using OpenGL. It is considered alpha software despite many applications working.
;[httpglrage://dege.freeweb.hu/ dgVoodoo 2]A closed-source wrapper for old graphics Reimplements ATI3DCIF, an API's for Windows. The API's it currently can wrap are: Glide 2.11from ATI used in a handful of games, Glide and DirectDraw 2over OpenGL.45Originally designed specifically for Tomb Raider 1/UB patched with ATIRage patch, Glide 3currently also supports Assault Rigs and Wipeout.1Additionally, Glide 3.1 Napalmit applies some improvements, DirectX 1-7 (all versions of DirectDraw fixes and Direct3D up QoL changes to version 7), Direct3D 8.1 and Direct3D 9. This wrapper can use Direct3D 11 with different device types as wrapping output such as hardware or software renderingthe games.
;[[Wine]]==2000s and later APIs==Wine works mostly well for running older DirectX games. It is possible to use Wine's wrapper in Windows using different forks(Direct3D 8 and higher, OpenGL 2.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.dxglcodeweavers.orgcom/ DXGLcrossover CrossOver] A free replacement for the Windows ddraw.dll library, running on OpenGL. It is designed to overcome driver bugs, particularly in Windows Vista and newer operating systems. It also adds various enhancements to the graphics output such as display scaling and filtering options. DXGL supports the DirectX 7.0 graphics APIs, however it is currently under development and does not work with many programs.
==2000's and later APIs==
{| class="wikitable sortable" style="text-align:center;"
|-
! scope="col"|Name
! scope="col"|Operating System(s)OS
! scope="col"|Latest Version
! scope="col"|Translates
! scope="col"|Into
! scope="col"|<abbr title="Free and Open-Source Software">FOSS</abbr>
! scope="col"|Active
! scope="col"|[[Recommended Emulators|Recommended]]
|-
|[http://dege.freeweb.hu/dgVoodoo2/ dgVoodoo2]
|align=left|{{Icon|Windows}}
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2/ {{DgVoodoo2Ver}}]
|Direct3D 8-9
|Direct3D 11, 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 1.5{{DXVKVer}}]
|Direct3D 9-11
|Vulkan
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[[Wine|Wine Direct3DWineD3D]]|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 18-11|Vulkan<br>OpenGL|{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://github.com/iXitHansKristian-Work/winevkd3d-nineproton VKD3D-standalone Gallium NineProton]|align=left|{{Icon|Windows|Linux}}|[https://github.com/iXitHansKristian-Work/winevkd3d-nineproton/releases {{VKD3D-standalone 0.5ProtonVer}}]|Direct3D 912|NativeVulkan|{{✓}} ||{{~✓}} ||{{✓}} <small>WIP</small>
|-
|[https://source.winehq.org/git/vkd3d.git/ vkd3d]|align=left|{{Icon|Linux}}|[https://source.winehq.org/git/vkd3d.git/ 1.1{{Vkd3dVer}}]
|Direct3D 12
|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] <smallbr/>WIP[https://github.com/lightningterror/Mesa3D-Windows lightningterror's builds] <br/small>[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 1.03.39268]
|Vulkan
|Metal
|{{✓}} ||?{{✓}} ||{{✓}}|-|[https://github.com/iXit/wine-nine-standalone Gallium Nine]|align=left|{{Icon|Linux}}|[https://github.com/iXit/wine-nine-standalone/releases v0.9] <small>(WIP)</small>|Direct3D 9|Gallium|{{✓}} ||{{✓}} ||{{~}}
|-
|[https://wwwgitlab.collaborafreedesktop.comorg/mesa/mesa/news-and-blog/blogblob/2018main/10docs/31drivers/introducing-zink-opengl-implementation-vulkan/ .rst Zink]|align=left|{{Icon|Linux}}|[https://gitlab.freedesktop.org/kusmamesa/mesa/tree/zink Gitgit]|OpenGL2.1-4.6
|Vulkan
|{{✓}} ||?{{✓}} ||{{TBD}}
|-
|[https://github.com/Joshua-Ashtonmicrosoft/d9vk D9VKD3D9On12 D3D9On12]|Linuxalign=left|{{Icon|Windows}}|[https://github.com/Joshua-Ashtonmicrosoft/d9vk GitD3D9On12 git]
|Direct3D 9
|VulkanDirect3D 12|{{✓}} ||{{✓}} ||{{~}}
|-
|[https://github.com/Joshua-Ashtonmicrosoft/dxup DXUPD3D11On12/ D3D11On12]|align=left|{{Icon|Windows, Linux}}|[https://github.com/Joshua-Ashtonmicrosoft/D3D11On12/dxup Gitgit]|Direct3D 9-10
|Direct3D 11
|Direct3D 12|{{✓}} ||{{}} ||{{~}}
|-
|[https://github.com/disks86bo3b/VK9 VK93Dmigoto/ 3Dmigoto]|align=left|{{Icon|Windows, Linux}}|[https://github.com/disks86bo3b/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://VK9www.vorpx.com/releases 0support-faq/ v21.293.02]|Direct3D 911 <small>(Stereo3D)</small>|Vulkan<small>no API conversion</small>|{{✗}} ||{{✓}} ||{{~}}|-|GLon12|align=left|{{Icon|Windows|Xbox}}||OpenGL|Direct3D 12|{{✓}} ||{{✓}} ||{{TBD}}
|-
|}
===Comparisons===
;[httpsdgVoodoo2://githubSupports Direct3D 8-9.com/doitsujin/dxvk DXVK] A Vulkan-based translation layer for Outputs Direct3D 9-11and Direct3D 12 with different device types as wrapping output, which allows running Windows 3D applications on Linux using [[Proton]] such as hardware or [[Wine]]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 with [[https://githubProton]].com/Joshua-Ashton/d9vk Later merged D9VK] :is a to add Direct3D 9 to Vulkan translation layer based off DXVK's codebase. Has been merged into DXVK as of version 1.5support.
;[[WineD3D:Wine]] Has an 's internal graphics API wrapper for . Wraps Direct3D 18-11 using into Vulkan and OpenGL. It works mostly well for older games, but is slower and For newer APIs it has more bugs than newer wrappers using Vulkan, such as DXVK. It A custom build is possible to use Wine's wrapper in available for Windows using different forks[https://fdossena.com/?p=wined3d/index.frag here].
;[https://github.com/iXit/wine-nineVKD3D-standalone Gallium Nine]ProtonGallium nine is an open-source implementation :A fork of DirectX 9. Gallium Nine makes it possible to run Direct3D 9 applications on Linux nativelyVKD3D funded by Valve, i.e. without any calls translation which allows is more developed and has experimental support for a near native speedDXR via VK_KHR_ray_tracing. ItRequires DXVK's only available if you are using a Gallium based graphics driverdxgi. Currently it's recommended for AMD and Intel cards, but not for nVidia cardsdll file to work on Windows.
;[https://source.winehq.org/git/vkd3d.git/ vkd3d] is an internal :Wine wrapper for 's work-in-progress Direct3D 12 to Vulkan translation. Sponsored by Valve. Currently a work in progresswrapper.
;[httpsd3d8to9://github.com/disks86/VK9 VK9] runs Not as versatile as dgVoodoo2, however it's the only wrapper that can wrap Direct3D 8 into 9 applications on . 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 Linux (with [[Wine]]) over Vulkanperformance issues.
==External links==;MoltenVK:Developed by the Brenwill Workshop under the Khronos Group, it re-implements Vulkan for Metal. Emulators like [[Dolphin]] and [[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 it only works on Mesa, not NVIDIA's proprietary driver. ;Zink:A "just-in-case" implementation of OpenGL on top of Vulkan first introduced in 2018 by Collabora for the Mesa driver.<ref>Erik Faye-Lund (October 31, 2018). [https://www.gamingonlinuxcollabora.com/articles/dxvknews-102and-isblog/blog/2018/10/31/introducing-outzink-withopengl-someimplementation-bug-fixes-d9vk-seems-to-be-progressing-nicelyvulkan/ Introducing Zink, an OpenGL implementation on top of Vulkan]. Collabora.13868</comment_idref> ==151939 State of Direct3D 9-12 translation See also==* [[Compatibility layers] by DXVK author YoRHa] -2B (2019-04-02)Allows software written for one platform to run on another.
==References==
{{Reflist}}
 
==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]]
11,313
edits

Navigation menu