Skip to content

Per-game NVIDIA driver profile settings with reset to previous values - #73

Merged
ApolloF merged 2 commits into
feature/rhi-parityfrom
ApolloF/rhi-nvidia
Oct 21, 2026
Merged

ApolloF merged 2 commits into
feature/rhi-parityfrom
ApolloF/rhi-nvidia

Conversation

@ApolloF

@ApolloF ApolloF commented Oct 21, 2026

Copy link
Copy Markdown
Owner

Per-game NVIDIA driver profile settings, written through NvDrs only when the user applies them, and reversible: for every id written the app records what the profile itself held before (a value or "absent"), and "Reset to previous" puts exactly that back.

What changed

  • IDrsSession / IDrsProvider in front of NvDrs, so everything above it runs against a fake. Tests never load nvapi or write a profile.
  • NvidiaProfile (Core): Read, Apply, Reset, Restore and SetFrameRateLimit(game, fps) / RestoreFrameRateLimit (for workstream G). Same profile matching/creation as before (FindProfileForExe / GetOrCreateProfileForExe).
  • NvidiaProfileCatalog: the offered options with a source comment per id. Every id and value was checked against nvidiaProfileInspector CustomSettingNames.xml (master @ 337087c, 2026-10-13), Reference.xml for the RTX HDR Allow id.
  • Per-game record is in the generic component pick (nvidia-driver, options prev:<id>), not new typed fields. Small additive SetPickOptions on GameOverride.
  • The existing NVIDIA tab now runs on this: group headers, options the driver doesn't define are hidden (counted in a note), and a "Reset to previous" button when the app has written something. Help topics for every option.

Options: SR/RR/FG preset, use-latest-DLL flags (SR/RR/FG), render mode + custom % ; MFG mode, factor, dynamic max, dynamic target fps; Smooth Motion on/off + API mask (a "DX12 + DX11" choice keeps it off Vulkan); RTX HDR allow, enable, debanding; VSync, low latency, frame rate limiter V3.

Behaviour change to check: a preset choice used to write the preset and the "use latest DLL" switch together. Profile Inspector lists them as independent settings, so they are separate now (and the flags are their own options).

Left out, ids Profile Inspector names but gives no values for: RTX HDR peak brightness 0x00DD48FC, middle grey 0x00DD48FD, contrast 0x00DD48FE, saturation 0x00DD48FF. Also left out: Smooth Motion flip metering 0xB03A4546/7 and debug bars 0xB01B8B02, limiter variants 0x10835005, 0x1083500A, 0x10834FEE, FG preset C, debanding values 0x03/0x23. Admin: Smooth Motion and low latency are marked "may need administrator rights" (research notes); they go through the existing restart-as-admin prompt. The limiter value and low latency pairing (state + Ultra flag) follow the Control Panel names; the pairing is not documented by Profile Inspector and the help says so.

Verified: dotnet build -warnaserror && dotnet test: 0 warnings, 932 passed. New fake-DRS tests cover apply, read-back mismatch, failure leaves driver and record untouched, reset to absent vs value, hidden-when-unknown, record round-trip through settings JSON, frame limiter set/restore and bounds, and a catalog check of every id/value.

