github jlrouzies-fr/DLSS5-Feeder v0.13.1-beta.1
0.13.1-beta.1

3 hours ago

You probably do not need to install this by hand

Install-DLSS5Feeder.ps1 does the whole install from one command — ReShade, this feeder, LumeniteFX, your chosen neural consumer, both NVIDIA runtimes, dgVoodoo2 for Direct3D 8/9, and the .ini files with the techniques already enabled in the right order. Drop it next to the game's .exe, right-click ▸ Open in Terminal, and run:

powershell.exe -ExecutionPolicy Bypass -File .\Install-DLSS5Feeder.ps1

Existing files are merged and backed up, never replaced, and it finishes with a verification pass. See AUTOMATIC_INSTALLATION_AVAILABLE.txt in the assets below for the full details and the unattended-run switches.


One new thing on top of 0.13.0-beta.1: the 32-bit add-on now supports Direct3D 10 games directly, with no translation layer in front. Everything else is unchanged, and the helper is byte-for-byte the same code.

32-bit games: take BOTH dlss5-feed.addon32 and host64\dlss5-feed-host64.exe from this zip. The helper protocol is unchanged (still v7) and the helper itself did not change this release — but keep the pair together as a matter of habit; mixed halves are how confusing bug reports start.


Direct3D 10 games now work

Until now a D3D10 game was refused outright — "only Direct3D 11, OpenGL and Vulkan games are supported" — and the README said flatly that D3D10 was not supported. It is now, natively: no dgVoodoo2, no DXVK, nothing extra to install. Install exactly as for any other game of the same bitness; ReShade goes in as dxgi.dll, which is what its own installer picks for "Direct3D 10/11/12".

It is not obvious that this is possible at all, because a Direct3D 10 device cannot reach the 64-bit helper by any route:

  • Shared NT handles are a Direct3D 11.1 feature. D3D10 has only the legacy shared handle, and ID3D12Device::OpenSharedHandle refuses those — so the helper's D3D12 device can never open a texture a D3D10 device made.
  • D3D10 has no fence of any kind. There is no ID3D11Device5::OpenSharedFence and no ID3D11DeviceContext4::Signal/Wait, which is how every other client here says a frame is ready.
  • No UAVs, so the DLSS output could not be written directly.

So the add-on now creates a private Direct3D 11 relay device of its own, inside the game's process, on the game's adapter (matched by LUID, at feature level 11_0). The game's device copies colour, depth and motion vectors to the relay over shared textures; the relay opens the same memory; and from there this is the ordinary 32-bit D3D11 client running unchanged — same shared set, same fence, same pipe, same helper. The helper is never told the game was D3D10, so its protocol version did not move and its code did not change.

The frame comes home by a plain CopyResource rather than by a draw. The relay runs the whole existing blit chain — scaling, FSR1 EASU/RCAS — into a backbuffer-sized shared texture, and the game's device only copies that into its own render target. So the add-on never binds a shader, a viewport or a render target on the game's own device. That matters more on this API than anywhere else: D3D10 has no device context, render state lives directly on the device, and anything set would be silently inherited by the game.

What it costs

Direct3D 10 has no fence, so each frame needs two GPU drains, one per device, and a drain waits for everything that device has outstanding. All three input copies share a single drain rather than paying for one each, but the lost pipelining is the honest price of the API. The overlay's GPU-cost figures (new in 0.13.0-beta.1) will show what it comes to on your machine.

What it does not do

  • DLAA only — and that is the API, not this add-on. A D3D10 game publishes no NGX parameter block and no engine jitter, so what is reconstructed is the finished frame plus whatever the motion-vector provider infers from it. The DirectX 9 and 32-bit Vulkan paths sit under the same ceiling.
  • Pick a motion-vector provider that does not need compute. ReShade compiles effects at shader model 4 on Direct3D 10. LumeniteFX (DLSS5_MV_PROVIDER=3) is the safe first choice — it checks __RENDERER__ and has a non-compute path — and the older pixel-shader providers predate compute entirely.
  • The in-game panel's Show as texture button is unavailable here: the panel would have to cross into the game's ReShade as a Direct3D 11 texture. Use the compositor button beside it, or host_window=1.
  • 32-bit only. A 64-bit D3D10 game is rare enough that the 64-bit add-on has no D3D10 backend.

The installer sent Direct3D 10 games to dgVoodoo2

Get-ApiStringHints scanned for d3d10.dll but not d3d10_1.dll, which is what a Direct3D 10 game actually imports. A game that also imports d3d9.dll for its D3DPERF debug markers — Devil May Cry 4: Special Edition does — was therefore detected as Direct3D 9 and set up with dgVoodoo2, which implements DirectX 1–9 and cannot touch Direct3D 10. The name was already sitting in the script's own skip list. Such a game now takes the ordinary Direct3D 10/11/12 path.

How far this has been tested

Honestly: one game. Devil May Cry 4: Special Edition (32-bit, Direct3D 10.1) — 34,200 frames delivered, no errors, clean shutdown, with DLSS5_Feed.fx and LumeniteFX Kernel both compiling at shader model 4 and the depth buffer found. The transport is also covered by a standalone probe that verifies both directions pixel-by-pixel. It has not been tested at high resolution, on AMD or Intel hardware, or in a second D3D10 title. Logs welcome — dlss5-feed.log line 1 and the D3D10 bridges built line say most of it.

One finding worth passing on. The design notes for this path claim a Direct3D 10.1 device can synchronise with an IDXGIKeyedMutex. On real hardware it cannot: every CreateTexture2D carrying D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX returns E_INVALIDARG — every bind flag, every format — while the same call on a D3D11 device succeeds and plain legacy sharing on the same D3D10 device succeeds. Modern drivers simply do not implement that legacy path, so this build uses event queries instead. The probe keeps the check, so a driver that ever grows the capability will show up as a passing line rather than as folklore.

Don't miss a new DLSS5-Feeder release

NewReleases is sending notifications on new releases.