Games using the Unreal Engine 5 DLSS plugin (classic NGX integration) hide DLSS from the upscaler menu: SILENT HILL:
Townfall (UE 5.6, DLSS 310.4 snippet) and Cronos: The New Dawn. Games using Streamline (Silent Hill 2) or direct
nvngx_dlss.dll loading (RDR2) work fine — DLSS available and rendering.
Findings (verified via standalone probes, no games involved):
-
NVSDK_NGX_D3D12_Init returns 0xBAD00001 (FAIL_FeatureNotSupported) — on either GPU, any adapter, any
AppId/ProjectId, any SDK version (0x13–0x15). NGX log:[NGXCheckIfSupportedOnHW:130] error: unsupported hw detectedThe r572 core is more verbose:
[luidToNvPhysicalGpuHandle:130] No matching adapter found (out of 2 adapters) [NGXCheckHardwareSupportUsingINF:262] Failed to get NvPhysicalGpuHandle from luid! -
NVSDK_NGX_D3D11_Init succeeds on the same machine, same GPUs.
-
Everything the LUID-matching depends on is verified healthy:
• NvAPI_Initialize, NvAPI_EnumPhysicalGPUs (2 GPUs), NvAPI_GPU_GetArchInfo (0x1B0, Blackwell) — OK
• NvAPI_GetLogicalGPUFromPhysicalGPU + NvAPI_GPU_GetLogicalGpuInfo (NV_LOGICAL_GPU_DATA v1) — returns OS LUIDs
identical to the DXGI adapter LUIDs for both GPUs
• D3DKMTEnumAdapters2 / D3DKMTOpenAdapterFromLuid — KMT LUIDs match DXGI LUIDs
• NVML enumerates both GPUs; D3D12 device creation succeeds (FL 11_0–12_1, default and explicit adapters) -
With NV_DIRECTAMODEL_SIMCLASS=1, NGX_D3D12_Init succeeds, the DLSS 310.4 snippet validates cleanly (arch 0x1B0 ≥
0x160, driver 617.14 ≥ 470.0, support flags match), but NVSDK_NGX_D3D12_CreateFeature then fails (0xBAD00007
observed; SuperSampling.Available reports 0). -
Not the cause (tested individually): dual-GPU topology (fails with 2nd GPU disabled), iGPU (fails with iGPU
disabled), virtual display drivers, third-party software, HAGS, NVSupportNGX value, DRS database, game settings
caches, DLSS DLL version (310.4 / 3.7.0), clean driver reinstall, older NGX branch (572.83).
Minimal repro:
Create an ID3D12Device on the RTX 5090 adapter, load nvngx.dll, call NVSDK_NGX_D3D12_Init(appId, dataPath, device,
NULL, 0x15) → 0xBAD00001 with the log lines above.
Ask: please review the LUID→physical-GPU matching in NGXCheckIfSupportedOnHW / luidToNvPhysicalGpuHandle for
multi-adapter configurations. NGX appears unable to match a valid D3D12 device LUID to an NVAPI physical GPU even
though every involved API returns correct, mutually consistent data.