0.1.5 shipped one d4r/zluda/nvapi64.dll (the gfx1101 build) for all
targets, and compat_nvapi_path() preferred it over d4r/nvapi/<arch>/.
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.
Add native K/M/RR inference engines, HIP kernels, replay and validation
harnesses, and Windows DLSS setup and runtime support. Include GPU
profiling tools, build and packaging scripts, platform integration
patches, and implementation documentation.
Players extract one ZIP into the game folder, copy their two NVIDIA
DLLs, and start the game from Steam, Epic or a shortcut. No launcher
script is needed; settings live in d4r\d4r.ini.
- Shim player mode: when the launcher has not set D4R_HIP_ROOT and
d4r.ini sits beside the shim, derive the backend environment from it.
Codegen flags stay at the Windows-validated values. NVIDIA DLLs must
match an exact SHA256 in dll-pins.txt, with "you have X, you need Y"
errors. Rejects a vkd3d/Wine d3d12.dll and code objects built for
another GPU. [DLSS] Model accepts K or M and is applied by rewriting
the render preset hints.
- d4r.ini exposes only options that exist on Windows: Model, AsyncInterop,
ValidateOutput, Log, CacheDir. Invalid values fall back with a note in
d4r_nvngx.log.
- d4r_nvngx_loader: one _nvngx.dll for all GPUs. It matches the game's
adapter by LUID and loads _nvngx_<arch>.dll from the same folder.
- OptiScaler patch 0006: relative NvngxPath/NvngxDlssPath/
NvngxFeaturePath resolve against OptiScaler's folder.
- package-windows-release.ps1 builds the release from the per-target
game packages and refuses mixed targets or differing shared runtimes.
- Tests: test-player-config.ps1 (ini and DLL-pin decisions, loader
selection on the local GPU) and test-windows-release-package.ps1.