Skip to content

MFG Unlock 1.8.3 — Hooks That Survive ReShade's Startup

Choose a tag to compare

@mavismmg mavismmg released this 05 Nov 20:08
· 5 commits to main since this release

This release fixes a regression from 1.8.2 that kept the higher XMX multipliers locked, and a crash that stopped The Last of Us Part II from starting when a DLSS preset was saved. Both had the same cause. It also makes XMX start in Horizon Zero Dawn Remastered, stops a crash when forcing a multiplier in older Streamline games, opens NVIDIA Dynamic MFG to XMX, and lets RTX 20 and 30 GPUs try XMX through the game's own menu.

Our recommendation stays the same: prefer XMX in games with native DLSS frame generation, and keep the XeMFG backend for games without it.

The cause: ReShade's startup copies of the addon

While a game starts, ReShade may load the addon, create a temporary device, unload the addon and load it again. Ghost of Tsushima, The Last of Us Part II and Horizon Zero Dawn Remastered all do this. A hook the first copy installed stayed in the game after that copy was gone:

  • XMX's hook changed NVIDIA's generator, so the next copy no longer recognized it and refused to unlock the multipliers. Games then offered 2x only, and the in-game menu of The Last of Us Part II showed no MFG options. Thanks to onenowy, who found this and sent the first fix.
  • The DLSS preset hook was hooked a second time on top of the leftover one, and every DLSS creation called it forever. With a preset saved, The Last of Us Part II closed about a minute after every start, with a stack overflow in the addon.

Now these hooks are installed only by the copy that stays loaded: after the first real frame, or for XMX as soon as the game turns DLSS Frame Generation on, if that comes first. Ghost of Tsushima turns it on before its first frame, and NVIDIA's generator must be hooked before Streamline creates frame generation. A hook left by an unloaded copy is detected and never stacked, and the identity of NVIDIA's generator is read before XMX hooks it.

XMX mode

Fixed

  • Higher multipliers locked since 1.8.2 in games where ReShade reloads the addon at startup (above).
  • XMX did not start in Horizon Zero Dawn Remastered. The game sends jittered motion vectors, and the ported multi-frame model refused them (XeFG initialization returned -1000). XMX now falls back to Intel's own 2x model, which takes them. This game's Streamline offers 2x only, so nothing is lost.
  • A refused start is no longer final. XMX tries again when the game changes resolution, format or HDR, instead of staying off until a restart.
  • Inputs copied from the right state. XMX assumed one state for depth, motion vectors and the HUD-less image. It now uses the state the game tagged in Streamline, and on the compute command list Streamline 2.14 uses, the state Streamline hands NGX. In the Streamline Sample, the D3D12 debug layer's errors fell from 15,356 to 171.

NVIDIA Dynamic MFG with XMX

Dynamic MFG was blocked with XMX since 1.8.0, because it had not been validated. It is now available: NVIDIA's runtime chooses how many frames to generate, and XMX generates that count on every frame, as it already did on RTX 50. Tested on an RTX 4070 SUPER. The panel marks it experimental with XMX. It needs the same stack as with NVIDIA's generator: Streamline 2.14.1 or 2.14.16 and DLSS-G 310.9.1 or 310.9.16.

Games confirmed with XMX in this release

Ghost of Tsushima, Horizon Zero Dawn Remastered (2x), The Last of Us Part II, Stellar Blade, Cyberpunk 2077 and Crimson Desert.

RTX 20 and 30 GPUs (experimental)

XMX replaces only NVIDIA's generator, so it needs NVIDIA's DLSS-G runtime to accept the GPU, and on RTX 20 and 30 it refused: NVIDIA's generator declares Ada as its minimum, and Streamline then reports no supported GPU, so the game never offered DLSS Frame Generation. With XMX on these GPUs, the addon now admits the card in those answers. The game offers DLSS Frame Generation, and its menu offers 3x to 6x as on RTX 40. Nothing changes on RTX 40 or 50. Thanks to nefh, whose MFGAmpereUnlock showed the way; this part adapts its admission.

This has not run on a real RTX 20 or 30 yet. If NVIDIA's runtime still cannot create frame generation on the card, the panel says why and offers Use XeMFG, which runs on RTX 20, 30, 40 and 50.

DLSS-G and XMX

  • No forced multiplier above 2x on Streamline older than 2.7. Streamline added multi-frame generation in 2.7. Ghost of Tsushima (2.4.0) and Horizon Zero Dawn Remastered (2.2.1) crashed inside Streamline's DLSS-G when 3x or more was forced. The panel's Frame Multiplier now says when the game's Streamline cannot go above 2x, and the game's own request is used.

