Changes

Jump to navigation Jump to search

Wrappers

8,281 bytes added, 1 April
'90s APIs
{{WIP}}A '''wrapper''' is a common name for reimplementation of a technology used [[wikipedia:Library (computing)|library]], where the goal is to transparently replace calls made to one graphics substitute the original API with calls made to anothera better-supported interface. This can be used to run software on systems they were not designed It works as a drop-in replacement forthe original library, such since a lot of software usually bundled it as running old PC games made -is without any fine-tuning. Wrappers are most common for proprietary interfaces that are either abandoned or otherwise platform-specific. See [[Emulation Accuracy]] page for 3Dfx more information about terms like "[[Hypervisors|hypervisors]]", "[[Simulators|simulators]]", "[[Compatibility_layer|compatibility layers]]", "[[Wrappers|wrappers]]", "[[FPGA|FPGA-based hardware cloning]]" and "[[:Category:Emulators|software emulators]]". =='90s APIs==(Glide graphics card on modern Windows 10 systems, or running modern WindowsDirectDraw 1-7, Direct3D 2-only 7<ref group=N name=>Direct3D 1 doesn't exist, since DirectX 11 games on Linux1 did not have a Direct3D component. The first release was Direct3D 2.</ref>, OpenGL 1. A wrapper often takes x) During the form 90s, many [[POS_(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 a shared library that replaces 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 originalAPI getting an open source release in 2003, neither NVIDIA or ATI adopted support for Glide in their own drivers, though it can also be meaning a standalone interceptorwrapper is now needed to play these games with hardware acceleration. Wrappers arenOr, if we't needed for OpenGL 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 its APIs don't require much translationthose interfaces may not even work properly on newer systems. Despite thisWrappers can even enable various overrides and enhancements, such as [https://wwwreshade.collabora.comme/news-and-blog/blog/2018/10/31/introducing-zink-opengl-implementation-vulkan/ a wrapper was created for it anywayReShade].
==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] :Currently the best Glide wrapper, but it's closed-source. All supporting all three public API versions are supported; (2.11, 2.60 and 3.10, and ) but it reads them using 's closed-source. It originally only used Direct3D 9. until Vulkan output was added in 2.0, which allows allowing it to work under Linux using [[Wine]] 2.10.0 and newer.<ref name="nglidevulkan">http://www.zeus-software.com/forum/viewtopic.php?f=2&t=2044</ref> nGlide also supports high resolution modes. See the [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]Despite the nameReimplements ATI3DCIF, dgVoodoo 2 reimplements more than Glide. It replaces multiple APIs; Glide 2.11an API from ATI used in a handful of games, and DirectDraw 2over OpenGL.45Originally designed specifically for Tomb Raider 1/UB patched with ATIRage patch, 3currently also supports Assault Rigs and Wipeout.1Additionally, 3.1 Napalmit applies some improvements, all versions of DirectDraw fixes and Direct3D up QoL changes 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 renderingthe games.
;[[Wine]]==2000s and later APIs==A compatibility layer for Linux(Direct3D 8 and higher, OpenGL 2. On its ownx and higher, Wine works pretty well for running older DirectX games. Some forks allow Wine's built-in reimplementations to run under Windows.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 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==
{| 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://www.collaboragithub.com/news-and-blogiXit/blog/2018/10/31/introducing-zinkwine-openglnine-implementation-vulkan/ Zinkstandalone Gallium Nine]|align=left|{{Icon|Linux}}|[https://gitlabgithub.freedesktop.orgcom/kusmaiXit/mesawine-nine-standalone/treereleases v0.9] <small>(WIP)</zink Git]small>|OpenGLDirect3D 9|VulkanGallium|{{✓}} ||?{{✓}} ||{{~}}
|-
|[https://githubgitlab.comfreedesktop.org/mesa/mesa/Joshua-Ashton/d9vk D9VKblob/main/docs/drivers/zink.rst Zink]|align=left|{{Icon|Linux}}|[https://githubgitlab.freedesktop.comorg/mesa/mesa/Joshua-Ashtontree/d9vk Gitzink git]|Direct3D 9OpenGL 2.1-4.6
|Vulkan
|{{✓}} ||{{✓}} ||{{TBD}}
|-
|[https://github.com/crosiremicrosoft/d3d8to9/ d3d8to9D3D9On12 D3D9On12]|align=left|{{Icon|Windows}}|[https://github.com/crosire/d3d8to9microsoft/releases 1.10.0D3D9On12 git]|Direct3D 8
|Direct3D 9
|Direct3D 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 wrapper for Outputs Direct3D 9-11and Direct3D 12 with different device types as wrapping output, such as hardware or software rendering.  ;DXVK was :Was originally designed to speed up accelerate support for Direct3D 11 games in running under [[Wine]] and, later, [[Proton]] since a native implementation seemed unlikely. Today it is bundled with [[Proton]]. Later merged D9VK to add Direct3D 9 support.
;WineD3D:;Wine's internal wrapper. Wraps Direct3D 8-11 into Vulkan and OpenGL. For newer APIs it has more bugs than DXVK. A custom build is available for Windows [https://githubfdossena.com/Joshua-Ashton?p=wined3d/d9vk D9VKindex.frag here] :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]] VKD3D-ProtonHas an internal graphics API wrapper for Direct3D 1-11 using OpenGL. It works mostly well for older games:A fork of VKD3D funded by Valve, but which is slower more developed and has more bugs than newer wrappers using Vulkan, such as experimental support for DXR via VK_KHR_ray_tracing. Requires DXVK. It's possible dxgi.dll file to use Wine's wrapper in work on Windows using different forks.
;[httpsvkd3d://github.com/iXit/wine-nineWine's work-standalone Gallium Nine]An openin-source implementation of the progress Direct3D 9 library. Gallium Nine is different since it uses calls native to Linux as opposed 12 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)wrapper.
;[httpsd3d8to9://sourceNot as versatile as dgVoodoo2, however it's the only wrapper that can wrap Direct3D 8 into 9.winehqIts main advantage is Windows XP support, which dgVoodoo2 lacks.org/git/vkd3d.git/ vkd3d] A work-It's specifically useful for Windows XP running in-progress VMware, since VMware's Direct3D 12 to Vulkan wrapper created for Wine by Valve8 acceleration has graphical and/or performance issues.
;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://githubwww.collabora.com/disks86news-and-blog/blog/VK9 VK92018/10/31/introducing-zink-opengl-implementation-vulkan/ Introducing Zink, an OpenGL implementation on top of Vulkan] . Collabora.</ref>A Direct3D 9 wrapper that outputs ==See also==* [[Compatibility layers]] - Allows software written for one platform to Vulkanrun 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]
==References=={{Reflist}}[[Category:Not really emulators]]
11,787
edits

Navigation menu