Skip to content

About

Native NVIDIA DLSS Frame Generation on GeForce RTX 30 in ELDEN RING - DLSS-G on Ampere (sm_86), with no FSR fallback. Combines ERSS-FG with dlssg_for_sm86, adds a settings profile and a verifier that proves from the logs which frame generation actually ran.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

ER-FG by Lumi

Native NVIDIA DLSS Frame Generation on GeForce RTX 30, in ELDEN RING

No FSR. No fallback. NVIDIA's own frame generation, on Ampere.

Licence Platform GPU API Verified


Full package · 140 MB · nothing else needed
Unlock only · 4.5 MB · if you already run ERSS-FG


NVIDIA restricts DLSS Frame Generation to Ada: RTX 40 and newer. The restriction is a threshold comparison, not a capability test: the DLSS-G runtime already ships precompiled sm_86 kernels, and sm_86 is exactly what every RTX 30 GPU runs.

This is the setup that turns that fact into working frame generation in ELDEN RING, and a way to prove from the logs that the frames really are NVIDIA's.

The entire restriction is one number.

- "original_min_arch": 400   ← Ada
+ "bridge_min_arch":   368   ← 0x170, Ampere GA10x
BeforeChecking DLSS-G support: the feature is not supported, error: 6
Loading FSR Frame Generation 4.0 DX12
AfterChecking DLSS-G support: the feature is supported
Enabling DLSS-G

Measured on a GeForce RTX 3060 Laptop (GA106, sm_86), driver 610.88, Windows 11 26100, ELDEN RING 2.7.0.0, offline, Easy Anti-Cheat disabled.


How it works

Two mods that have never heard of each other, each supplying exactly what the other is missing.

flowchart LR
    EXE["eldenring.exe"] --> D3D12["D3D12.dll<br/><i>ERSS loader</i>"]
    D3D12 --> ERSS["ERSS-FG.dll<br/><b>huutaiii</b>"]
    ERSS -.->|"imports<br/>version.dll"| VER["version.dll<br/><b>sdli1995</b><br/><i>sm_86 unlock</i>"]
    ERSS --> SL["Streamline 2.11.1"]
    VER ==>|"answers<br/><b>supported</b>"| SL
    SL --> DLSSG["sl.dlss_g<br/>cubin_sm86"]
    DLSSG --> OUT(["generated frames"])

    style VER fill:#76b900,stroke:#4a7500,color:#fff
    style DLSSG fill:#1f6feb,stroke:#144a9e,color:#fff
    style OUT fill:#2f7d32,stroke:#1e5620,color:#fff
Loading

ERSS-FG does the genuinely hard part: the Streamline host, DLSS upscaling, and the depth, motion-vector and camera data frame generation consumes. It asks Streamline whether DLSS-G is supported and gives up when the answer is no.

dlssg_for_sm86 changes the answer and points DLSS-G at its sm_86 kernels. On its own it can add nothing to a game with no integration.

Put both in one process and it works. That combination is what this package is. No file is patched, unpacked or rebuilt.

Why the proxy loads at all (the non-obvious part)

dlssg_for_sm86 ships a version.dll proxy, and eldenring.exe does not import version.dll. Dropped in on its own it would sit there doing nothing, and it would look exactly like the unlock had failed.

It works because ERSS-FG.dll imports version.dll itself, as does eossdk-win64-shipping.dll, and Windows resolves that import from the game folder. ERSS loads its own DLL about five seconds before it initialises Streamline, so the proxy is armed with time to spare.

Renaming the proxy to winmm.dll does not work. It exports only the 17 version.dll functions, so the game would fail to start.

Three proxy slots end up in use and none of them collide:

Slot Owner
D3D12.dll ERSS-FG loader
dinput8.dll ELDEN RING Mod Loader / ModEngine
version.dll dlssg_for_sm86

Install

