• Fix Windows NVAPI loading the gfx1101 build on every other AMD GPU

    wouter released this 2026-10-18 18:19:37 +02:00

    0.1.5 shipped one d4r/zluda/nvapi64.dll (the gfx1101 build) for all
    targets, and compat_nvapi_path() preferred it over d4r/nvapi//.
    Nothing on Windows ever set D4R_GPU_ARCH, so on any other GPU NVAPI
    failed with "No selected gfx1101 device", NGX CUDA init failed, and
    DLSS stayed unavailable (black frames, no OptiScaler upscaler section).

    • Select the NVAPI per architecture; never fall back to a shared DLL
      in a multi-target folder, and report a missing build by name.

    • The loader and runtime publish D4R_GPU_ARCH and D4R_GPU_LUID for the
      game's adapter, so NVAPI picks the right device with several GPUs.

    • nvapi64.dll exports the target it was built for; the runtime refuses
      a mismatch, and the packager and d4r-check read the same marker.

    • Release packaging no longer ships d4r/zluda/nvapi64.dll and rejects
      NVAPI builds for the wrong target, without a marker, or missing.

    • Move target resolution, device matching and loader choice into
      gpu_selection.h; regression tests cover all 11 targets, bad or
      missing D4R_GPU_ARCH, mixed installs, multi-GPU and missing files.

    • d4r-check: accept the FSR keys in the shipped d4r.ini.

    Downloads