2.76.1 / 06-11-2021

dgVoodoo 2





dgVoodoo is a wrapper for old graphics APIs to run on modern Windows operating systems. Its applied using Direct3D11 with different types of wrapping outputs:

  • Hardware rendering at GPU feature level 10.1 (recommended)

  • Hardware rendering at GPU feature level 10.0 (there are some restrictions)

  • Software rendering through Microsoft WARP renderer

The API's it currently can wrap are:

  • Glide 2.11, Glide 2.45, Glide 3.1 and Glide 3.1 Napalm

  • DirectX 1-7 (all versions of DirectDraw and Direct3D up to version 7)

  • Direct3D 8.1

You also need the 3Dfx splash dlls for Glide if you want 3Dfx splash screen or watermark (shameless plug) through dgVoodoo. 

You may also need D3DRM.dll (Direct3D Retained mode) for some games and demos. It's not part of the OS since Windows Vista.


Most Recent Changes


  • Fixing bugs causing crash in the FF vs / TruForm shader code generator

  • Fixing D3D8/9 texture create-parameter validation (X-Blades)

  • Fixing a D3D12 swapchain bug (Balls of Steel through D3D12)

  • Fixing an inconsistency bug of the virtual cards other than the default (The Phantom Menace init error)

  • Improving the D3D/D3D8 z-biasing implementation (The Phantom Menace)


  • Adaptive N-Patch tesselation (ATI TruForm) support for D3D8/9 (needs feature level 11.0 through the output API as a minimum)

  • A new shader code generator for the D3D FF vertex pipeline in favor of better performance with specialized shaders

  • Enabling mixed MSAA types of D3D9 render- and depthstencil targets (some scene demos)

  • BugfixesFixing a DDraw surface create parameter validation incompatibility (Rogue Spear Urban Operations)
    Fixing x64 D3D9 stateblock handling crash
    Fixing a particular D3D8 lighting effect compatibility (Blitzkrieg map editor)
    Fixing a bug in the ps.3.0 DXBC generator
    Fixing a minor bug in DDraw with fast videomemory access
    Fixing freezing video playback in Mega Man X series

  • New optionsAdding scaling mode 'Stretched, keep aspect ratio (CRT like)'
    Adding DirectX\KeepFilterIfPointSampled
    Adding DirectXExt\NPatchTesselationLevel (only for experimenting purposes)
    Adding DirectXExt\EnableSpecializedShaders - this is intented to be a transitioning option, to be removed in a later version

  • Minor peformance optimization for handling ps FF specialized shaders

  • A lot of changes under the hood in general


  • Improving the implementation of user clip planes in the DX backends

  • Minor performance optimization in the D3D11 DX backend

  • Fixing potential D3D12 cache overflow

  • Fixing an incompatibility of GetDC/ReleaseDC on DDraw surfaces (The Secrects of Atlantis)

  • Fixing a regression bug with GetDC/ReleaseDC on DDraw surfaces (Star Wars Galactic Battlegrounds)

  • Fixing scaling of point sprites for upscaled resolutions (Falling Down)

  • Changing the precision of certain visibility calcs to be more compatible with MS D3D (Alien Paranoia)

  • Other minor code changes


  • Minor D3D incompatibility fixed (Corn N64 emulator)

  • Adding dynamic type resolution 'Desktop' (see the appropriate section for details)

  • Changing the implementation of D3D8/9 software cursor to be compatible with MS implementation

  • A bug in the general hw cursor emulation is fixed (No One Lives Forever)

  • Adding ARM64 builds of the 64 bit libraries and the CPL

  • Fixing a bug in the shader code generator (Virtua Tennis 4)

  • Minor DDraw compatibility fix (Alien vs Predator 2 corrupted health texture)

  • DDraw optimizations for LithTech engine lightmap textures handling (Alien vs Predator 2, but it should affect other games as well)

  • Improved GDI hooking to support the old MCI AVI player (Nocturne)

  • DDraw/D3D compatibility fixes to support the old ramp device (Banzai Bug)
    (As for the rendering, this game now runs fine with dgVoodoo in hw mode. However, still there is a problem, see this bug entry )

  • Some performance optimizations in the D3D11/12 DX backends

  • Fixing (refactoring) an old optimization for managed textures (Spirit of Speed 1937, missing textures)

  • Fractional (rational) values for option GeneralExt\FPSLimit


  • Reworking of the FPS limiter to avoid a possible input lag with D3D12

  • Fixing a D3D bug causing unreleased resources (SWAT 3, first run without a config file)

  • Change in the impl of the emulated hw cursor (SWAT 3 bad preformance, but affects other games too)

  • Fixing a bug in the new Glide DXBC generator (Scorched Planet demo)

  • Some optimization on DDrawSurface GetDC/ReleaseDC

  • Fixing vsync flag validation/interpretation in DDrawSurface::Flip

  • Minor change in certain DDraw Debug Layer messages

  • Minor fixes in the CPL


  • Enabling 16K sized surfaces in DDraw (Demon World 2)

  • Optimizing filling-type GPU-work all along the code for lower GPU usage (DDraw/D3D/presentation)This also involves some improvements in filling capabilities of DDraw

  • Removing an old general limitation related to swapchains + code refactoring

  • Implementing an FPS-limiter configurable through the new option GeneralExt\FPSLimit

  • Fixing bicubic + Lanczos filters combined with CRT-like appearance and integer scaling

  • Adding a new option GeneralExt\CursorScaleFactor to control the integer scaled appearance of the emulated hw cursor

  • Adding option DirectXExt\Default3DRenderFormat for possible higher dynamic range

  • Fixing a vs.1.x shader translator bug (The History Channel - Civil War)

  • Fixing a regressive D3D12 DX backend bug

  • Fixing a D3D12 common backend cache bug (nVidia Chameleon demo)

  • Fixing a bug with forced MSAA in D3D11/12 DX backends

  • Implementing missing point-type fillmode (nVidia tech demos)

  • Implementing some missing things in DDraw (Near Fantasy Space)

  • Minor change in handling the FPU state (Tantra Online)

  • A Glide3 incompatibility is fixed (Test Drive 5)

  • Glide x64 bugfixings: bad thick-line drawing and crash in guDrawPolygonVertexListWithClip

  • Slight modification in Glide window handling when enviroment is configured to Dosbox


  • Replacing the HLSL compiler in Glide ps shaders with an own code generator
    So now dgVoodoo does not need the external D3DCompiler at all

  • Optimizations in D3D sw vertex processing calcs

  • Optimizations in D3D state blocks + some minor D3D9 optimizations

  • Fixing a D3D9 shader incompatibility (Mass Effect)

  • Fixing a shader validator bug (Garfield - Lasagna World Tour)

  • Fixing a regression bug in D3D frontend (Crush)

  • Fixing another bug in D3D frontend

  • Fixing a D3D12 API driving bug

  • Fixing a bump mapping bug in FF shaders (Matrox G400 demo)

  • Fixing a cube texture resolution scaling bug (Colin McRae Rally 3)

  • Fixing a vs.1.x code generator bug (Splinter Cell 2)

  • Fixing D3D9 vs.3.x pointsize output (Fable 3)

  • Minor comparison sampling fix for D3D8/9 (Test Drive Unlimited 2) (D3D12 is recommended)

  • Fixing a D3D colorkeying bug (Restricted Area)

  • Changing the criterions for accepting incoming refresh rate values in DX (see the DirectX readme for details)

  • Fixing a bug in Glide D3D12 backend (Ultimate Race Pro)

  • Fixing an encountered Glide bug (texture chroma range)

  • Minor modification for Glide SstWinOpen to accept (and convert) more invalid buffercount combinations

  • Some debug layer fixings for Glide3 Napalm

  • Gamma ramps now automatically work with D3D12 (with underlying optimizations)
    Color profile is always inherited because of calibration standards on modern systems
    Option General\InheritColorProfileInFullScreenMode is only taken into account when a D3D11 output API is explicitly selected (compatibility mode for old hw)

  • Introducing option GeneralExt\FullscreenAttributes with attribute 'Fake' to enable fake fullscreen rendering

  • Enabling control tabbing + fixing tab-order for the CPL


  • Fixing a state management bug in the D3D11/12 backend (XIII)

  • Fixing a DDraw incompatibility bug (Tetris Worlds)

  • Fixing a Glide LFB locking bug + shutdown incompatibility (Speedboats, but this game has other problems too, causing crash)

  • Fixing a DDraw palette bug (Jedi Knight 2, ... and other old Star Wars games)

  • Fixing a bug in D3D9 frontend (Gothic 3)

  • Fixing an incompatibility in D3D8/9 frontend (Gothic 3)

  • Fixing some bugs in the D3D11 backend when revising code

  • Minor CPL improvements: adding 4GB to DX predefined videomemory values and observing textboxes to detect config changes

  • Internal changes/minor optimizations for future features


  • Fixing a bug in the DXBC generator (Metal Gear 2 Solid Substance, the original version)

  • Making DDraw device window creation compatible with MS DDraw (Everquest)

  • Minor improvement in the DDraw hook layer (Submarine Titans)

  • Fixing a bug in the shader code validator (Anarchy Online)

  • Implementing a minor missing thing in the D3D12 backend (Anarchy Online, but affects other appications as well)

  • Fixing a Glide texture upload bug (Montezuma's Return)

  • Fixing a thing incompatible with MS D3D (Christmas Magic)

  • Fixing a minor D3D12 leak


  • Fixing blurry output of upscaled DDraw rendering

  • Restoring old window handling mode for D3D11

  • Minor Glide debug layer improvement for nonstandard resolution/refresh rate


  • Uhmmm....


  • Support for true multimonitor DDraw applications (my test app)

  • Minor performance improvements in D3D frontend and D3D12 backend (most noticable with Dreamfall The Longest Journey with D3D12)

  • Fixing a memory leak (my own tests)

  • Some minor refactoring in the code

  • Fixing a DDraw bug causing crash (Will Rock)


  • Support for Direct3D12 as output API, the minimum required feature level is 11.0
    Improved/fixed fast video memory access for the DirectX modules.
    Refactored backend code along with some Direct3D11-related bugs fixed.

  • See the readme for the details.

  • dgVoodoo API 2.70 is also included here (for developers).


  • Ummm...


  • New type of filters for resampling the output image are added (Bicubic, Lanczos-2, Lanczos-3).

  • Also, mipmapping support for downscaling the output image is added.

  • A few bugfixings, see the readme for the details.


  • Ummm...


  • Now all section of the configuration file is editable through the CPL.

  • A new config element is added.

  • Many bugfixings, see the readme for the details.


  • Ummm...


  • Support for the external compiler is completely removed for the DirectX modules.

  • A lot of DirectX-related bugfixings.

  • See the readme for the details.


  • First version of Direct3D9 implementation is added.

  • Also, support for external HLSL compiler is made optional and replaced with an internal shader code translator.

  • See the readme for the details.


  • Debug Layer is added into the special release of dgVoodoo modules.

  • Migrating to INI format config file to replace old binary ones.

  • Control Panel app is now PerMonitorAwareV2-aware for DPI scaling.

  • Tremendous bugfixings, see the readme for the details.


  • These releases includes minor and incremental bugfixes for v2.55.

  • Also, x64 version of Glide libraries are added for QEmu for Kjliew's Glide patch.

  • Some new config elements are also introduced.


  • Lot of DirectX-related bugfixings.

  • Some minor Glide-related bugfixings.

  • Some Windows input and Glide-DirectDraw transition issues are also fixed.

  • For the details, see the readme.


  • Support for dynamic resolutions in resolution overriding.

  • Also, GF4 shadow buffering is implemented, works nicely with Splinter Cell 1.

  • A lot of bugfixings.

  • See the readme for the details.


  • 2 new output API's are added: D3D11 with FL 10.1 and the MS WARP renderer.

  • Movie playing through DirectShow is also supported.

  • Resolution forcing in DirectX modules is also implemented.

  • See the readme for the details.