Requirements: a GeForce RTX 30 GPU (all of them are sm_86), Windows 10 or 11, DirectX 12, Easy Anti-Cheat disabled, offline play.

Close the game completely first. Neither mod reloads settings while running.

Take one of the two downloads and extract its contents into the folder holding eldenring.exe.

Download Size Contents
Full package 140 MB ERSS-FG 4.14.1 included. Nothing to install first.
Unlock only 4.5 MB Needs ERSS-FG 4.14.1 already installed and working.

Either way three files land in the game folder, and that is the whole install:

version.dll            the sm_86 unlock
dlssg_sm86.ini         its settings
ERSS2/ERSS-FG.toml     the profile that selects DLSS-G

Important

Already using ERSS with settings you care about? Do not copy ERSS2\ERSS-FG.toml. It would replace them. Change these four values in your own copy instead.

Section Key Value
[FrameGeneration] FrameGenMode 2, DLSS-G instead of FSR3
[DLSS-G] NumGenFrames 1 = 2X · 2 = 3X · 3 = 4X
[Reflex] ReflexMode 0 off · 1 Low Latency · 2 + Boost
[Renderer] LatencyReductionMode 1

Then check it

Play for a few seconds, quit, and run:

.\verify.ps1
  OK   unlock active on real sm_86 hardware - NVIDIA GeForce RTX 3060 Laptop GPU
  OK   kernels: precompiled sm_86 cubins
       architecture threshold 400 -> 368  (368 = Ampere GA10x)
       multi-frame offered: up to 4X
  OK   ERSS: DLSS-G reported as supported
  OK   ERSS: DLSS-G enabled
  OK   no FSR frame generation in this session
  OK   Streamline loaded sl.dlss_g
  OK   Reflex active

  Native DLSS Frame Generation is running on an RTX 30.

This is not decoration. The in-game overlay is ERSS's own and looks identical whether the frames come from NVIDIA or from FSR. The logs are the only place the difference shows.

What is in each folder

Both are in this repository as well as in the release, so you can read every file before downloading anything.

full/ is the complete drop-in, 211 MB, 20 files:

full/
├─ D3D12.dll                 ┐
├─ ERSS-FG.dll               │ ERSS-FG 4.14.1, by huutaiii
├─ ERSSReShadeStub.addon     │
├─ ERSS2/bin/                ┘ Streamline, DLSS, DLSS-G, FSR, XeSS runtimes
├─ ERSS2/ERSS-FG.toml        the DLSS-G profile
├─ version.dll               the sm_86 unlock, by sdli1995
└─ dlssg_sm86.ini            its settings

release/ is the same thing without ERSS-FG: version.dll, dlssg_sm86.ini and ERSS2/ERSS-FG.toml.

Every binary is byte-identical to its author's own release. Confirm any of them against the SHA-256 list in THIRD-PARTY-NOTICES.md:

Get-FileHash .\full\ERSS-FG.dll -Algorithm SHA256   # 5912C442...
Get-FileHash .\full\version.dll -Algorithm SHA256   # 03D44523...

Uninstall

Delete version.dll, dlssg_sm86.ini and dlssg_sm86\, then set FrameGenMode = 1. ERSS is untouched throughout and keeps working as before.


Proof

Two independent logs have to agree. verify.ps1 reads both; this is what it looks for.

In ERSS2\ERSS-FG.log, ERSS accepted the feature and did not fall back:

Checking DLSS-G support: the feature is supported
Enabling DLSS-G

If Loading FSR Frame Generation appears anywhere in that log, the frames are not NVIDIA's.

In dlssg_sm86\logs\backend_*.jsonl, the unlock reports what it actually did:

