Skip to content

mfg-unlock v1.0

Choose a tag to compare

@matiasLombo matiasLombo released this 02 Sep 02:40
· 14 commits to master since this release

DLSS Multi Frame Generation at 3x and 4x on Ada, with the frame pacing that makes
the extra frames worth having.

Confirmed on an RTX 4070 Ti in two games, one Vulkan and one D3D12, with the same
binary: DOOM The Dark Ages (Streamline 2.12.129) and GTA V Enhanced
(Streamline 2.13.0). The snippet's own diagnostic overlay reports 4x, so the
unlock is confirmed by NVIDIA's code rather than by inference.

Read this first

Anti-cheat. This injects a DLL into the game process. GTA V ships BattlEye,
other titles ship EAC or their own. Using it in a game with anti-cheat active —
GTA Online especially — can get an account banned. Single-player only.

Tested on one machine. One RTX 4070 Ti, driver 616.56, two games, one person.
Other Ada cards should work — the architecture gate and every signature are the
same across the family — but that has not been verified.

Nothing is written to disk. Every patch is applied to the mapped image in
memory. Delete version.dll and the install is exactly as it was.

Install

  1. Copy version.dll next to the game's executable. The game must import
    version.dll; DOOM The Dark Ages and GTA V Enhanced both do.
  2. Create empty files in that folder for what you want:
    • mfg-unpin.txt — the pacing fix. This is the one that stops 4x looking stuttery.
    • mfg-nometer.txt — keeps pacing on the CPU pacer
    • mfg-cubins.txt — three frame-generation kernels rebuilt for Ada
    • mfg-indicator.txt — NVIDIA's own on-screen overlay, for confirming the multiplier
  3. Turn frame generation on in the game and pick 3x or 4x.

Check mfg-unlock.log next to the dll. Anything reporting sites: 0 matched
nothing and did nothing.

Start with mfg-unpin.txt alone and add the rest one at a time.

Why the unlock alone is not enough

With only the architecture gate removed, 15% of generated frames arrive stacked
on another, and entering a game already set to 4x looks wrong until you toggle
the multiplier.

base fps on time stacked
gate only 48.7 72.5% 15.4%
+ pacer 41.3 88.8% 0.4%
+ pacer + metering off 40.6 94.3% 0.1%

The cause is one transition: a pacing flag flips about three quarters of a second
after frame generation starts, and the flip costs a queue flush and a command
context switch mid-gameplay. That is why changing the multiplier and changing it
back appears to fix it. The patch removes the transition.

Rebuilt kernels

The snippet ships PTX for compute_120 and compute_89 per framework
kernel, and they are not the same source — Ada's does its boolean work through a
couple of hundred 16-bit predicates Blackwell's does without. All 31 assemble for
sm_89 unchanged, so none of it is Blackwell-only. Three fit the original's slot
and are swapped in memory: inpaint −28%, inpaint decision −23%, mvec estimate −7%.
Same algorithm, so this is speed and not image.

Those are built from the snippet on your own machine — nothing NVIDIA-derived is
distributed here. See tools/rebuild_cubins.py.

FINDINGS.md has the full teardown, including the dead ends.