Releases: maohgad-web/Neural-coprocessor
Release list
v0.2.4 - MGPU Bridge, Single Display Support and Super Resolution Improvements (hotfix)
The current release. Drop-in: no compilation needed.
What this release does
A second GPU runs the game's DLSS Neural Rendering while the first one renders. Not SLI - nothing is split mid-frame. Neural rendering is a terminal stage: it takes a finished frame and returns a finished frame, so it can be executed somewhere else entirely.
-
The game's own depth and motion vectors reach DLSS 5 on the second card. The model derives motion from colour on its own, which is what 0.1.0 ran on and it works. Feeding it the engine's real depth and velocity gives it ground truth instead of an estimate, and the gain is image stability: less jitter and sizzle on faces and fine geometry while the camera moves. On a frame that cannot supply them, a menu or a load screen, they are unbound rather than left pointing at the last frame's, and the derived motion takes over for as long as that lasts.
-
Both cards can have their own DLSS Super Resolution pass. The second card can do its neural work at a lower resolution and let DLSS enlarge the result - a way for a weaker second card to keep up with a stronger render card. Independent of the game's own DLSS, which can be set to anything or turned off.
-
General optimization, and lower latency at higher resolutions. The two cards balance load between them in either direction, so a speed mismatch no longer builds into a backlog. That is what paid for depth and motion vectors: what they cost to move still fits inside the one frame window 0.1.0 ran on. The latency improvement requires Reflex.
Across the five titles listed below, engine depth was valid on every frame and no frame was ever bound against a buffer that did not match what it was sealed as.
New in 0.2.4
One display is supported. Set DcompOverlay=1 in mgpu.ini. The bridge stops opening a window of its own and draws the neural output onto the game's own window instead, so the game keeps its input: mouse, keyboard and controller all work, with no third-party tools. The display goes on the neural card, and the card that renders the game has nothing plugged into it. Two monitors, one per card, is still what every published figure was measured on.
Native Upscaling is improved. It now reads the render resolution the game declares to DLSS rather than inferring it, which makes it available on more titles and improves stability in motion. SRMvLowRes changes default from 0 to 2 - take the new mgpu.ini.
The panel reports your game's setting. It says DLAA or DLSS, and when Native Upscaling cannot run it names the setting to change instead of implying a fault. The bridge window also stops going red while it waits for motion vectors, which it can do for a minute or more before you reach gameplay.
New in 0.2.3
iGPU detection is improved. If you have an integrated GPU enabled alongside your two graphics cards, it no longer causes problems - and you do not have to disable it.
Depth and motion vector support for 007 First Light (issue #16). The same fix also covers Cyberpunk 2077, where depth would not bind if you had Ray Reconstruction enabled.
The bridge window reports a bad install instead of waiting. ERROR 204 when the game's ReShade runtime never compiled the depth tap - almost always EffectSearchPaths in the game's ReShade.ini not pointing at the folder the file is in. ERROR 205 for a missing mgpu.ini. Read-only: the add-on reads your config and never writes it.
New in 0.2.2
Run Games with Anti-cheat and online games at your own risk
A startup crash on titles that ship NVIDIA Streamline is fixed. Reported on Battlefield 6(issue #14), where it happened on every launch on the reporter's machine and roughly one launch in ten here. Confirmed fixed on the machine it happened to every time.
Battlefield 6 SP Campaign now receives the game's real motion vectors. On engines where the usual route never delivers them, the bridge takes them from the DLSS pass instead, and decides that for itself.
One limitation came with it, and it is worth knowing before you rely on it: the second card can only be handed the engine's motion vectors when the game itself is running DLSS or DLAA. With TAA, or with upscaling off, the model derives motion from colour instead - which is what 0.1.0 ran on throughout. Neural rendering itself is unaffected. Measured on Battlefield 6: 96-98% of frames with DLSS or DLAA, none with TAA.
New in 0.2.1
The standard effects pack is no longer required. Reported by a user after 0.2.0 shipped: skipping that pack in the ReShade installer made the add-on fail silently. The report was correct. mgpu_depth_tap.fx included ReShade.fxh, which ships with the pack, so without it the shader did not compile, ReShade.log said TAP = ABSENT, and the bridge never armed. The shader is self-contained now.
Super Resolution has two named modes, and the panel no longer hides itself. Native Upscaling upscales from the game's own render resolution, so the game's motion vectors are used exactly as reported with nothing rescaled - the default, and the higher quality of the two. Experimental Upscaler works from a downscaled resolution chosen in the panel instead: more performance, possible cost in quality, untested beyond one rig. The preset and mode buttons now stay visible when Super Resolution is off rather than disappearing.
Upgrading
From 0.2.3: replace the files, and take the new mgpu.ini. 0.2.4 changes SRMvLowRes from 0 to 2, which affects image quality under Native Upscaling. If you keep an edited mgpu.ini, change that one key by hand. Nothing moved.
From 0.2.2, 0.2.1 or 0.2.0: as above. mgpu.ini has also gained MvecFromEval, CalibRung and DcompOverlay along the way, so take the new one rather than keeping yours.
From 0.1.0: move nvngx_dlssnr.dll into a folder called mgpu beside the add-on, and delete the copy next to the game executable. Some titles load anything named nvngx_*.dll sitting next to their own executable, and then the neural stage binds to the wrong GPU. The panel says INSTALL PROBLEM if it finds one there.
Also new since 0.1.0: mgpu_depth_tap.fx goes in ReShade's Shaders folder. It is in this download, it needs no effect packages, and the add-on enables the technique itself. Without it ReShade never binds depth and the bridge never arms.
What's in the zip
| file | what it is |
|---|---|
nvngx.dll_mgpu_bridge.addon64 |
the add-on |
mgpu.ini |
its settings, read from beside the add-on |
gpu1.ini |
empty ReShade preset for the bridge runtime |
ReShade2.ini |
config for the bridge's own ReShade runtime |
reshade-shaders\Shaders\mgpu_depth_tap.fx |
keeps ReShade's depth bound. Required |
README.txt |
install steps and every known limitation |
LICENSE |
MIT |
Where it goes
Unpack into the folder containing the game's .exe; the zip keeps its own structure. In Steam: right-click the game, Manage, Browse local files, then keep going down until you see the .exe - on Unreal titles usually ...\<Game>\Binaries\Win64\.
<the folder with the game .exe>\
Game.exe the game (already there)
dxgi.dll ReShade, ADD-ON-ENABLED build. Yours.
ReShade.ini yours, ReShade makes it on first run
ReShadePreset.ini yours, ReShade makes it on first run
nvngx.dll_mgpu_bridge.addon64 <- from this download
mgpu.ini <- from this download
gpu1.ini <- from this download
ReShade2.ini <- from this download
mgpu\
nvngx_dlssnr.dll <- NOT from this download. Yours.
NOT beside the .exe.
reshade-shaders\Shaders\
mgpu_depth_tap.fx <- from this download
The mgpu folder is the one step you do by hand. Nothing in this download creates it and the name has to be exactly mgpu.
Do not rename the add-on. The filename must contain the literal substring nvngx.dll - the DLSS-NR snippet checks the file path of whichever module called it. Rename it and the add-on loads, logs normally, and produces nothing.
Nothing from NVIDIA is included in this download, and none of it may be. _nvngx.dll is the driver core and is already resident on a current driver. nvngx_dlssnr.dll is the DLSS-NR snippet, loaded from the mgpu subfolder - on the development machines it was already in the game folder. This project does not ship it, cannot ship it, and does not document how to obtain it. Do not redistribute NVIDIA binaries.
What you need
- Two RTX 50-series GPUs. Two monitors, one on each, extended is what every published figure was measured on - the neural output is displayed by the card that produced it. One monitor also works: set
DcompOverlay=1, put the display on the neural card, and leave nothing plugged into the card that renders the game. See the README for both. 40-series has been reported working by a contributor on an RTX 4080 SUPER with an RTX 5060 Ti. - ReShade 6.8.0 or newer, installed with add-on support. The effects-only build never loads
.addon64files and says nothing about it. No effect packages are needed. - A DirectX 12 game. D3D11 and Vulkan do nothing; the add-on stands down and says so in the panel.
- No other add-on.
Before you run it
The bridge can take a while to arm, and that is normal. It waits for a depth buffer and a velocity buffer, and neither exists in a menu. Across the five titles below the wait ran from under two seconds to about for...
v0.2.3 - MGPU Bridge, engine depth and motion vectors (hotfix)
The current release. Drop-in: no compilation needed.
What this release does
A second GPU runs the game's DLSS Neural Rendering while the first one renders. Not SLI - nothing is split mid-frame. Neural rendering is a terminal stage: it takes a finished frame and returns a finished frame, so it can be executed somewhere else entirely.
-
The game's own depth and motion vectors reach DLSS 5 on the second card. The model derives motion from colour on its own, which is what 0.1.0 ran on and it works. Feeding it the engine's real depth and velocity gives it ground truth instead of an estimate, and the gain is image stability: less jitter and sizzle on faces and fine geometry while the camera moves. On a frame that cannot supply them, a menu or a load screen, they are unbound rather than left pointing at the last frame's, and the derived motion takes over for as long as that lasts.
-
Both cards can have their own DLSS Super Resolution pass. The second card can do its neural work at a lower resolution and let DLSS enlarge the result - a way for a weaker second card to keep up with a stronger render card. Independent of the game's own DLSS, which can be set to anything or turned off.
-
General optimization, and lower latency at higher resolutions. The two cards balance load between them in either direction, so a speed mismatch no longer builds into a backlog. That is what paid for depth and motion vectors: what they cost to move still fits inside the one frame window 0.1.0 ran on. The latency improvement requires Reflex.
Across the five titles listed below, engine depth was valid on every frame and no frame was ever bound against a buffer that did not match what it was sealed as.
New in 0.2.3
iGPU detection is improved. If you have an integrated GPU enabled alongside your two graphics cards, it no longer causes problems - and you do not have to disable it.
Depth and motion vector support for 007 First Light (issue #16). The same fix also covers Cyberpunk 2077, where depth would not bind if you had Ray Reconstruction enabled.
The bridge window reports a bad install instead of waiting. ERROR 204 when the game's ReShade runtime never compiled the depth tap - almost always EffectSearchPaths in the game's ReShade.ini not pointing at the folder the file is in. ERROR 205 for a missing mgpu.ini. Read-only: the add-on reads your config and never writes it.
New in 0.2.2
Run Games with Anti-cheat and online games at your own risk
A startup crash on titles that ship NVIDIA Streamline is fixed. Reported on Battlefield 6(issue #14), where it happened on every launch on the reporter's machine and roughly one launch in ten here. Confirmed fixed on the machine it happened to every time.
Battlefield 6 SP Campaign now receives the game's real motion vectors. On engines where the usual route never delivers them, the bridge takes them from the DLSS pass instead, and decides that for itself.
One limitation came with it, and it is worth knowing before you rely on it: the second card can only be handed the engine's motion vectors when the game itself is running DLSS or DLAA. With TAA, or with upscaling off, the model derives motion from colour instead - which is what 0.1.0 ran on throughout. Neural rendering itself is unaffected. Measured on Battlefield 6: 96-98% of frames with DLSS or DLAA, none with TAA.
New in 0.2.1
The standard effects pack is no longer required. Reported by a user after 0.2.0 shipped: skipping that pack in the ReShade installer made the add-on fail silently. The report was correct. mgpu_depth_tap.fx included ReShade.fxh, which ships with the pack, so without it the shader did not compile, ReShade.log said TAP = ABSENT, and the bridge never armed. The shader is self-contained now.
Super Resolution has two named modes, and the panel no longer hides itself. Native Upscaling upscales from the game's own render resolution, so the game's motion vectors are used exactly as reported with nothing rescaled - the default, and the higher quality of the two. Experimental Upscaler works from a downscaled resolution chosen in the panel instead: more performance, possible cost in quality, untested beyond one rig. The preset and mode buttons now stay visible when Super Resolution is off rather than disappearing.
Upgrading
From 0.2.2: replace the files and restart. Nothing moved and no setting changed.
From 0.2.1 or 0.2.0: as above. mgpu.ini gained two keys in 0.2.2 - MvecFromEval=2 and CalibRung=0 - so take the new one rather than keeping yours, or add those two lines by hand.
From 0.1.0: move nvngx_dlssnr.dll into a folder called mgpu beside the add-on, and delete the copy next to the game executable. Some titles load anything named nvngx_*.dll sitting next to their own executable, and then the neural stage binds to the wrong GPU. The panel says INSTALL PROBLEM if it finds one there.
Also new since 0.1.0: mgpu_depth_tap.fx goes in ReShade's Shaders folder. It is in this download, it needs no effect packages, and the add-on enables the technique itself. Without it ReShade never binds depth and the bridge never arms.
What's in the zip
| file | what it is |
|---|---|
nvngx.dll_mgpu_bridge.addon64 |
the add-on |
mgpu.ini |
its settings, read from beside the add-on |
gpu1.ini |
empty ReShade preset for the bridge runtime |
ReShade2.ini |
config for the bridge's own ReShade runtime |
reshade-shaders\Shaders\mgpu_depth_tap.fx |
keeps ReShade's depth bound. Required |
README.txt |
install steps and every known limitation |
LICENSE |
MIT |
Where it goes
Unpack into the folder containing the game's .exe; the zip keeps its own structure. In Steam: right-click the game, Manage, Browse local files, then keep going down until you see the .exe - on Unreal titles usually ...\<Game>\Binaries\Win64\.
<the folder with the game .exe>\
Game.exe the game (already there)
dxgi.dll ReShade, ADD-ON-ENABLED build. Yours.
ReShade.ini yours, ReShade makes it on first run
ReShadePreset.ini yours, ReShade makes it on first run
nvngx.dll_mgpu_bridge.addon64 <- from this download
mgpu.ini <- from this download
gpu1.ini <- from this download
ReShade2.ini <- from this download
mgpu\
nvngx_dlssnr.dll <- NOT from this download. Yours.
NOT beside the .exe.
reshade-shaders\Shaders\
mgpu_depth_tap.fx <- from this download
The mgpu folder is the one step you do by hand. Nothing in this download creates it and the name has to be exactly mgpu.
Do not rename the add-on. The filename must contain the literal substring nvngx.dll - the DLSS-NR snippet checks the file path of whichever module called it. Rename it and the add-on loads, logs normally, and produces nothing.
Nothing from NVIDIA is included in this download, and none of it may be. _nvngx.dll is the driver core and is already resident on a current driver. nvngx_dlssnr.dll is the DLSS-NR snippet, loaded from the mgpu subfolder - on the development machines it was already in the game folder. This project does not ship it, cannot ship it, and does not document how to obtain it. Do not redistribute NVIDIA binaries.
What you need
- Two RTX 50-series GPUs, with a monitor on each, extended. The neural output is displayed by the card that produced it. A single display is not supported - the bridge presents through its own swapchain in its own window - but there is an unsupported workaround, and it is the other way round: the display goes on the neural card. See the README. 40-series has been reported working by a contributor on an RTX 4080 SUPER with an RTX 5060 Ti.
- ReShade 6.8.0 or newer, installed with add-on support. The effects-only build never loads
.addon64files and says nothing about it. No effect packages are needed. - A DirectX 12 game. D3D11 and Vulkan do nothing; the add-on stands down and says so in the panel.
- No other add-on.
Before you run it
The bridge can take a while to arm, and that is normal. It waits for a depth buffer and a velocity buffer, and neither exists in a menu. Across the five titles below the wait ran from under two seconds to about forty-five. If it never clears, [R63] and [R78] in ReShade.log say which is missing. On 0.2.3 the bridge window says it too: ERROR 204 means the game's ReShade runtime never compiled the depth tap, and [MGPU][R142] in the log prints your EffectSearchPaths beside the folder the file ships in.
On some titles the engine's motion vectors need the game to be running DLSS or DLAA. With TAA, or with upscaling off, the model falls back to deriving motion from colour. Everything still runs; the vectors are what you lose.
Do not change resolution, DLSS mode or graphics presets while armed - the stream is armed once against the swapchain as it stands, and rebuilding it can freeze the session. Frame generation is untested. Washed or flat colour? Take tone down in the panel. AutoArm=1 ships; set it to 0 to arm by hand with CTRL+ALT+F10, and before measuring anything.
Titles this build was run on
Each completed a bounded run, arming and exiting cleanly, with engine depth valid on every frame and zero contract mismatches. Logs in docs/0.2.0.
| Title | Resolution |
|---|---|
| Resonance - A Plague Tale Legacy | 2560x1440 |
| CONTROL Ultimate... |
v0.2.2 - MGPU Bridge, engine depth and motion vectors (hotfix)
The current release. Drop-in: no compilation needed.
What this release does
A second GPU runs the game's DLSS Neural Rendering while the first one renders. Not SLI - nothing is split mid-frame. Neural rendering is a terminal stage: it takes a finished frame and returns a finished frame, so it can be executed somewhere else entirely.
-
The game's own depth and motion vectors reach DLSS 5 on the second card. The model derives motion from colour on its own, which is what 0.1.0 ran on and it works. Feeding it the engine's real depth and velocity gives it ground truth instead of an estimate, and the gain is image stability: less jitter and sizzle on faces and fine geometry while the camera moves. On a frame that cannot supply them, a menu or a load screen, they are unbound rather than left pointing at the last frame's, and the derived motion takes over for as long as that lasts.
-
Both cards can have their own DLSS Super Resolution pass. The second card can do its neural work at a lower resolution and let DLSS enlarge the result - a way for a weaker second card to keep up with a stronger render card. Independent of the game's own DLSS, which can be set to anything or turned off.
-
General optimization, and lower latency at higher resolutions. The two cards balance load between them in either direction, so a speed mismatch no longer builds into a backlog. That is what paid for depth and motion vectors: what they cost to move still fits inside the one frame window 0.1.0 ran on. The latency improvement requires Reflex.
Across the five titles listed below, engine depth was valid on every frame and no frame was ever bound against a buffer that did not match what it was sealed as.
New in 0.2.2
Run Games with Anti-cheat and online games at your own risk
A startup crash on titles that ship NVIDIA Streamline is fixed. Reported on Battlefield 6(issue #14), where it happened on every launch on the reporter's machine and roughly one launch in ten here. Confirmed fixed on the machine it happened to every time.
Battlefield 6 SP Campaign now receives the game's real motion vectors. On engines where the usual route never delivers them, the bridge takes them from the DLSS pass instead, and decides that for itself.
One limitation came with it, and it is worth knowing before you rely on it: the second card can only be handed the engine's motion vectors when the game itself is running DLSS or DLAA. With TAA, or with upscaling off, the model derives motion from colour instead - which is what 0.1.0 ran on throughout. Neural rendering itself is unaffected. Measured on Battlefield 6: 96-98% of frames with DLSS or DLAA, none with TAA.
New in 0.2.1
The standard effects pack is no longer required. Reported by a user after 0.2.0 shipped: skipping that pack in the ReShade installer made the add-on fail silently. The report was correct. mgpu_depth_tap.fx included ReShade.fxh, which ships with the pack, so without it the shader did not compile, ReShade.log said TAP = ABSENT, and the bridge never armed. The shader is self-contained now.
Super Resolution has two named modes, and the panel no longer hides itself. Native Upscaling upscales from the game's own render resolution, so the game's motion vectors are used exactly as reported with nothing rescaled - the default, and the higher quality of the two. Experimental Upscaler works from a downscaled resolution chosen in the panel instead: more performance, possible cost in quality, untested beyond one rig. The preset and mode buttons now stay visible when Super Resolution is off rather than disappearing.
Upgrading
From 0.2.1: replace the files and restart. Nothing moved. mgpu.ini gains two keys - MvecFromEval=2 and CalibRung=0 - so take the new one rather than keeping yours, or add those two lines by hand.
From 0.2.0: as above, and see the 0.2.1 notes.
From 0.1.0: move nvngx_dlssnr.dll into a folder called mgpu beside the add-on, and delete the copy next to the game executable. Some titles load anything named nvngx_*.dll sitting next to their own executable, and then the neural stage binds to the wrong GPU. The panel says INSTALL PROBLEM if it finds one there.
Also new since 0.1.0: mgpu_depth_tap.fx goes in ReShade's Shaders folder. It is in this download, it needs no effect packages, and the add-on enables the technique itself. Without it ReShade never binds depth and the bridge never arms.
What's in the zip
| file | what it is |
|---|---|
nvngx.dll_mgpu_bridge.addon64 |
the add-on |
mgpu.ini |
its settings, read from beside the add-on |
gpu1.ini |
empty ReShade preset for the bridge runtime |
ReShade2.ini |
config for the bridge's own ReShade runtime |
reshade-shaders\Shaders\mgpu_depth_tap.fx |
keeps ReShade's depth bound. Required |
README.txt |
install steps and every known limitation |
LICENSE |
MIT |
Where it goes
Unpack into the folder containing the game's .exe; the zip keeps its own structure. In Steam: right-click the game, Manage, Browse local files, then keep going down until you see the .exe - on Unreal titles usually ...\<Game>\Binaries\Win64\.
<the folder with the game .exe>\
Game.exe the game (already there)
dxgi.dll ReShade, ADD-ON-ENABLED build. Yours.
ReShade.ini yours, ReShade makes it on first run
ReShadePreset.ini yours, ReShade makes it on first run
nvngx.dll_mgpu_bridge.addon64 <- from this download
mgpu.ini <- from this download
gpu1.ini <- from this download
ReShade2.ini <- from this download
mgpu\
nvngx_dlssnr.dll <- NOT from this download. Yours.
NOT beside the .exe.
reshade-shaders\Shaders\
mgpu_depth_tap.fx <- from this download
The mgpu folder is the one step you do by hand. Nothing in this download creates it and the name has to be exactly mgpu.
Do not rename the add-on. The filename must contain the literal substring nvngx.dll - the DLSS-NR snippet checks the file path of whichever module called it. Rename it and the add-on loads, logs normally, and produces nothing.
Nothing from NVIDIA is included in this download, and none of it may be. _nvngx.dll is the driver core and is already resident on a current driver. nvngx_dlssnr.dll is the DLSS-NR snippet, loaded from the mgpu subfolder - on the development machines it was already in the game folder. This project does not ship it, cannot ship it, and does not document how to obtain it. Do not redistribute NVIDIA binaries.
What you need
- Two RTX 50-series GPUs, with a monitor on each, extended. The neural output is displayed by the card that produced it. Headless works and is meaningfully slower. A single display is not supported: the bridge presents through its own swapchain in its own window. 40-series has been reported working by a contributor on an RTX 4080 SUPER with an RTX 5060 Ti.
- ReShade 6.8.0 or newer, installed with add-on support. The effects-only build never loads
.addon64files and says nothing about it. No effect packages are needed. - A DirectX 12 game. D3D11 and Vulkan do nothing; the add-on stands down and says so in the panel.
- No other add-on.
Before you run it
The bridge can take a while to arm, and that is normal. It waits for a depth buffer and a velocity buffer, and neither exists in a menu. Across the five titles below the wait ran from under two seconds to about forty-five. If it never clears, [R63] and [R78] in ReShade.log say which is missing, and TAP = ABSENT means the shader is not installed.
On some titles the engine's motion vectors need the game to be running DLSS or DLAA. With TAA, or with upscaling off, the model falls back to deriving motion from colour. Everything still runs; the vectors are what you lose.
Do not change resolution, DLSS mode or graphics presets while armed - the stream is armed once against the swapchain as it stands, and rebuilding it can freeze the session. Frame generation is untested. Washed or flat colour? Take tone down in the panel. AutoArm=1 ships; set it to 0 to arm by hand with CTRL+ALT+F10, and before measuring anything.
Titles this build was run on
Each completed a bounded run, arming and exiting cleanly, with engine depth valid on every frame and zero contract mismatches. Logs in docs/0.2.0.
| Title | Resolution |
|---|---|
| Resonance - A Plague Tale Legacy | 2560x1440 |
| CONTROL Ultimate Edition (DX12 executable) | 2560x1440 |
| DragonSword Awakening | 2560x1411 |
| Cyberpunk 2077 | 3840x2160 |
| The Blood of Dawnwalker | 2560x1440 |
A launch and transport check, not a benchmark. The performance figures in the README were measured on 0.1.0 and have not been re-measured.
Battlefield 6 was verified on 0.2.2 by the reporter of issue #14, on the machine that crashed every launch before it, at 3840x2160.
Status
Research code, not a product. It creates a second D3D12 device and allocates cross-adapter shared heaps on your hardware - the source is all here and reading it first is a reasonable thing to do.
Windows SmartScreen and some antivirus will flag an unsigned DLL, particularly one named after nvngx.dll. It is unsigned because signing certificates cost money, not because there is anything to hide; build it yourself from source if that matters to you.
Provenance
Built by GitHub Actions, not on a desktop. Everything...
v0.2.1 - MGPU Bridge, engine depth and motion vectors (hotfix)
The current release. Drop-in: no compilation needed.
What this release does
A second GPU runs the game's DLSS Neural Rendering while the first one renders. Not SLI - nothing is split mid-frame. Neural rendering is a terminal stage: it takes a finished frame and returns a finished frame, so it can be executed somewhere else entirely.
-
The game's own depth and motion vectors reach DLSS 5 on the second card. The model derives motion from colour on its own, which is what 0.1.0 ran on and it works. Feeding it the engine's real depth and velocity gives it ground truth instead of an estimate, and the gain is image stability: less jitter and sizzle on faces and fine geometry while the camera moves. Finding those buffers is most of what 0.2.x is - this engine writes velocity with a compute shader rather than to a render target, and rotates a pool of depth targets rather than keeping one. Both are identified per frame, copied across the link and bound, with a validity flag so a frame that cannot supply them falls back to the derived motion rather than being bound against the wrong buffer.
-
Both cards can have their own DLSS Super Resolution pass. The second card can do its neural work at a lower resolution and let DLSS enlarge the result - a way for a weaker second card to keep up with a stronger render card. Independent of the game's own DLSS, which can be set to anything or turned off.
-
General optimization, and lower latency at higher resolutions. The two cards balance load between them in either direction, so a speed mismatch no longer builds into a backlog. That is what paid for depth and motion vectors: what they cost to move still fits inside the one frame window 0.1.0 ran on. The latency improvement requires Reflex.
Across the five titles listed below, engine depth was valid on every frame and no frame was ever bound against a buffer that did not match what it was sealed as.
New in 0.2.1
The standard effects pack is no longer required. Reported by a user after 0.2.0 shipped: skipping that pack in the ReShade installer made the add-on fail silently. The report was correct. mgpu_depth_tap.fx included ReShade.fxh, which ships with the pack, so without it the shader did not compile, ReShade.log said TAP = ABSENT, and the bridge never armed. The shader is self-contained now.
Super Resolution has two named modes, and the panel no longer hides itself. Native Upscaling upscales from the game's own render resolution, so the game's motion vectors are used exactly as reported with nothing rescaled - the default, and the higher quality of the two. Experimental Upscaler works from a downscaled resolution chosen in the panel instead: more performance, possible cost in quality, untested beyond one rig. The preset and mode buttons now stay visible when Super Resolution is off rather than disappearing.
Upgrading
From 0.2.0: replace the files and restart. Nothing moved.
From 0.1.0: move nvngx_dlssnr.dll into a folder called mgpu beside the add-on, and delete the copy next to the game executable. Some titles load anything named nvngx_*.dll sitting next to their own executable, and then the neural stage binds to the wrong GPU. The panel says INSTALL PROBLEM if it finds one there.
Also new since 0.1.0: mgpu_depth_tap.fx goes in ReShade's Shaders folder. It is in this download, it needs no effect packages, and the add-on enables the technique itself. Without it ReShade never binds depth and the bridge never arms.
What's in the zip
| file | what it is |
|---|---|
nvngx.dll_mgpu_bridge.addon64 |
the add-on |
mgpu.ini |
its settings, read from beside the add-on |
gpu1.ini |
empty ReShade preset for the bridge runtime |
ReShade2.ini |
config for the bridge's own ReShade runtime |
reshade-shaders\Shaders\mgpu_depth_tap.fx |
keeps ReShade's depth bound. Required |
README.txt |
install steps and every known limitation |
LICENSE |
MIT |
Where it goes
Unpack into the folder containing the game's .exe; the zip keeps its own structure. In Steam: right-click the game, Manage, Browse local files, then keep going down until you see the .exe - on Unreal titles usually ...\<Game>\Binaries\Win64\.
<the folder with the game .exe>\
Game.exe the game (already there)
dxgi.dll ReShade, ADD-ON-ENABLED build. Yours.
ReShade.ini yours, ReShade makes it on first run
ReShadePreset.ini yours, ReShade makes it on first run
nvngx.dll_mgpu_bridge.addon64 <- from this download
mgpu.ini <- from this download
gpu1.ini <- from this download
ReShade2.ini <- from this download
mgpu\
nvngx_dlssnr.dll <- NOT from this download. Yours.
NOT beside the .exe.
reshade-shaders\Shaders\
mgpu_depth_tap.fx <- from this download
The mgpu folder is the one step you do by hand. Nothing in this download creates it and the name has to be exactly mgpu.
Do not rename the add-on. The filename must contain the literal substring nvngx.dll - the DLSS-NR snippet checks the file path of whichever module called it. Rename it and the add-on loads, logs normally, and produces nothing.
Nothing from NVIDIA is included in this download, and none of it may be. _nvngx.dll is the driver core and is already resident on a current driver. nvngx_dlssnr.dll is the DLSS-NR snippet, loaded from the mgpu subfolder - on the development machines it was already in the game folder. This project does not ship it, cannot ship it, and does not document how to obtain it. Do not redistribute NVIDIA binaries.
What you need
- Two RTX 50-series GPUs, with a monitor on each, extended. The neural output is displayed by the card that produced it. Headless works and is meaningfully slower. A single display is not supported: the bridge presents through its own swapchain in its own window. 40-series has been reported working by a contributor on an RTX 4080 SUPER with an RTX 5060 Ti.
- ReShade 6.8.0 or newer, installed with add-on support. The effects-only build never loads
.addon64files and says nothing about it. No effect packages are needed. - A DirectX 12 game. D3D11 and Vulkan do nothing; the add-on stands down and says so in the panel.
- No other add-on.
Before you run it
The bridge can take a while to arm, and that is normal. It waits for a depth buffer and a velocity buffer, and neither exists in a menu. Across the five titles below the wait ran from under two seconds to about forty-five. If it never clears, [R63] and [R78] in ReShade.log say which is missing, and TAP = ABSENT means the shader is not installed.
Do not change resolution, DLSS mode or graphics presets while armed - the stream is armed once against the swapchain as it stands, and rebuilding it can freeze the session. Frame generation is untested. Washed or flat colour? Take tone down in the panel. AutoArm=1 ships; set it to 0 to arm by hand with CTRL+ALT+F10, and before measuring anything.
Titles this build was run on
Each completed a bounded run, arming and exiting cleanly, with engine depth valid on every frame and zero contract mismatches. Logs in docs/0.2.0.
| Title | Resolution |
|---|---|
| Resonance - A Plague Tale Legacy | 2560x1440 |
| CONTROL Ultimate Edition (DX12 executable) | 2560x1440 |
| DragonSword Awakening | 2560x1411 |
| Cyberpunk 2077 | 3840x2160 |
| The Blood of Dawnwalker | 2560x1440 |
A launch and transport check, not a benchmark. The performance figures in the README were measured on 0.1.0 and have not been re-measured.
Status
Research code, not a product. It creates a second D3D12 device and allocates cross-adapter shared heaps on your hardware - the source is all here and reading it first is a reasonable thing to do.
Windows SmartScreen and some antivirus will flag an unsigned DLL, particularly one named after nvngx.dll. It is unsigned because signing certificates cost money, not because there is anything to hide; build it yourself from source if that matters to you.
Provenance
Built by GitHub Actions, not on a desktop. Everything in this zip came out of a public CI run against public source:
run: https://github.com/maohgad-web/Neural-coprocessor/actions/runs/34777598911
SHA-256: b4943d57933d30f0223c53246002166a2f840338bd4522d20205b0fef95a9120
That hash is the digest GitHub recorded for the CI artifact, and this release attaches that artifact unmodified. Verify your download with:
Get-FileHash .\mgpu_bridge.zip -Algorithm SHA256 b4943d57933d30f0223c53246002166a2f840338bd4522d20205b0fef95a9120
0.2.0
v0.2.0 - MGPU Bridge, engine depth and motion vectors
Second packaged build. Drop-in: no compilation needed.
Upgrading from 0.1.0 breaks unless you do two things
Move nvngx_dlssnr.dll into a folder called mgpu beside the add-on, and delete the copy next to the game executable. Some titles load anything named nvngx_*.dll sitting next to their own executable, and then the neural stage binds to the wrong GPU. The panel says INSTALL PROBLEM if it finds one there.
Put mgpu_depth_tap.fx in ReShade's Shaders folder, and make sure ReShade was installed WITH the standard effects pack.* The shader is new and required, and it is in this download. It depends on ReShade.fxh, which is not - that file comes with the standard effects pack. If you installed ReShade for 0.1.0 and skipped the effects, run the ReShade installer against the game again and tick the standard packs; 0.1.0 needed no effects, 0.2.0 does. Missing either one and ReShade never binds depth, so the bridge never arms. The add-on enables the technique itself.
What changed
- The game's own depth and motion vectors now reach DLSS 5 on the second card. It derives motion from colour on its own, which is what 0.1.0 ran on. Real depth and velocity give it ground truth instead of an estimate, and the gain is image stability: less jitter and sizzle on faces and fine geometry in motion. A frame that cannot supply them falls back to the derived motion.
- Both cards can have their own DLSS Super Resolution pass, so the second card can run neural at a lower resolution and scale back up - a way for a weaker card to keep up. Ships off; experimental, in the add-on's panel.
- General optimization, and lower latency at higher resolutions. The two cards balance load between them, in either direction, so a speed mismatch no longer builds a backlog. That is what paid for depth and vectors: they still fit inside 0.1.0's one frame window. The latency improvement requires Reflex.
What's in the zip
| file | what it is |
|---|---|
nvngx.dll_mgpu_bridge.addon64 |
the add-on |
mgpu.ini |
its settings, read from beside the add-on |
gpu1.ini |
empty ReShade preset for the bridge runtime |
ReShade2.ini |
config for the bridge's own ReShade runtime |
reshade-shaders\Shaders\mgpu_depth_tap.fx |
keeps ReShade's depth bound. Required |
README.txt |
install steps and every known limitation |
LICENSE |
MIT |
Where it goes
Unpack into the folder containing the game's .exe; the zip keeps its own structure. In Steam: right-click the game, Manage, Browse local files, then keep going down until you see the .exe - on Unreal titles usually ...\<Game>\Binaries\Win64\.
<the folder with the game .exe>\
Game.exe the game (already there)
dxgi.dll ReShade, ADD-ON-ENABLED build. Yours.
ReShade.ini yours, ReShade makes it on first run
ReShadePreset.ini yours, ReShade makes it on first run
nvngx.dll_mgpu_bridge.addon64 <- from this download
mgpu.ini <- from this download
gpu1.ini <- from this download
ReShade2.ini <- from this download
mgpu\
nvngx_dlssnr.dll <- NOT from this download. Yours.
NOT beside the .exe.
reshade-shaders\Shaders\
mgpu_depth_tap.fx <- from this download
The mgpu folder is the one step you do by hand. Nothing in this download creates it and the name has to be exactly mgpu.
Do not rename the add-on. The filename must contain the literal substring nvngx.dll - the DLSS-NR snippet checks the file path of whichever module called it. Rename it and the add-on loads, logs normally, and produces nothing.
Nothing from NVIDIA is included in this download, and none of it may be. _nvngx.dll is the driver core and is already resident on a current driver. nvngx_dlssnr.dll is the DLSS-NR snippet, now loaded from the mgpu subfolder - on the development machines it was already in the game folder. This project does not ship it, cannot ship it, and does not document how to obtain it. Do not redistribute NVIDIA binaries.
What you need
- Two RTX 50-series GPUs, with a monitor on each, extended. The neural output is displayed by the card that produced it. Headless works and is meaningfully slower. A single display is not supported: the bridge presents through its own swapchain in its own window. 40-series has been reported working by a contributor on an RTX 4080 SUPER with an RTX 5060 Ti.
Putmgpu_depth_tap.fxin ReShade'sShadersfolder, and make sure ReShade was installed WITH the standard effects pack.* The shader is new and required, and it is in this download. It depends onReShade.fxh, which is not - that file comes with the standard effects pack. If you installed ReShade for 0.1.0 and skipped the effects, run the ReShade installer against the game again and tick the standard packs; 0.1.0 needed no effects. - No other add-on needed.
- A DirectX 12 game. D3D11 and Vulkan do nothing; the add-on stands down and says so in the panel.
- No shader pack and no other add-on.
Before you run it
The bridge can take a while to arm, and that is normal. It waits for a depth buffer and a velocity buffer, and neither exists in a menu. Across the five titles below the wait ran from under two seconds to about forty-five. If it never clears, [R63] and [R78] in ReShade.log say which is missing, and TAP = ABSENT means the shader is not installed.
Do not change resolution, DLSS mode or graphics presets while armed - the stream is armed once against the swapchain as it stands, and rebuilding it can freeze the session. Frame generation is untested. Washed or flat colour? Take tone down in the panel. AutoArm=1 ships; set it to 0 to arm by hand with CTRL+ALT+F10, and before measuring anything.
Titles this build was run on
Each completed a bounded run, arming and exiting cleanly, with engine depth valid on every frame and zero contract mismatches. Logs in docs/0.2.0.
| Title | Resolution |
|---|---|
| Resonance - A Plague Tale Legacy | 2560x1440 |
| CONTROL Ultimate Edition (DX12 executable) | 2560x1440 |
| DragonSword Awakening | 2560x1411 |
| Cyberpunk 2077 | 3840x2160 |
| The Blood of Dawnwalker | 2560x1440 |
A launch and transport check, not a benchmark. The performance figures in the README were measured on 0.1.0 and have not been re-measured.
Status
Research code, not a product. It creates a second D3D12 device and allocates cross-adapter shared heaps on your hardware - the source is all here and reading it first is a reasonable thing to do.
Windows SmartScreen and some antivirus will flag an unsigned DLL, particularly one named after nvngx.dll. It is unsigned because signing certificates cost money, not because there is anything to hide; build it yourself from source if that matters to you.
Provenance
Built by GitHub Actions, not on a desktop. Everything in this zip came out of a public CI run against public source:
run: https://github.com/maohgad-web/Neural-coprocessor/actions/runs/34751346468
SHA-256: b53b84b83f393261d974b7abdc438034f0e63f4b6b228a43a727f251b2649ef4
That hash is the digest GitHub recorded for the CI artifact, and this release attaches that artifact unmodified. Verify your download with:
Get-FileHash .\mgpu_bridge.zip -Algorithm SHA256 b53b84b83f393261d974b7abdc438034f0e63f4b6b228a43a727f251b2649ef4
v0.1.0 - MGPU Bridge, first packaged build
First packaged build. Drop-in: no compilation needed.
What's in the zip
| file | what it is |
|---|---|
nvngx.dll_mgpu_bridge.addon64 |
the add-on |
mgpu.ini |
its settings, read from beside the add-on |
gpu1.ini |
empty ReShade preset for the bridge runtime |
ReShade2.ini |
config for the bridge's own ReShade runtime |
README.txt |
install steps and every known limitation |
LICENSE |
MIT |
Where it goes
Everything goes in one folder: the one containing the game's .exe. No
subfolders, nothing anywhere else. In Steam: right-click the game, Manage,
Browse local files, then keep going down until you see the .exe - on Unreal
titles that is usually ...\<Game>\Binaries\Win64\.
What the folder should look like when you are done:
<the folder with the game .exe>\
Game.exe the game (already there)
dxgi.dll ReShade, ADD-ON-ENABLED build. You install
this yourself. Some installs name it
d3d12.dll instead - either is fine.
ReShade.ini yours, ReShade makes it on first run
ReShadePreset.ini yours, ReShade makes it on first run
nvngx.dll_mgpu_bridge.addon64 <- from this download
mgpu.ini <- from this download
gpu1.ini <- from this download
ReShade2.ini <- from this download
Those four files are the whole install. README.txt and LICENSE are for you
rather than for the game folder.
Do not rename the add-on. The filename must contain the literal substring
nvngx.dll - the DLSS-NR snippet checks the file path of whichever module
called it. Rename it and the add-on loads, logs normally, and produces nothing.
Nothing from NVIDIA is included in this download, and none of it may be.
_nvngx.dll is the driver core and is already resident in the game process on a
current driver. nvngx_dlssnr.dll is the DLSS-NR snippet, and it is loaded
from the game's own folder - on the development machines it was already
present there. This project does not ship it, cannot ship it, and does not
document how to obtain it; if DLSS-NR never starts and your log shows the
snippet failing to load, that file is what is missing. Do not redistribute
NVIDIA binaries.
What you need
- Two RTX 50-series GPUs, with a monitor on each. The second monitor is a
requirement, not a nicety - the neural output is displayed by the card that
produced it. Headless works and is meaningfully slower. - ReShade 6.8.0 or newer, installed WITH ADD-ON SUPPORT. The effects-only
build never loads.addon64files and says nothing about it. If your log has
noRegistered add-on "MGPU Bridge"line, this is why. You do not need to
tick any effect packages. - A DirectX 12 game. D3D11 and Vulkan do nothing; the add-on stands down and
says so in the ReShade overlay panel.
No shader pack, and no other add-on, is needed.
Before you run it
- Do not change resolution, DLSS mode or graphics presets while the stream is
armed. The stream is armed once against the game's swapchain as it stands at
that instant. Rebuilding it leaves the bridge consuming an arrangement that no
longer exists, and the session can freeze. Set the game up first. - Frame generation is untested.
- Washed or flat colour? Open the ReShade overlay and take
tonedown.
AutoArm=1 is the shipped default, so it arms itself about ten seconds in. Set
it to 0 in mgpu.ini if you would rather arm by hand with CTRL+ALT+F10, and
set it to 0 before measuring anything.
Status
Research code, not a product. Exercised on two machines with three titles, in
sessions measured in minutes rather than hours. It creates a second D3D12 device
and allocates cross-adapter shared heaps on your hardware - the source is all
here and reading it first is a reasonable thing to do.
Windows SmartScreen and some antivirus will flag an unsigned DLL, particularly
one named after nvngx.dll. It is unsigned because signing certificates cost
money, not because there is anything to hide; build it yourself from source if
that matters to you.
Measurements, method and the full record of what went wrong along the way are in
the repository.
Provenance
Built by GitHub Actions, not on a desktop. Everything in this zip came out of a
public CI run against public source:
- run: https://github.com/maohgad-web/Neural-coprocessor/actions/runs/34073044942
- SHA-256:
9b519b45df60cf2c9db8c421ee3082418b9f7559bc646773fad35261a2189101
That hash is the digest GitHub recorded for the CI artifact, and this release
attaches that artifact unmodified. Verify your download with:
Get-FileHash .\mgpu_bridge.zip -Algorithm SHA256It should print 9B519B45DF60CF2C9DB8C421EE3082418B9F7559BC646773FAD35261A2189101.