{"active":true,"actual_sm":86,"executed_on_sm86_hardware":true,
 "image":"cubin_sm86","gpu":"NVIDIA GeForce RTX 3060 Laptop GPU"}
{"event":"feature_requirements","original_min_arch":400,"bridge_min_arch":368}
{"event":"mfg_capability","original_max":1,"reported_max":3,"changed":true}
Field Meaning
image: cubin_sm86 precompiled sm_86 kernels, not a PTX JIT fallback
400 → 368 the architecture threshold; 400 is Ada, 368 is 0x170, Ampere GA10x
original_max 1 → reported_max 3 multi-frame up to 4X is offered

In ERSS2\sl.log, Streamline no longer says Disabling DLSS-G since it is not supported on current hardware or Ignoring plugin 'sl.dlss_g'.


Reflex

Nothing to install. ERSS already hosts sl.reflex, and DLSS-G depends on Reflex for frame pacing, so leave it on.

ReflexMode = 2 adds Boost, which raises GPU clocks when the CPU is the limit. On a laptop that is mostly heat and power for little gain, so try 1 first.


Windows Defender

Expect version.dll to be flagged as Program:Win32/Contebrew.A!ml.

Why, and why it is a false positive

!ml means the verdict came from a machine-learning model, and Program: means "unwanted shape", not "known malware". The shape it recognises is real. That one file:

  1. is a proxy DLL that takes a system DLL's name and re-exports its 17 functions
  2. hooks APIs at runtime with Microsoft Detours
  3. writes executables to disk and loads them, unpacking a runtime into %LOCALAPPDATA%\DlssgSm86\bundles\
  4. carries a 10 MB compressed payload, high entropy and packer-like
  5. is unsigned, while the NVIDIA runtime it replaces is signed

Every one of those is legitimate here. Every one is also what a loader does, so the classifier fires. For what it is worth, a completely unrelated proxy DLL written from scratch during this project drew the identical verdict. What trips it is the shape, not the contents.

Add an exclusion from an administrator PowerShell:

Add-MpPreference -ExclusionPath "D:\SteamLibrary\steamapps\common\ELDEN RING\Game"

A false-positive report to Microsoft is worth filing. If accepted it fixes this for everyone, not just you.


Known limits

  • ELDEN RING 2.7.0.0 is newer than the version ERSS supports (2.6.1.0). ERSS logs a warning and works anyway on this build; a game patch may break it.
  • dlssg_for_sm86's own testing was on an RTX 3080 Ti with driver 591.86. The RTX 3060 Laptop above is a different GA10x part on a newer driver.
  • QuestPath.dll throws access violations under ERSS on this setup. They are caught and the game keeps running, but they fill the ERSS log.
  • Multi-frame above 2X is offered by the unlock; its image quality has not been evaluated here.
  • Frame generation and Easy Anti-Cheat are not used together. Offline only.

Credits

This package is a combination. The parts belong to the people who built them.

Who What
huutaiii ERSS-FG, the Streamline integration everything else here depends on. It does the hard part: the host, the upscaling, and the depth, motion-vector and camera data DLSS-G needs. Not redistributed here; get it from Nexus.
sdli1995 dlssg_for_sm86, the sm_86 unlock, derived from Nukem9's GPLv3 dlssg-to-fsr3.
NVIDIA Streamline and the DLSS-G runtime, including the sm_86 kernels that made any of this possible.
Lumi The combination, the settings profile, the verification and these docs.

Every third-party file is byte-identical to its author's release. Check for yourself against THIRD-PARTY-NOTICES.md, which lists a SHA-256 for each one.

If you are one of these authors and would rather your files were linked than shipped, or removed, open an issue and it will be done, no argument.

Licence

MIT © Lumi, covering the profile, the scripts and the documentation. Third-party files keep their own licences; see THIRD-PARTY-NOTICES.md.

About

Native NVIDIA DLSS Frame Generation on GeForce RTX 30 in ELDEN RING - DLSS-G on Ampere (sm_86), with no FSR fallback. Combines ERSS-FG with dlssg_for_sm86, adds a settings profile and a verifier that proves from the logs which frame generation actually ran.

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages