Difference between revisions of "Glossary:Display wrapper"
m (Minor formatting fixes) |
|||
(40 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
{{stub}} | {{stub}} | ||
+ | {{Category:System abstraction}} | ||
+ | {{Tocbox}} | ||
− | As APIs get older, their support may | + | ==Description== |
+ | As APIs get older, their maintenance or support may eventually deteriorate or outright dropped, which can lead to numerous compatibility and performance issues in older games. To circumvent these and allow older games to be played with as few issues as possible, '''display API wrappers''' can be used as a [[Virtualization#Compatibility/translation layers|compatibility layer]] that intercepts instructions at runtime which the game sends using older or obsolete APIs and converts them to a different, but newer, API to make use of more modern alternatives (like newer Direct3D, OpenGL or Vulkan). This process is opaque to the game, leaving it unaware that the display API it was developed for is not the one actually being used. Hence, wrappers most often have the same filename as the game's original wrapper to be properly called on every launch. | ||
+ | |||
+ | '''General information''' | ||
+ | {{mm}} [https://www.vogons.org/viewtopic.php?f=9&t=36412 The Wrapper Collection Project \ VOGONS] | ||
+ | {{mm}} [https://emulation.gametechwiki.com/index.php/Wrappers Wrappers - Emulation General Wiki] | ||
==3dfx / Glide wrappers== | ==3dfx / Glide wrappers== | ||
Line 8: | Line 15: | ||
! Name !! API versions !! Wrapping to | ! Name !! API versions !! Wrapping to | ||
|- | |- | ||
− | | [http:// | + | | [http://dege.freeweb.hu/dgVoodoo/dgVoodoo/ dgVoodoo] || 1, 2, 3 || D3D7, 9 |
|- | |- | ||
− | | [ | + | | [[dgVoodoo 2]] || 1, 2, 3 || D3D11, 12 |
|- | |- | ||
− | | [ | + | | [https://www.zeus-software.com/downloads/nglide nGlide] || 1, 2, 3|| D3D9, Vulkan |
|} | |} | ||
Line 20: | Line 27: | ||
! Name !! API versions !! Wrapping to | ! Name !! API versions !! Wrapping to | ||
|- | |- | ||
− | | [ | + | | [[dgVoodoo 2]] || 1-7 || D3D11, 12 |
+ | |- | ||
+ | | [https://github.com/elishacloud/dxwrapper DxWrapper] || 1-7 || DDraw7 (for 1-6), D3D9 | ||
+ | |- | ||
+ | | [https://github.com/narzoul/DDrawCompat DDrawCompat] || 1-7 || System's DDraw, but optimized | ||
+ | |- | ||
+ | | [https://www.winehq.org/ WineD3D] || 1-7 || OpenGL, Vulkan | ||
+ | |- | ||
+ | | [https://dxgl.org/ DXGL] || 1-7 || OpenGL | ||
|- | |- | ||
− | | [ | + | | [https://github.com/CnCNet/cnc-ddraw cnc-ddraw] || 1-7 || GDI, OpenGL, D3D9 |
|- | |- | ||
− | | [ | + | | [http://bitpatch.com/ddwrapper.html Aqrit's DDwrapper] || ? || System's DDraw, but optimized |
|} | |} | ||
+ | {{ii}} Required for fixing [[Glossary:DirectX/DirectDraw troubleshooting|DirectDraw issues on modern systems]]. | ||
==Direct3D wrappers== | ==Direct3D wrappers== | ||
Line 31: | Line 47: | ||
|- | |- | ||
! Name !! API versions !! Wrapping to | ! Name !! API versions !! Wrapping to | ||
+ | |- | ||
+ | | [[dgVoodoo 2]] || 2-9 || D3D11, 12 | ||
|- | |- | ||
| [https://github.com/crosire/d3d8to9/releases d3d8to9] || 8 || D3D9 | | [https://github.com/crosire/d3d8to9/releases d3d8to9] || 8 || D3D9 | ||
|- | |- | ||
− | | [ | + | | [[DXVK]] || 9-11 || Vulkan 1.3<ref>[https://github.com/doitsujin/dxvk/wiki/Driver-support Driver support · doitsujin/dxvk Wiki - GitHub]</ref> |
|- | |- | ||
− | | [https://github.com/ | + | | [https://github.com/AlpyneDreams/d8vk D8VK] || 8 || Vulkan |
|- | |- | ||
− | | [https://github.com/elishacloud/dxwrapper DxWrapper] || | + | | [https://www.winehq.org/ WineD3D] || 2-11 || OpenGL, Vulkan |
+ | |- | ||
+ | | [https://github.com/elishacloud/dxwrapper DxWrapper] || 2-8 || D3D7 (for 2-6), 9 | ||
+ | |- | ||
+ | | [https://github.com/narzoul/DDrawCompat DDrawCompat] || 2-7 || System's D3D2-7, but optimized | ||
|- | |- | ||
| [https://github.com/HansKristian-Work/vkd3d-proton VKD3D-Proton] || 12 || Vulkan | | [https://github.com/HansKristian-Work/vkd3d-proton VKD3D-Proton] || 12 || Vulkan | ||
|- | |- | ||
− | | [https:// | + | | [[Special K]] || 9 || D3D9Ex |
+ | |- | ||
+ | | [https://dxgl.org/ DXGL] || 7 || OpenGL | ||
+ | |- | ||
+ | | [https://github.com/Joshua-Ashton/dxup DXUP] || 9-10 || D3D11 | ||
+ | |- | ||
+ | | [https://github.com/megai2/d912pxy d912pxy] || 9 || D3D12 | ||
|} | |} | ||
+ | |||
+ | {{ii}} There are no Direct3D 1 and 4 versions. Direct3D started with 2, and 4 was cancelled. | ||
==Mantle wrappers== | ==Mantle wrappers== | ||
Line 58: | Line 88: | ||
! Name !! API versions !! Wrapping to | ! Name !! API versions !! Wrapping to | ||
|- | |- | ||
− | | [https://gitlab.freedesktop.org/ | + | | [http://angleproject.org/ ANGLE] || OpenGL ES (all, depending) || OpenGL, D3D9/11, Vulkan, Metal |
+ | |- | ||
+ | | [https://github.com/ptitSeb/gl4es GL4ES] || 2 || OpenGL ES 2.0 | ||
+ | |- | ||
+ | | [https://sourceforge.net/projects/gldirect/ GLDirect] || 1.4 || D3D6/7/8/9 | ||
+ | |- | ||
+ | | [https://www.microsoft.com/en-us/p/opencl-and-opengl-compatibility-pack/9nqpsl29bfff OpenGLOn12] || 3.3 || D3D12 | ||
+ | |- | ||
+ | | [https://github.com/crystice-softworks/QindieGL QindieGL] || 1.1 || D3D9 | ||
+ | |- | ||
+ | | [https://web.archive.org/web/20180810071919/http://titaniumgl.tk/ TitaniumGL] || 1.4 || D3D9 | ||
+ | |- | ||
+ | | [https://github.com/kbiElude/VKGL VKGL] || 3.2 || Vulkan | ||
+ | |- | ||
+ | | [https://gitlab.freedesktop.org/mesa/mesa/-/tree/master/src/gallium/drivers/zink zink] || 4.6 || Vulkan | ||
|} | |} | ||
Line 69: | Line 113: | ||
|} | |} | ||
− | + | {{References}} | |
− | + | ||
− | + | [[Category:System abstraction]] |
Latest revision as of 08:51, 26 October 2023
System abstraction
General
Utilities
Description
As APIs get older, their maintenance or support may eventually deteriorate or outright dropped, which can lead to numerous compatibility and performance issues in older games. To circumvent these and allow older games to be played with as few issues as possible, display API wrappers can be used as a compatibility layer that intercepts instructions at runtime which the game sends using older or obsolete APIs and converts them to a different, but newer, API to make use of more modern alternatives (like newer Direct3D, OpenGL or Vulkan). This process is opaque to the game, leaving it unaware that the display API it was developed for is not the one actually being used. Hence, wrappers most often have the same filename as the game's original wrapper to be properly called on every launch.
General information
3dfx / Glide wrappers
Name | API versions | Wrapping to |
---|---|---|
dgVoodoo | 1, 2, 3 | D3D7, 9 |
dgVoodoo 2 | 1, 2, 3 | D3D11, 12 |
nGlide | 1, 2, 3 | D3D9, Vulkan |
DirectDraw wrappers
Name | API versions | Wrapping to |
---|---|---|
dgVoodoo 2 | 1-7 | D3D11, 12 |
DxWrapper | 1-7 | DDraw7 (for 1-6), D3D9 |
DDrawCompat | 1-7 | System's DDraw, but optimized |
WineD3D | 1-7 | OpenGL, Vulkan |
DXGL | 1-7 | OpenGL |
cnc-ddraw | 1-7 | GDI, OpenGL, D3D9 |
Aqrit's DDwrapper | ? | System's DDraw, but optimized |
- Required for fixing DirectDraw issues on modern systems.
Direct3D wrappers
Name | API versions | Wrapping to |
---|---|---|
dgVoodoo 2 | 2-9 | D3D11, 12 |
d3d8to9 | 8 | D3D9 |
DXVK | 9-11 | Vulkan 1.3[1] |
D8VK | 8 | Vulkan |
WineD3D | 2-11 | OpenGL, Vulkan |
DxWrapper | 2-8 | D3D7 (for 2-6), 9 |
DDrawCompat | 2-7 | System's D3D2-7, but optimized |
VKD3D-Proton | 12 | Vulkan |
Special K | 9 | D3D9Ex |
DXGL | 7 | OpenGL |
DXUP | 9-10 | D3D11 |
d912pxy | 9 | D3D12 |
- There are no Direct3D 1 and 4 versions. Direct3D started with 2, and 4 was cancelled.
Mantle wrappers
Name | API versions | Wrapping to |
---|---|---|
GRVK | Vulkan |
OpenGL wrappers
Name | API versions | Wrapping to |
---|---|---|
ANGLE | OpenGL ES (all, depending) | OpenGL, D3D9/11, Vulkan, Metal |
GL4ES | 2 | OpenGL ES 2.0 |
GLDirect | 1.4 | D3D6/7/8/9 |
OpenGLOn12 | 3.3 | D3D12 |
QindieGL | 1.1 | D3D9 |
TitaniumGL | 1.4 | D3D9 |
VKGL | 3.2 | Vulkan |
zink | 4.6 | Vulkan |
Vulkan wrappers
Name | API versions | Wrapping to |
---|---|---|
MoltenVK | ? | Metal |