Screens to check (I can't see the app here): game page, NVIDIA tab: group headers, hidden-options note, "Reset to previous" button next to Revert, long hint text on the Smooth Motion and low latency rows, and the new rows' dropdown widths. The About page guide lists the new help topics (incl. "NVIDIA settings not offered").

@ApolloF
ApolloF merged commit c4b8c6f into feature/rhi-parity Oct 21, 2026
1 check passed
@ApolloF
ApolloF deleted the ApolloF/rhi-nvidia branch October 21, 2026 08:44
ApolloF added a commit that referenced this pull request Oct 23, 2026
* RHI parity: plan and research notes

* Generic component records in the install record, component registry and per-component picks (#70)

* Catalog client, verified downloads and game matcher (#71)

* Scan: keep the Steam AppID from the appmanifest on GameEntry and GameInfo

* Catalog client, verified downloader and game matcher for the catalog repo

* Game detection: graphics API, bitness, engine, UE version, upscaler signals, Battle.net and Rockstar (#72)

* Per-game NVIDIA driver profile settings with reset to previous values (#73)

* Per-game NVIDIA driver profile: DLSS, MFG, Smooth Motion, RTX HDR and sync settings with reset to previous values

* NVIDIA profile: write each DLSS preset together with its override switch again

* ReShade fully managed: library, channels, DLL naming, foreign dlls, Vulkan layer, ini template (#75)

* ReShade library, sources, DLL naming, foreign-DLL detection, Vulkan layer and ini template (core)

* ReShade tests: sources, naming, foreign dlls, Vulkan layer, library, installer, ini template

* ReShade managed: settings and game page UI, help topics, docs

* RenoDX HDR mods per game (#74)

* RenoDX HDR component: pick per game, install with ReShade, ini and Engine.ini work, updates, catalog download of the DLSS add-on

* RenoDX HDR: game page section, Settings, Update all, help topics, docs

* RenoDX HDR: install ReShade through the managed path, Vulkan layer route, per-game build pick

* RHI parity plan: manual control workstream, mirror decisions

* Per-game method advisor and DLSS5-Feeder (#76)

* DLSS5-Feeder component and the one-neural-consumer rule in the install planner

* Method advisor from the 20-row decision table, GPU detection and OptiScaler compat lookup

* Works in this game panel on the game page and the Feeder row

* Test: await the pinned Feeder build instead of blocking

* Frame limiters: driver, ReLimiter, Display Commander, Unreal cap (#78)

* Frame limit: methods, rules, settings, ini keys, library, catalog model and the service

wip

* Frame limit tests: install, switching, driver zeroing, library

* Frame limit: game view model, commands, update all

* Frame limit: game page and Settings sections, help topics, docs, view model tests

* Frame limit: anti-cheat is a confirmable warning for the add-ons, not a block

* ReShade add-ons, shader packs and presets in the app (#77)

* Catalog model for the addons and shaderPacks sections

* ReShade add-ons, shader packs and presets: planners, install service, imports, tests

* WIP: ReShade extras view models, settings and game page (paused mid-task)

* Reject import ids that aren't a plain folder name

* Notice when GitHub rate-limits the app, with a shortcut to the token setting (#80)

* Conflict rules become confirmable warnings (NR add-ons, MFG, anti-cheat, Store) (#79)

* Conflicts become confirmable warnings: NR add-ons, MFG, anti-cheat, Store installs

* Update Uplift and DFC tests for confirmable conflicts

* Settings NR add-on defaults: several allowed with a confirm and warning, no migration

* Fix tests: onboarding pick replaces defaults, clash count

* Manual control everywhere: detection overrides, HDR mod pick/import, own ini values (#81)

* Per-game detection overrides: API, bitness, engine, main exe, mod folder

* HDR: pick any catalog mod or import your own add-on, manual Engine.ini path, own ini values; proxy reset

* Tests and help for the manual-control overrides

* Download nvngx_dlssnr.dll, Lecram's add-on and ShortFuse's add-on from the catalog mirror (#82)

* DXVK and Lilium HDR as a component (#83)

* DXVK: library, channels, dxvk.conf plan, install service, Lilium present method

* DXVK: advisor entry, game page and settings sections, help topics, tests

* DXVK: advisor test follows the new entry, comments

* Luma Framework mods as a component (#86)

* WIP Luma: catalog model, handoff notes

* Luma component: per-game and generic Unreal mods, library, install, game page and Settings sections

* Release-review fixes for rhi-parity (#87)

* Vulkan layer: protected folder ACL, owner checks, fresh temp files; keep working bitness on failed update

* Full uninstall restores DXVK and frame limit driver values

* Review fixes: shared search path undo, DXVK removal restores ReShade, nightly layer refusal, catalog name/hash checks, known-folder config gate, Luma ReShade 6.6

* 3.0.0: version bump, README and release notes

* Drop docs/plans and docs/research; keep the method table in docs/advisor.md

* Pick older mirrored builds (NR runtime, Lecram, ShortFuse) in the build pickers; a pinned Lecram/DFC default stays pinned

* Label same-version catalog builds by their file version

* Demo pretends an RTX 4080; the anti-cheat caution shows once in the Works panel

* MFG Unlock only on RTX 40; Lecram auto-download switch in Settings; help text without the removed multi-add-on setting

* Retake the README screenshots for 3.0.0

* Wider LATEST column on the game page; shorter Feeder Auto label

* Detect the GPU from the right registry class; mouse wheel no longer changes closed dropdowns; Default replaces the Recommended preset

* NR runtime and DLSS files above Detection; scan skips _DLSS5_Backup; mod page link under the picked mod

* Build pickers: newest first, one entry per version, shorter labels; import-only note and Rename button on add-on cards

* Works panel: clickable method cards with one-line summaries and details; advisor prefers ready methods and skips ones that clash with the installed route

* Short one-line tips for every help topic and the long tooltips; full text stays on the guide page

* Advisor warns only about clashes an install leaves and keeps the game's add-on; advice-only method cards open their details; Lecram is import only in the public build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant