v1.0.24
Fixed
Correction. The first item did not reach this binary. The edit that guards the loader-lock callback was lost before the file was written, so
OnDllLoadedstill scans and patches unconditionally here. Present in 1.0.25, where a log line marks it running. The remaining items in this release are unaffected.
- No module is patched while this add-on's own NGX initialisation is running. The loader notification runs under the loader lock, on the thread doing the load, and it was enumerating modules, reading version resources from disk and writing jumps into code.
NVSDK_NGX_D3D12_Init_Extloadsnvngx_dlss.dllitself, so in Prey 2017 that notification arrived inside NGX's own initialisation and patched the snippet NGX was setting up;Init_Extfaulted 169 ms later. The scan is now deferred to a call site holding no lock. Aimed at Prey 2017; not verified there. - The DRED retry added in 1.0.21 did not turn DRED off.
D3D12_DRED_ENABLEMENT_DISABLEDis written nowhere in the add-on, so the second attempt ran under the identical setting and the message announced an action that never happened. Removed.dred=0indlss5-dx11-bridge.cfgremains the only way to make an attempt without DRED. - The command queue, list and fence event are checked before the session is marked ready. All three were created unchecked and dereferenced on the first frame. A null fence event was the worst of them:
SetEventOnCompletionon a null handle blocks the render thread with no timeout. - A feature handle reused by NGX for super resolution is dropped from the other-features table. Nothing removed entries and NGX recycles freed handle addresses, so a recycled handle made every later evaluate take the "not super resolution" path for the rest of the session.
- Layer slots are reused after a module unloads. Each unload and reload of an NGX module burned a slot permanently.
Added
- The fault address and the module that owns it are logged when NGX initialisation or D3D12 device creation raises an exception. Three competing explanations previously produced the same log line.
Notes
- Every item here was found by reading the code, not by reproducing it. None is verified in the positive: Baldur's Gate 3 reaches none of these paths and was used only to confirm nothing regressed.
- Prey 2017 without the OptiScaler proxy present still faults in
Init_Ext, so the proxy is ruled out as the cause, as are the NGX module choice fixed in 1.0.22 and the SDK version constant. - Verified on Baldur's Gate 3.