summaryrefslogtreecommitdiff
path: root/main.py
diff options
context:
space:
mode:
authorXxJSONDeruloxX <danielhimebauch@gmail.com>2026-04-19 12:15:34 -0400
committerXxJSONDeruloxX <danielhimebauch@gmail.com>2026-04-19 12:15:34 -0400
commitb342b80267829e10aa415dd17a5b9a72928da45d (patch)
tree771d137b7d1d546a61f4889ed01abc12ea6f8b46 /main.py
parent9e096ef3e8ca4564f5c77f456fea346a3f28952e (diff)
downloadDecky-Framegen-b342b80267829e10aa415dd17a5b9a72928da45d.tar.gz
Decky-Framegen-b342b80267829e10aa415dd17a5b9a72928da45d.zip
fix: drop nvngx.dll remote binary and all shipping/staging references
The nvngx.dll bundled from the OptiScaler v0.7.8-pre0 nightly was the real NVIDIA DLSS 3.10.3 production runtime (47 MB). Inspection of its PE export table showed it is missing 18 NVSDK_NGX_* symbols introduced in DLSS SDK 3.1+ that every modern DLSS-enabled title calls at init: NVSDK_NGX_D3D12_AllocateParameters / DestroyParameters NVSDK_NGX_D3D12_GetCapabilityParameters / GetParameters NVSDK_NGX_D3D12_Init_with_ProjectID / Init_ProjectID NVSDK_NGX_UpdateFeature (plus D3D11 and Vulkan equivalents) OptiScaler 0.9.0-final's own NGX proxy layer exports all of these and handles all NGX interception internally. Shipping the bare NVIDIA DLL alongside it caused export-not-found failures on Proton when any code path bypassed OptiScaler's hooks and resolved directly against the file. The OptiScaler 0.9.0-final release notes also explicitly advise Linux users to delete nvngx.dll when upgrading. Changes: - package.json: remove nvngx.dll from remote_binary download list - main.py SUPPORT_FILES: remove nvngx.dll (no longer staged to fgmod/) - main.py extract_static_optiscaler: remove nvngx.dll from additional_files; add explanatory comment for future reference - main.py check_fgmod_path: remove nvngx.dll from required-file check - fgmod.sh: remove the cp line that deployed nvngx.dll into game dirs nvngx.dll is intentionally kept in INJECTOR_FILENAMES (main.py) and in the fgmod.sh pre-patch rm and fgmod-uninstaller.sh cleanup so that any copy placed by a previous plugin version is swept from game directories on the next patch or uninstall.
Diffstat (limited to 'main.py')
-rw-r--r--main.py10
1 files changed, 6 insertions, 4 deletions
diff --git a/main.py b/main.py
index fbd50e6..47ec20b 100644
--- a/main.py
+++ b/main.py
@@ -48,7 +48,6 @@ SUPPORT_FILES = [
"amd_fidelityfx_framegeneration_dx12.dll",
"amd_fidelityfx_upscaler_dx12.dll",
"amd_fidelityfx_vk.dll",
- "nvngx.dll",
"dlssg_to_fsr3_amd_is_better.dll",
"fakenvapi.dll",
"fakenvapi.ini",
@@ -346,8 +345,12 @@ class Plugin:
# Copy additional individual files from bin directory
# Note: v0.9.0-final includes dlssg_to_fsr3_amd_is_better.dll, fakenvapi.dll, and fakenvapi.ini in the 7z
# Only copy files that aren't already in the archive (separate remote binaries)
+ # nvngx.dll is intentionally excluded: it was a stale DLSS 3.10.3 stub from a
+ # pre-0.9 nightly that is missing DLSS 3.1+ exports (AllocateParameters,
+ # GetCapabilityParameters, Init_with_ProjectID, etc.) present in OptiScaler
+ # 0.9.0-final's own NGX proxy layer. OptiScaler handles all NGX interception
+ # internally; the bare nvidia DLL caused export-not-found failures on Proton.
additional_files = [
- "nvngx.dll", # nvidia dll from streamline sdk, not bundled in opti
"OptiPatcher_v0.30.asi" # ASI plugin for OptiScaler spoofing
]
@@ -511,8 +514,7 @@ class Plugin:
"OptiScaler.ini",
"dlssg_to_fsr3_amd_is_better.dll",
"fakenvapi.dll", # v0.9.0-final includes fakenvapi.dll in archive
- "fakenvapi.ini",
- "nvngx.dll",
+ "fakenvapi.ini",
"amd_fidelityfx_dx12.dll",
"amd_fidelityfx_framegeneration_dx12.dll",
"amd_fidelityfx_upscaler_dx12.dll",