Changes

Jump to navigation Jump to search

Wrappers

596 bytes removed, 15:08, 19 March 2022
m
Comparisons
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-andproprietary interfaces that are either abandoned or otherwise platform-blog/blog/2018/10/31/introducing-zink-opengl-implementation-vulkan/ a wrapper was created for it anyway]specific.
==90's APIs==
To understand why wrappers are needed for older games, it's important to understand that during During the 90s the graphics card market for , many [[Intel CPUs|IBM PCs and compatiblesPC]] was in its infancy, and Direct3D wasn't an automatic choice for game developers. Some games were often designed for chose to use 3Dfx's Glide API so that it would run with for their Voodoo cardgraphics cards. With 3dfx going bankrupt however, support for Glide These developers didn't stay around 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 was made getting an open-sourcerelease in 2003, but neither NVIDIA and AMD never incorporated it into or ATI adopted support for Glide in their own drivers. A , meaning a wrapper is now needed to play these games with hardware acceleration. Or, or if we're lucky , the game gets [[Game Engine Recreations and Source Ports|a portported or reimplemented]] to use other APIs instead.
Even games using older versions of DirectDraw or Direct3D might can benefit from wrappers. Since they can have compatibility or rendering issues , since those interfaces may not even work properly on modern newer systems. Wrappers also can even enable various overrides and enhancements, such as the use of third-party tools like [https://reshade.me/ ReShade], to enhance or improve the gaming experience.
{| class="wikitable sortable" style="text-align:center;"
|{{✗}} ||{{✓}} ||{{✓}}
|-
|[http://dege.freeweb.hu/ dgVoodoo 2dgVoodoo2]
|align=left|{{Icon|Windows}}
|[http://dege.freeweb.hu/dgVoodoo2/dgVoodoo2.html / {{DgVoodoo2Ver}}]
|Glide, DirectX 1-9
|Direct3D 11, Direct3D 12
|[[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>
|DirectX 1-11
|Vulkan, OpenGL
|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]. ;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 with different device types as wrapping output such as hardware or software rendering.
;[http://dege.freeweb.hu/ dgVoodoo 2[Wine|WineD3D]]Despite the name, dgVoodoo 2 reimplements more than Glide:Wine's internal wrapper for Direct3D 1-11 that targets OpenGL. It replaces multiple APIs; works pretty well for running older Direct3D games, though it does not come with a Glide 2implementation of its own.11, 2A custom build incorporating Vulkan support is available for Windows [https://fdossena.45, 3com/?p=wined3d/index.1, 3.1 Napalm, all versions of DirectDraw and Direct3D up 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 renderingfrag here].
;[[Wine]]DXGLWine :Reimplements DirectDraw using OpenGL. It is a [[Compatibility layers|compatibility layer]] for Linux and macOS. On its own, Wine works pretty well for running older DirectX games. Some forks allow Wine's built-in reimplementations to run under Windowsconsidered alpha software despite many applications working.
;[httpsglrage://www.dxgl.org/ DXGL] A free replacement for ddraw.dll outputting Reimplements ATI3DCIF, an API from ATI used in a handful of games, and DirectDraw 2 over OpenGL. It's Originally designed to overcome driver bugsspecifically for Tomb Raider 1/UB patched with ATIRage patch, mainly in Windows Vista and beyond. It adds various rendering enhancements such as display scaling 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==
If you want to run modern Modern Windows games on another OS you will likely need one of these wrappersto work on other platforms. Usually you don't have to download these separatly as they are not separate downloads, and will come packaged into [[compatibility layers]] like [[Proton]], [[Wine]] , or [https://www.codeweavers.com/crossover CrossOver]. Some wrappers can also be used on Windows to improve compatibility or stability for games using older Direct3D or OpenGL versions. 
{| class="wikitable sortable" style="text-align:center;"
|-
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[[Wine|WineD3D]https://github.com/HansKristian-Work/vkd3d-proton VKD3D-Proton]|align=left|{{Icon|Windows|Linux|macOS}}|[https://wikigithub.winehq.orgcom/Download {{WineVer}}] <small>(Linux, macOS)<HansKristian-Work/small><br vkd3d-proton/> [https://fdossenareleases 2.com/?p=wined3d/index.frag {{WineDevVer}}6] <small>Windows</small>|Direct3D 1-1112|OpenGLVulkan
|{{✓}} ||{{✓}} ||{{✓}}
|-
|[https://github.com/iXit/wine-nine-standalone Gallium Nine]|align=left|{{Icon|Linux}}|[https://github.com/iXit/wine-nine-standalone 0.7]|Direct3D 9|Linux Calls|{{✓}} ||{{✓}} ||{{~}} <small>WIP</small>|-|[https://source.winehq.org/git/vkd3d.git/ vkd3d]
|align=left|{{Icon|Linux}}
|[https://source.winehq.org/git/vkd3d.git/ {{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]
|Vulkan
|Metal
|{{✓}} ||{{✓}} ||{{TBD}}|-|[https://github.com/iXit/wine-nine-standalone Gallium Nine]|align=left|{{Icon|Linux}}|[https://github.com/iXit/wine-nine-standalone/releases v0.8]|Direct3D 9|Gallium|{{✓}} ||{{✓}} ||{{~}} <small>WIP</small>
|-
|[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]
|OpenGL
|Vulkan
|[https://github.com/crosire/d3d8to9/ d3d8to9]
|align=left|{{Icon|Windows}}
|[https://github.com/crosire/d3d8to9/releases 1.11.0git]
|Direct3D 8
|Direct3D 9
|{{✓}} ||{{✓}} ||{{✗}}
|-
|[https://github.com/Joshua-Ashton/d9vk D9VK]
|align=left|{{Icon|Linux}}
|[https://github.com/Joshua-Ashton/d9vk Git]
|Direct3D 9
|Vulkan
|{{✓}} ||{{✗}} ||{{✗}}
|-
|[https://github.com/Joshua-Ashton/dxup DXUP]
|align=left|{{Icon|Windows|Linux}}
|[https://github.com/Joshua-Ashton/dxup Git]
|Direct3D 9-10
|Direct3D 11
|{{✓}} ||{{{✗}} ||{{✗}}
|-
|[https://github.com/disks86/VK9 VK9]
|align=left|{{Icon|Windows|Linux}}
|[https://github.com/disks86/VK9/releases 0.29.0]
|Direct3D 9
|Vulkan
|{{✓}} ||{{✗}} ||{{✗}}
|-
|}
===Comparisons===
;[https://github.com/doitsujin/dxvk DXVK] A wrapper for Direct3D 9-11. 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 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/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.
;MoltenVK:Developed by the Brenwill Workshop under the Khronos Group, it reimplements Vulkan for Metal. Emulators like [[WineDolphin]] Has an internal graphics API wrapper for Direct3D 1-11 using OpenGL. It works mostly well for older games, but is slower and has more bugs than newer wrappers using Vulkan, such as DXVK. It's possible [[DuckStation]] use MoltenVK instead of a native Metal renderer to use Wine's wrapper in Windows using different forkssupport Apple devices.
;[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.
;[httpsVKD3D-Proton://source.winehq.org/git/vkd3d.git/ vkd3d] A work-in-progress Direct3D 12 to Vulkan wrapper created for Wine fork of VKD3D funded by Valve, which is more ahead and experimentally supports DXR via VK_KHR_ray_tracing.
;[httpsGallium Nine://github.com/disks86/VK9 VK9] A An implementation of the Direct3D 9 wrapper 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 outputs to Vulkanthis only works on Mesa, not NVIDIA's proprietary driver.
==External links==;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-nicely.13868vulkan/page=2#r151939 State Introducing Zink, an OpenGL implementation on top of Direct3D 9-12 translation layersVulkan] by DXVK author YoRHa-2B (2019-04-02). Collabora.</ref>
==See also==
* [[Compatibility layers]] - Allows software written for one operating system platform to run on a different OSanother.
==References==
{{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)
 
[[Category:Not really emulators]]
12
edits

Navigation menu