Safe mode after repeated crashes

If three sessions in a row end without a clean exit, the notice at the top of the panel offers Safe mode next start. The next start runs without the DLSS presets, XMX and the forced multiplier, so you can see whether one of them causes the crash. Your settings are kept and return on the start after that. Dismiss resets the count.

Compatibility

Existing configuration is kept, and no default changed. A saved NVIDIA Dynamic MFG setting now also applies with XMX. The DLSS preset hook and XMX now start with the first frame, or XMX when the game turns DLSS Frame Generation on, instead of when the addon loads. A game that creates DLSS before its first frame gets the preset on its next DLSS creation, such as a resolution or quality change.

Known limitations

  • XMX on compute command lists: the D3D12 debug layer still reports a few barriers in the first frames, before Streamline settles its states.
  • RTX 20 and 30 with XMX have not run on a real card yet.
  • Once Human: the game's nvngx_dlssg.dll has no profile, so the multipliers stay locked at 2x with XMX. Frame generation at 2x works.
  • Red Dead Redemption 2 with XeMFG: use DX12. In Vulkan, frames reach the display in uneven pairs and stall when the GPU is saturated, so motion is not smooth even at a high count. Queue metered frames early does not change it. DX12 is smooth at 4K. See Red Dead Redemption 2: use DX12.
  • Elden Ring with ERSS 5.0.1: XMX replaces NVIDIA's DLSS frame generation only. If ERSS generates frames another way, XMX has nothing to replace. Use XeMFG.
  • Phantom Blade Zero with a DualSense Edge in DSX's emulation mode: one report of the controller stopping to respond. XMX does not touch input; the cause is unknown.
  • RTX 30 with OptiScaler and other frame generation mods: do not combine them with MFG Unlock. Only one can own frame generation.
  • Horizon Zero Dawn Remastered with XMX runs Intel's 2x model. Higher multipliers repeat the generated frame, and the panel says so.
  • The Vulkan panel shows no latency technology in games without Reflex, although XeMFG uses XeLL there.

Validation

The automated suite ran 208 tests: 205 passed and 3 optional tests were skipped, as in earlier releases.

New automated tests cover a hook that leads into the addon's own image (refused, not stacked), the Streamline 2.7 limit for the forced multiplier, the count of unclean exits and safe mode, and the RTX 20/30 GPU census.

  • Streamline Sample 2.14.16 with the RTX 20/30 path simulated on an RTX 4070 SUPER: the provider's minimum lowered, the gates committed with the original identity, frame generation created and XMX generating. This shows the path runs and changes nothing on RTX 40, not that an RTX 30 is accepted.

Tested by playing on an RTX 4070 SUPER with XMX:

  • The Last of Us Part II with a DLSS preset saved: starts, the in-game menu offers MFG, and XMX generates.
  • Ghost of Tsushima: XMX generates at 2x. Forcing 3x or more no longer closes the game, and the panel says why it is not applied.
  • Horizon Zero Dawn Remastered: XMX generates at 2x with Intel's 2x model.
  • Cyberpunk 2077, Crimson Desert and Stellar Blade: XMX generates. NVIDIA Dynamic MFG with XMX worked.
  • Safe mode was offered after three forced closes in a row.
  • RTX 20/30 path, simulated in a game: the game offered DLSS Frame Generation and XMX generated.

Checked on this machine before the gate:

  • The Last of Us Part II on 1.8.2: reproduced the crash at start with a saved DLSS preset; Windows recorded a stack overflow in HookedCreateFeature.
  • Ghost of Tsushima on 1.8.2: the crash dump shows an exception inside Streamline's DLSS-G 2.4.0 and Streamline's own handler recursing; the addon is not on that stack.
  • Streamline Sample 2.14.16 with this build: XMX hooked only after the first frame, on the three copies of the generator already loaded.
  • Intel's XeFG 1.3.1.78, offline: Intel's 2x model initializes with Horizon Zero Dawn Remastered's flags.

Installation and rollback

Close the game, replace the previous addon with renodx-mfgunlock.addon64, keep only one MFG Unlock addon installed, and restart.

For rollback, close the process, restore your previous addon or the 1.8.2 release, and restart.

Building this version

As in 1.7.0: the addon is the mfgunlock_native_xemfg target of tests/CMakeLists.txt, published as renodx-mfgunlock.addon64; see Building the XeMFG backend.