Changes

Jump to navigation Jump to search

Wrappers

1,670 bytes added, 15:08, 19 March 2022
m
Comparisons
{{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 for, such It works as running old PC games made a drop-in replacement 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 original library that replaces the original, though since a lot of software usually bundled it can also be a standalone interceptoras-is without any fine-tuning. Wrappers aren't needed are most common for OpenGL since its APIs don't require much translation. Despite this, [https://www.collabora.com/news-and-blog/blog/2018/10/31/introducing-zink-opengl-implementationproprietary interfaces that are either abandoned or otherwise platform-vulkan/ a wrapper was created for it anyway]specific.
==90's APIs==
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.
 
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"|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://www.zeus-software.com/downloads/nglide nGlide]
|align=left|{{Icon|Windows}}
|[http://www.zeus-software.com/downloads/nglide 2.10]
|Glide
|Vulkan, Direct3D 9
|{{✗}} ||{{✓}} ||{{✓}}
|-
|[http://dege.freeweb.hu/ dgVoodoo 2dgVoodoo2]|align=left|{{Icon|Windows}}|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2.html 2.62.3/ {{DgVoodoo2Ver}}]
|Glide, DirectX 1-9
|Direct3D 11, Direct3D 12|{{✗}} ||{{✓}} ||{{✓}}
|-
|[[Wine|Wine DirectXWineD3D]]|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>
|DirectX 1-11
|Vulkan, OpenGL|{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://www.dxgl.org/ DXGL]
|align=left|{{Icon|Windows}}|[https://www.dxgl.org/downloads/ 0.5.17{{DXGLVer}}]
|DirectX 1-7
|OpenGL
|{{✓}} ||{{✓}} ||{{TBD}} <small>WIP</small>
|-
|[http://www.glidos.net/ Glidos]
|align=left|{{Icon|Windows}}
|[http://www.glidos.net/download.html 1.53b]
|Glide <small>(DOS)</small>
|?
|{{✗}} ||?{{✗}} ||{{TBD}}
|-
|[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.13]
|Glide
|Direct3D 9
|{{✓}} ||{{✗}} ||?{{✗}}|-|[https://github.com/ata4/glrage glrage]|align=left|{{Icon|Windows}}|[https://github.com/ata4/glrage/releases/latest r10]|ATI3DCIF, DirectDraw 2|OpenGL 3.3|{{✓}} ||{{✗}} ||{{✓}}
|-
|}
===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].
;[httpdgVoodoo2://dege.freeweb.hu/ dgVoodoo 2]Despite the name, dgVoodoo 2 reimplements more than Glide. It replaces multiple APIs; Targets Glide 2.11, 2.45, 3.110, 3.1 Napalm, all versions of DirectDraw and Direct3D up to version 7, Direct3D 8.1, and Direct3D 9. This wrapper outputs Outputs Direct3D 11 with different device types as wrapping output such as hardware or software rendering.
;[[Wine|WineD3D]]A compatibility layer :Wine's internal wrapper for LinuxDirect3D 1-11 that targets OpenGL. On its own, Wine It works pretty well for running older DirectX Direct3D games, though it does not come with a Glide implementation of its own. Some forks allow Wine's built-in reimplementations to run under A custom build incorporating Vulkan support is available for Windows[https://fdossena.com/?p=wined3d/index.frag here].
;[https://www.dxgl.org/ DXGL] A free replacement for ddraw.dll outputting :Reimplements DirectDraw using OpenGL. It's designed to overcome driver bugsis considered alpha software despite many applications working. ;glrage:Reimplements ATI3DCIF, mainly an API from ATI used in Windows Vista a handful of games, and beyondDirectDraw 2 over OpenGL. It adds various rendering enhancements such as display scaling Originally designed specifically for Tomb Raider 1/UB patched with ATIRage patch, currently also supports Assault Rigs and filtering optionsWipeout. DXGL also supports Direct3D 7Additionally, however it's currently under development applies some improvements, fixes and doesn't work with many programsQoL changes to the games.
==2000's and later APIs==
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].
 
{| 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]]
|-
|[https://github.com/doitsujin/dxvk DXVK]
|align=left|{{Icon|Linux}}|[https://github.com/doitsujin/dxvk/releases 1.5{{DXVKVer}}]
|Direct3D 9-11
|Vulkan
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[[Wine|Wine Direct3D]]|Windows, Linux, macOS|[https://wiki.winehq.org/Download {{WineVer}}] <small>(Linux, macOS)</small><br /> [https://fdossenagithub.com/?p=wined3dHansKristian-Work/index.frag {{WineDevVer}}vkd3d-proton VKD3D-Proton] <small>Windows</small>|Direct3D 1-11|OpenGLalign=left|{{✓}} Icon||{{✓Linux}}|-|[https://github.com/iXitHansKristian-Work/winevkd3d-nine-standalone Gallium Nine]|Linux|[https://github.comproton/iXit/wine-nine-standalone 0releases 2.56]|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
|{{✓}} ||{{✓}} ||{{✗}} |-|[[Wine|WineD3D]]|align=left|{{Icon|Windows|Linux|macOS}}|[https://wiki.winehq.org/Download {{WineVer}}] <small>WIP(Linux, macOS)</small><br/>[https://fdossena.com/?p=wined3d/index.frag {{WineDevVer}}] <small>(Windows)</small>|Direct3D 1-11|OpenGL|{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://github.com/KhronosGroup/MoltenVK MoltenVK]
|align=left|{{Icon|macOS, |iOS}}|[https://github.com/KhronosGroup/MoltenVK/releases 1.0.39{{MoltenVKVer}}]
|Vulkan
|Metal
|{{✓}} ||?{{✓}} ||{{✓}}
|-
|[https://www.collaboragithub.com/newsiXit/wine-andnine-blogstandalone Gallium Nine]|align=left|{{Icon|Linux}}|[https:/blog/2018/10github.com/31iXit/introducingwine-zinknine-openglstandalone/releases v0.8]|Direct3D 9|Gallium|{{✓}} ||{{✓}} ||{{~}} <small>WIP</small>|-implementation|[https://gitlab.freedesktop.org/mesa/mesa/-vulkan/ blob/main/docs/drivers/zink.rst Zink]|align=left|{{Icon|Linux}}|[https://gitlab.freedesktop.org/kusmamesa/mesa/tree/zink Gitgit]
|OpenGL
|Vulkan
|{{✓}} ||?|-|[https://github.com/Joshua-Ashton/d9vk D9VK]|Linux|[https://github.com/Joshua-Ashton/d9vk Git]|Direct3D 9|Vulkan|{{✓}} ||{{TBD}}
|-
|[https://github.com/crosire/d3d8to9/ d3d8to9]
|align=left|{{Icon|Windows}}|[https://github.com/crosire/d3d8to9/releases 1.10.0git]
|Direct3D 8
|Direct3D 9
|{{✓}} ||{{✗}}|-|[https://github.com/Joshua-Ashton/dxup DXUP]|Windows, Linux|[https://github.com/Joshua-Ashton/dxup Git]|Direct3D 9-10|Direct3D 11|{{{✗}} ||{{✗}}|-|[https://github.com/disks86/VK9 VK9]|Windows, Linux|[https://github.com/disks86/VK9/releases 0.29.0]|Direct3D 9|Vulkan|{{✗}} ||{{✗}}
|-
|}
===Comparisons===
;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 [[Proton]]. Later merged D9VK to add Direct3D 9 support. ;WineD3D:Wine's internal wrapper for Direct3D 1-11 that targets OpenGL. For newer APIs it has more bugs than DXVK. A custom build incorporating Vulkan support is available for Windows [https://githubfdossena.com/doitsujin?p=wined3d/dxvk DXVKindex.frag here] . ;MoltenVKA wrapper :Developed by the Brenwill Workshop under the Khronos Group, it reimplements Vulkan for Direct3D 9-11Metal. DXVK was designed to speed up support for Direct3D 11 games in Emulators like [[WineDolphin]] and, later, [[ProtonDuckStation]] since use MoltenVK instead of a native implementation seemed unlikelyMetal renderer to support Apple devices. ;vkd3d:Wine's work-in-progress Direct3D 12 to Vulkan wrapper.
:;[https://github.com/JoshuaVKD3D-Ashton/d9vk D9VK] Proton:A fork for Direct3D 9of VKD3D funded by Valve, originally created when DXVK was designed for Direct3D 10 which is more ahead and 11. Was merged back into the main project in version 1.5experimentally supports DXR via VK_KHR_ray_tracing.
;[[Wine]] Gallium NineHas an internal graphics API wrapper :An implementation of the Direct3D 9 library on top of the Gallium driver for Direct3D 1Linux. By using calls native to Linux, applications running under Wine run "at near-11 using OpenGLnative speeds" according to the maintainers. It The caveat is that this only works mostly well for older gameson Mesa, but is slower and has more bugs than newer wrappers using Vulkan, such as DXVK. Itnot NVIDIA's possible to use Wine's wrapper in Windows using different forksproprietary 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/iXitnews-and-blog/wineblog/2018/10/31/introducing-ninezink-standalone Gallium Nine]An openopengl-source implementation -vulkan/ Introducing Zink, an OpenGL implementation on top 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)Collabora.</ref>
;==See also==* [[https://source.winehq.org/git/vkd3d.git/ vkd3dCompatibility layers]] A work-in-progress Direct3D 12 Allows software written for one platform to Vulkan wrapper created for Wine by Valverun on another.
;[https://github.com/disks86/VK9 VK9] ==References==A Direct3D 9 wrapper that outputs to Vulkan.{{Reflist}}
==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)
==References=={{Reflist}}[[Category:Not really emulators]]
12
edits

Navigation menu