Runs the neural rendering (NR) model of NVIDIA DLSS 5 in games on AMD Radeon RX 9000 (RDNA4) graphics cards.
- The network is reimplemented as Vulkan compute shaders.
- The model is not included. The installer extracts it from your own copy of
nvngx_dlssnr.dll. Version 310.9.16 holds two models:CC_SMALL_FP8, its default and faster, andCC_SILVER_AARDWOLD, the model of 310.8.0, so from 310.9.16 alone the installer installs both. Since 0.0.6-linux-preview (Linux) and 0.0.6-win-preview-alpha (Windows)CC_SMALL_FP8runs by default;CC_SILVER_AARDWOLDstays selectable (see The model). Since 0.0.7 the networks carry the names in NVIDIA's DLL -CC_SMALL_FP8andCC_SILVER_AARDWOLD- and all of them can be switched in game. Since 0.0.8 (Linux) and 0.0.8.1 (Windows)CC_SMALL_FP8_EXPERIMENTALcan be chosen as well (CC_SMALL_FP8_EXPERIMENTAL), and since 0.0.8.3CC_SILVER_AARDWOLD_OPTIMIZED(CC_SILVER_AARDWOLD_OPTIMIZED), which replaces int4 mixed. - The Linux build with
CC_SMALL_FP8, on an RX 9070 XT, checked against NVIDIA's ownnvngx_dlssnr.dll310.9.16 run on an RTX 5090 through NGX, the same way as below. Single frames: PSNR 49.15 dB at 1080p, 49.40 dB at 1440p and 50.59 dB at 4K, SSIM 0.997. Moving sequences: PSNR 50.6-52.3 dB at 1080p, 51.2-52.4 dB at 1440p and 52.2-53.1 dB at 4K, SSIM 0.998, and the output changes from frame to frame by about as much as NVIDIA's. Method, pictures and data: docs/ngx-verification/310.9.16. - The Linux build with
CC_SILVER_AARDWOLD, on an RX 9070 XT, checked against NVIDIA's ownnvngx_dlssnr.dll310.8.0 run on an RTX 5090 through NGX (the way a game calls it), with the same input and settings. Single frames: PSNR 45.56 dB at 1080p, 47.99 dB at 1440p and 49.06 dB at 4K (higher is closer; the input frame itself scores 26-29 dB), SSIM 0.996-0.997 (1 = identical); NVIDIA's DLL gives byte-identical output from run to run, so the difference is between the two implementations, not noise. Moving sequences with motion vectors and history (a still scene, a moving object, a panning camera, and NR after an upscaler; 10 frames each): PSNR 46.3-47.0 dB at 1080p, 50.1-50.9 dB at 1440p and 51.1-51.6 dB at 4K, SSIM 0.997-0.998, and the output changes from frame to frame by about as much as NVIDIA's. Method, pictures and data: docs/ngx-verification/310.8.0. - Tested only on an RX 9070 XT.
- Windows: since 0.0.8.1 the Windows version is the Linux version (the same routes, NR Control and settings). It loads the network as machine code that was made in advance with Mesa's ACO compiler (the Linux driver's compiler) and ships in the package, and comes close to Linux (see Performance); see Windows.
- RX 7000 and Radeon 700M / 800M / 8000S graphics (RDNA3), Windows only, experimental:
CC_SMALL_FP8andCC_SILVER_AARDWOLD, thanks to TheAutomatic and to mauri870, whose DLSSNR-RDNA3 port it builds on. Tried on few machines; expect more problems than on RX 9000, and for now it may not match the stability and performance of DLSSNR-RDNA3 (see Windows). - Also worth a try: TheAutomatic/dlss-5-amd-project (OptScaler(NR)), an OptiScaler-based project with several NR backends.
This is an independent project. It is not affiliated with, endorsed by or supported by NVIDIA or AMD. DLSS is a trademark of NVIDIA Corporation.
This is an early project (version 0.0.x) and its testing is limited:
- one graphics card, one Linux desktop, Mesa 26.2 and GE-Proton;
- a small number of games, at a few resolutions and settings;
Other cards, drivers, Proton versions, distributions and games have not been tested. Expect problems: games that fail to start or crash, visual artifacts, settings that do not behave as described, or performance that differs from the numbers below. Problems are fixed as they are found, and the project will keep changing, including in ways that break earlier setups.
- The installer puts DLLs into the game folder. Keep a backup of anything you care about;
removedeletes what was installed. - Do not use it in online games with anti-cheat. Injected DLLs can get an account banned.
- It is provided as is, without warranty (see LICENSE).
If something goes wrong, please open an issue with the game, the route, your card and driver, and these logs:
dlssnr-amd.logandOptiScaler.logorReShade.log(whichever route you use), all in the game folder. On Windows, option 5 ofinstall.batputs them into one zip.- On Linux, if you can, a Proton log as well: set the game's launch options in Steam to
PROTON_LOG=1 %command%, run the game until the problem shows, and attachsteam-<appid>.logfrom your home folder.
| Platform | Needs | State |
|---|---|---|
| Linux (Steam / Proton) | Mesa 26.2 or newer, a recent Proton | The main version, used in games. |
| Windows | AMD Software 26.9 or newer | The same features as Linux; close to Linux in speed with ACO's machine code. |
Both need an RX 9000 series (RDNA4) card for every network. On Windows RX 7000 and Radeon 700M / 800M / 8000S
graphics (RDNA3) run CC_SMALL_FP8 and CC_SILVER_AARDWOLD (experimental); they lack the FP8 matrix
instructions, and their network runs FP16 in place of FP8. Older cards are not supported.
CC_SMALL_FP8 and CC_SMALL_FP8_EXPERIMENTAL (310.9.16), GPU time of the network per frame on an RX 9070 XT
(network only). Linux measured in game (CC_SMALL_FP8 with v0.0.6-linux-preview, CC_SMALL_FP8_EXPERIMENTAL
with 0.0.8); Windows with the driver's own compiler from
an earlier pull request; Windows with ACO's machine code not measured (it runs the
same machine code as Linux):
| 1080p | 1440p | 4K | |
|---|---|---|---|
Linux, CC_SMALL_FP8 |
3.27 ms | 5.53 ms | 12.67 ms |
Linux, CC_SMALL_FP8_EXPERIMENTAL |
2.90 ms | 4.84 ms | 11.09 ms |
Windows, CC_SMALL_FP8, the driver's own compiler |
4.673 ms | 7.982 ms | 16.940 ms |
Windows, CC_SMALL_FP8, ACO's machine code (the default) |
about the same as Linux | about the same as Linux | about the same as Linux |
Windows, CC_SMALL_FP8_EXPERIMENTAL, ACO's machine code |
about the same as Linux | about the same as Linux | about the same as Linux |
CC_SILVER_AARDWOLD (310.8.0), GPU time of the network per frame on an RX 9070 XT (network only), measured in
game as the log shows it: Linux CC_SILVER_AARDWOLD with v0.0.3, CC_SILVER_AARDWOLD_OPTIMIZED with 0.0.8.3 (its Optimized
layers levels); Windows with v0.0.4-win-preview on AMD Software 26.9.2:
| 1080p | 1440p | 4K | |
|---|---|---|---|
| Linux | 5.60 ms | 9.70 ms | 21.89 ms |
Linux, CC_SILVER_AARDWOLD_OPTIMIZED, Quality |
4.89 ms | 8.44 ms | 18.77 ms |
Linux, CC_SILVER_AARDWOLD_OPTIMIZED, Balanced |
4.55 ms | 8.08 ms | 18.21 ms |
Linux, CC_SILVER_AARDWOLD_OPTIMIZED, Performance |
4.40 ms | 7.70 ms | 17.32 ms |
Linux, CC_SILVER_AARDWOLD_OPTIMIZED, Ultra Performance (the default) |
4.20 ms | 7.55 ms | 16.90 ms |
| Windows, the driver's own compiler | 7.21 ms | 12.59 ms | 27.32 ms |
| Windows, ACO's machine code (the default) | about the same as Linux | about the same as Linux | about the same as Linux |
Windows, ACO's machine code, CC_SILVER_AARDWOLD_OPTIMIZED |
about the same as Linux | about the same as Linux | about the same as Linux |
Linux and Windows have the same routes:
| Game uses | Route |
|---|---|
| DirectX 12 / 11 | optiscaler if the game has a DLSS, FSR or XeSS option, otherwise reshade-feeder |
| DirectX 10 | reshade-feeder |
| DirectX 9 | reshade-feeder-dx9 |
| Vulkan | optiscaler if the game has a DLSS, FSR or XeSS option, otherwise reshade-feeder-vulkan |
| OpenGL | not supported |
optiscaler: for games with a DLSS, FSR or XeSS option, with the game's own motion vectors. 64-bit games only. The original OptiScaler (shipped unchanged) does the upscaling and frame generation, and this project's NR runs as an OptiScaler plugin (dlssnr-amd.asi) on DirectX 12, DirectX 11 and Vulkan games (since 0.0.8 on Linux, 0.0.8.1 on Windows; up to 0.0.7 this route was OptiScaler-NR with this project as its DLSS-NR backend).reshade-feeder: for other DirectX 10/11/12 games. Runs through ReShade; motion is estimated from the picture by a ReShade shader.reshade-feeder-vulkan/reshade-feeder-dx9: for Vulkan and DirectX 9 games. DirectX 9 games run on Vulkan through DXVK, and ReShade is loaded as a Vulkan layer underneath it.reshade-feeder-dx9also sets the depth direction old DirectX 9 games use.
These routes were called reshade, vulkan and dx9 up to 0.0.4 on Linux and up to 0.0.4-win-preview
on Windows. Any route can also use the RenoDX style.
32-bit games work on Linux (use the i686 package; not with optiscaler). The Windows version is
64-bit only.
End opens NR Control, this project's NR menu, drawn over the game's DirectX 11, DirectX 12 or Vulkan swap chain
(another key: [NRControl] MenuKey). Nothing to set up. Changes apply in game within about a second and are kept in
dlssnr-amd.ini. It holds every NR setting; OptiScaler's own menu (Insert) only drives upscaling and frame
generation. The ReShade routes have the same pages on ReShade's Add-ons page (plus Motion vectors and Language).
- NR settings: the processing (RenoDX style or wilsjo2 style), the network, the place (at Present, the default, or before or after the upscaler; on the ReShade routes always Present) and its settings, and Engine data (what the game hands NR).
- Network: the networks and their options (model, hotkey, residency, Memory Guard, OSD). At its foot the Layers switch, off by default: on, NR can be several layers, each a complete NR run with its own processing, network, place and settings (the NR chain page). For ordinary stacking use Passes, not layers.
- Preprocess, HUD FIX (keeps the game's HUD as it is at Present; off by default), Hotkeys (every key NR reads, press a key to assign it), Screenshot (F5: the same frame without and with NR).
- Compare: NR off against NR on, side by side or with a split line, with a zoom and debug views.
- Diagnostics: cost, video memory, residency, an event timeline, and Copy a report (to the clipboard and
dlssnr-amd\nr-report.txt; nothing is sent anywhere). - Status: what NR does and costs (the network and its processing apart); video memory by network and use.
- The header has the Neural Rendering switch (F6: NR off or on for this run); the footer NR's GPU time and the upscaling.
NR Control (OptiScaler route) and the Add-ons page (ReShade routes) take their texts from a language file in
dlssnr-amd\lang in the game folder, chosen on NR Control's NR Control page or on the Add-ons page's Language
page. Any language can be added: copy English.txt there (every text of the menus, made from the program), name
the copy after the language and translate the text after each msgstr. On the OptiScaler route a font that has the
language's letters can be named in the file (@font); the ReShade routes use ReShade's own font (ReShade's
settings, Font). The file is read again each time it is saved, so the translation can be checked in the game;
README.txt in that folder explains it step by step.
The processing around NR - how the picture is handed to the network and how its result is put back - as
RenoDX's DLSS5 add-on v8.5.0-rc10 does it, with RenoDX's own
shaders. The NR network itself is the same. It is the default processing on every route (the installer asks;
--wilsjo2 on Linux or -RenoDX off on Windows chooses the other), and NR Control switches it in game. Its
settings keep RenoDX's names, defaults and ranges:
- Network: Intensity, Style, Local tone, Local structure, Skin structure, automatic mask, new noise every frame.
- Passes: legacy (up to 4, or 30 unlocked; passes 2 and later with their own strengths and network settings) or fast (the network runs once and its change is strengthened).
- Composition: colour and transfer strength, chroma clamp, transfer mode, highlight guard, Detail stability (Off by default), black restore and pedestal, codec.
- Resolution: the network's resolution, following the render resolution, upsampling.
- Adjust NR's look: brightening, darkening, colour, hue, shadows / midtones / highlights, large-scale tone and fine detail, halos, temporal smoothing.
- Encoding: how the picture's values are read (SDR, linear, PQ; units and white points for HDR) and the divisor.
- Guides: depth and motion vectors.
The processing around NR of OptiScaler-NR
(wilsjo2's OptiScaler fork, which the OptiScaler route used up to 0.0.7), ported to this project. The NR network
itself is the same. It is the other processing on every route (--wilsjo2 on Linux, -RenoDX off on Windows at
install, or NR Control in game); on the ReShade routes it is these routes' own processing ([DlssNr]). Its settings
keep OptiScaler-NR's [DlssNr] names, defaults and ranges:
- Network: Style, Intensity, Local structure, Local tone, Skin structure, Character mask, new noise without motion vectors.
- Passes: legacy (up to 3, or 30 unlocked; each pass its own values) or fast.
- Composition: detail strength, colour strength, highlight guard, HDR mapping (ReversibleMode), restore sharpness.
- Resolution: model resolution from 25 % to 200 % (above 100 % supersampling, with a choice of filters), how the picture is made smaller and how the result is enlarged.
- Peripheral compression: the centre at full resolution, the surround compressed; the centre's and the work area's size and position.
- Exposure: the white point from the game's exposure, set by hand, or metered automatically, with trims and highlight protection. On the ReShade routes the picture is already exposed and tone mapped: the white point is set by hand only.
- Skin and environment: skin protection, and how much detail and colour change is kept on skin and elsewhere.
[Preprocess] in dlssnr-amd.ini in the game folder changes the picture the NR network is shown (exposure,
display curve, contrast, saturation), and so how NR edits the picture. It has two uses: a personal look in any
game, and fixing games that do not hand their exposure to the upscaler (below). The installer writes the
file; NR Control and ReShade's Add-ons page show the settings on their Preprocess page.
- Enabled: off by default; when off, none of it runs. Turned on, it starts from auto exposure and the filmic curve.
- Exposure:
auto: auto exposure after Unreal Engine's design, for games that compute their exposure but do not hand it to the upscaler.off: the exposure stays as the game or OptiScaler set it.fixed:ExposureBiasalone.
- ExposureBias (EV, -8 to +8, decimals allowed): with
fixedit is the whole gain; withautoit is added to what auto works out. - Curve, Contrast, Saturation: change the picture NR is shown, and so how it edits the picture.
- Hotkey (Ctrl+F10 by default): switches the preprocess on and off for the current run, to compare on the same picture. It does not change the file.
- Sound: a short sound when it switches: two notes going up for on, going down for off.
Sound = 0turns it off.
Some games hand the upscaler a picture without its exposure, and NR then works on a frame that is several
stops too dark: 007 First Light turns green and grainy with NR. Such games are fixed by the preprocess: set
Enabled = 1 (its defaults, auto exposure and the filmic curve, are meant for this).
For a personal look in a game that gives its exposure properly, auto is not needed: use Exposure = off
(or fixed for a small shift) and change Curve, Contrast or Saturation. This departs from the original
look; it may be better or worse.
The first time the preprocess is turned on, NR rebuilds; a second or two of frames go without NR. The file itself explains every setting.
CC_SILVER_AARDWOLD made faster by this project. Since 0.0.8.3 it replaces CC_SILVER_AARDWOLD_INT4_MIXED
(a dlssnr-amd.ini, --model or -Model that still names that one gets CC_SILVER_AARDWOLD_OPTIMIZED); its picture
is very close to CC_SILVER_AARDWOLD's - much closer than int4 mixed's was - and it is faster. RX 9000 only; on Windows it runs as
ACO's machine code only.
How it is made faster, at every level:
- the Swin blocks' MLPs (all but the first block) use ReLU, their weights fitted to the original network's outputs;
- three window-attention layers of the decoder use one fixed attention table each (no QK^T, no softmax), and in those and two more one-head decoder layers the V and output projections are merged into one matrix;
- C=512 attention heads whose attention is the same for every input skip their Q/K work (the same result bit for bit).
Optimized layers (under the network in NR Control and on the Add-ons page, [Network] OptimizedLayers) adds
more on top. It changes only how the network computes, not the resolution, and every level's picture stays very close
to CC_SILVER_AARDWOLD's; switching in game builds the network again in the background.
-
Quality: only the optimizations above; every layer keeps
CC_SILVER_AARDWOLD's original precision (FP8 and higher). -
Balanced: int4 on the C=256 Swin encoder's expansions (their input Hadamard-rotated), the C=512 attention's QKV projections and part of the ViT's feed-forward layers.
-
Performance: also a fitted fixed attention table in the first full-resolution layers (the pre block and three of the four encoder blocks before the first downsample).
-
Ultra Performance (the default, the fastest): also int4 on the C=256 encoder's QKV projections, the C=256 decoder's expansions and more of the ViT's feed-forward layers.
-
It is chosen like the others: as the network a game starts with at install (
--model CC_SILVER_AARDWOLD_OPTIMIZED, or--int4as before), or in game (the drop-down in NR Control or on the Add-ons page, or Ctrl+F11 to cycle the networks). -
On the Linux ReShade routes the int4 layers need a Vulkan layer in the game folder: besides the main Steam launch options the installer prints a second line with
VK_ADD_LAYER_PATHandVK_INSTANCE_LAYERSfor it; use that line, and copy the whole line. Without it the network runs at Quality. The OptiScaler route needs no layer (the NR plugin adds the device extensions they need), nor does Windows. -
The first time a level is used the network takes longer to build; until then the picture goes without NR.
-
Its weights are made during installation from your
CC_SILVER_AARDWOLDmodel and a difference file in the package (each changed entry XOR the original, so it holds none of NVIDIA's weights), and checked against a known SHA-256; the int4 layers' weights are made the same way from this project's own calibration tables in the package.
CC_SMALL_FP8 made faster by this project (see Performance). On Windows it runs as ACO's machine code only, on
RX 9000. Its Swin blocks (all but the first)
use ReLU as the MLP activation, and some window-attention layers in the decoder use one fixed attention table per layer (no QK^T,
no softmax) with the V and output projections merged. The weights of the changed layers were fitted to the original
network's outputs. Its picture differs somewhat from
CC_SMALL_FP8's. It is always installed and chosen like the
others (--model CC_SMALL_FP8_EXPERIMENTAL, the drop-downs, Ctrl+F11). Its weights are made during installation
from your CC_SMALL_FP8 model and a difference file in the package (linux/data/experimental/, each changed
entry XOR the original, so it holds none of NVIDIA's weights), and checked against a known SHA-256; so it needs
the 310.9.16 DLL.
HIP would work too: ROCm supports RDNA4 and its matrix (WMMA) instructions. Vulkan fits this job better:
- The network runs on the game's own Vulkan device and queue (DXVK / vkd3d-proton under Proton). The frame never leaves that device, and no second GPU context or cross-API synchronisation is needed.
- Nothing extra to install: Vulkan comes with the graphics driver. On Linux the HIP runtime
(
libamdhip64) is not part of Mesa and has to be installed separately (ROCm or the distribution's packages), plus a bridge to reach it from a game running in Proton (a Windows process). On Windows the AMD driver includes it (amdhip64_7.dllin current drivers). - RDNA4's matrix instructions are available in Vulkan through
VK_KHR_cooperative_matrix, both in Mesa (Linux) and in the AMD Windows driver.
How the routes work in detail, and where the code is: docs/ARCHITECTURE.md.
Download a DLSSNR-AMD-Vulkan-Linux-*-x86_64.tar.gz (64-bit games) or -i686.tar.gz (32-bit games) from
the releases, unpack it and run:
bash install.sh "/path/to/steamapps/common/<game folder>" --dll /path/to/nvngx_dlssnr_2026_10_16.zipThe folder is the one holding the game's exe. The installer lists the routes, asks which network a game
starts with (Enter = CC_SMALL_FP8; all four are installed and can be switched
in game), which processing NR uses (Enter = the RenoDX style; or the
wilsjo2 style) and, on the ReShade routes,
whether to use LumeniteFX Kernel (by Afzaal) for the motion
vectors instead of VORT (downloaded from its author's GitHub and installed unchanged; it is not part of this
project), extracts the model (below) and prints the Steam launch options to use. --dll is needed only for the first install:
the extracted model is kept and reused for every later one. Needs bash and python3. See
linux/package/README.txt.
Download DLSSNR-AMD-Vulkan-Windows-*-preview-x86_64.zip from the releases, unpack it and double-click
install.bat. Pick the game's exe (the one that actually runs, not a launcher), then the route, the processing
(Enter = the RenoDX style; or the wilsjo2 style), on the ReShade routes whether to use
LumeniteFX Kernel (by Afzaal) for the motion vectors instead of
VORT (downloaded from its author's GitHub and installed unchanged; it is not part of this project), and which
network a game starts with (Enter = CC_SMALL_FP8; all four are installed and can be switched in game). The
first install asks for nvngx_dlssnr.dll (310.9.16 or 310.8.0) or a zip that contains it and extracts the
models (below); later installs from the same package do not ask again. Read
windows/package/README.txt and Windows
first.
The weights are NVIDIA's and are not part of this project. They are extracted from your own copy of
nvngx_dlssnr.dll, version 310.9.16 or 310.8.0. 310.9.16 already contains the 310.8.0
model, so with it both models are extracted and installed; 310.8.0 gives CC_SILVER_AARDWOLD only. Use
310.9.16 when you can.
| File | Model |
|---|---|
dlssnr-amd/CC_SMALL_FP8.bin |
CC_SMALL_FP8 (310.9.16's default, faster); the default |
dlssnr-amd/CC_SILVER_AARDWOLD.bin |
CC_SILVER_AARDWOLD (the model of 310.8.0; 310.9.16 has it too) |
- Input: the DLL itself, or a zip that contains exactly one
nvngx_dlssnr.dll(it may be in a subfolder). - A DLL of any other version is refused.
- Every extracted entry (599 for
CC_SILVER_AARDWOLD, 255 forCC_SMALL_FP8) is checked against known hashes; a model file is written only if every one matches. On Linux it takes about 40 seconds for 310.9.16 and 20 seconds for 310.8.0, and needsbashandpython3. The Windows package does the same withmodel-tools\dlssnr_extract_model.exe(no Python needed), in about a second. - The extracted models are kept in the package's own
dlssnr-amd/. Later installs from that package without--dll(-Dllon Windows) check their SHA256 and install them from there, so the extraction runs only once per package. With a new package, use--dllonce more or copy those files over. - Every model the package has is installed. Which network runs is
[Network] Modelindlssnr-amd.ini:CC_SMALL_FP8,CC_SMALL_FP8_EXPERIMENTAL,CC_SILVER_AARDWOLDorCC_SILVER_AARDWOLD_OPTIMIZED, set at install (--modelon Linux,-Modelon Windows, or the installer's question) and switchable in game; a network without its model (CC_SMALL_FP8from a 310.8.0 DLL) is greyed out in the menus with the reason.
Two ways to run it:
# while installing: the models go to <game folder>/dlssnr-amd/
bash install.sh "<game folder>" --dll nvngx_dlssnr_2026_10_16.zip
# on its own, into an existing folder: model-tools/ in the package, linux/package/model-tools/ in this repository
bash model-tools/extract_model.sh nvngx_dlssnr_2026_10_16.zip <folder>On success it prints 599 entries, 140.9 MiB for CC_SILVER_AARDWOLD.bin (147,756,560 bytes) and
255 entries, 108.6 MiB for CC_SMALL_FP8.bin (113,917,248 bytes). Put the files in
<game folder>/dlssnr-amd/, or pass them to a package build with NR_MODEL= and NR_MODEL_SMALL=.
On Windows, install.bat extracts the model by itself; to run the tool on its own:
model-tools\dlssnr_extract_model.exe nvngx_dlssnr.dll <folder>It takes the DLL itself (unpack it from the zip first) and writes CC_SILVER_AARDWOLD.bin, and from 310.9.16 also
CC_SMALL_FP8.bin, into the folder.
It is built from the same code as the Linux version and changed only where the AMD Windows driver needs it. Since 0.0.8.1 it has everything the Linux version has. Some releases may be Linux only.
DirectX 10/11/12 games keep the system's own D3D. NR runs on a Vulkan device of its own on the same card, and each frame is handed between the two through shared textures and a shared fence, on the GPU. Vulkan games: NR runs on the game's own device. DirectX 9 games run on Vulkan through DXVK, because D3D9 cannot share a frame with another API.
ACO's machine code (ACO Mode). The package carries the network as machine code made in advance with Mesa's
ACO compiler (the Linux driver's compiler), and the AMD driver loads that code instead of compiling the network;
it runs faster than the AMD driver's own compile (see Performance). Since 0.0.8.1 this is not a setting: it is
always tried first. When the driver cannot take it, NR Control and dlssnr-amd.log say why, and an RX 9000 runs
the network compiled by the AMD driver instead (without CC_SMALL_FP8_EXPERIMENTAL and
CC_SILVER_AARDWOLD_OPTIMIZED); RX 7000 and Radeon 700M / 800M / 8000S graphics have no
NR then. The imported machine code is kept in dlssnr-amd\aco-cache in the game's folder, so later starts are
quicker.
RX 7000 and Radeon 700M / 800M / 8000S graphics (RDNA3), experimental. CC_SMALL_FP8 and
CC_SILVER_AARDWOLD as ACO's machine code, made and tested by
TheAutomatic,
building on mauri870's DLSSNR-RDNA3.
Tried on few machines: expect more problems than on RX 9000, and for now it may not match the stability and
performance of DLSSNR-RDNA3.
Known issues:
- When ACO's machine code cannot be used (the AMD driver's own compiler) it is slower than the Linux version (see Performance).
- The first time NR runs in a game, the network takes a while to build before it takes effect (the driver compiles a template of each shader even for ACO's machine code); the OSD shows its progress. Later starts in that game are quicker. Until then the picture looks as without NR, which does not mean the mod is not working: give it a minute.
- DirectX 9 games run entirely on DXVK, which changes their performance and behaviour; overlays such as Steam's may not show.
- In DirectX 10 games the game's depth buffer is not passed to NR yet (not implemented).
- NR Control has been tested over DirectX 12 swap chains only; the RenoDX style has not been tested in a DirectX 10 game.
- Games whose FSR runs in their own shaders never hand it to OptiScaler: pick the game's DLSS option instead, which OptiScaler offers.
- The network pauses itself when video or system memory runs short.
- Without ACO's machine code the network is built by the AMD Windows driver's shader compiler, which rounds differently from the Linux version in places; on a 1080p test frame the two outputs are 48.5 dB PSNR apart.
Tested on Ubuntu 24.04. Everything, including the Windows DLLs, is cross-compiled on Linux.
sudo apt install git curl python3 cmake ninja-build mingw-w64 g++-multilib p7zip-full
bash fetch_deps.sh # pinned third-party pieces -> toolchain/, artifacts/ref/
bash linux/build/build_vulkan_loader.sh # the patched Vulkan loader for the reshade-feeder-vulkan/-dx9 routes
NR_ARCH=x86_64 bash linux/build/build_package.sh
NR_ARCH=i686 bash linux/build/build_package.shThe packages land in linux/package/. They contain no model; install.sh --dll extracts it. To put
models you extracted yourself into a package for your own use, set NR_MODEL=/path/to/CC_SILVER_AARDWOLD.bin (and
NR_MODEL_SMALL=/path/to/CC_SMALL_FP8.bin for CC_SMALL_FP8).
Do not share packages that contain the model.
bash fetch_deps.sh --windows # adds GE-Proton 11-7 (DXVK)
bash windows/build/build_package.shThe result is windows/package/DLSSNR-AMD-Vulkan-Windows-*-preview-x86_64.zip; on Windows, run install.bat from it.
It contains no model; the installer extracts it on the first install. NR_MODEL=/path/to/CC_SILVER_AARDWOLD.bin
(and NR_MODEL_SMALL=/path/to/CC_SMALL_FP8.bin for CC_SMALL_FP8) puts them into the package
for your own use. Do not share packages that contain the model.
MIT for the code in this repository, see LICENSE. The packages also carry third-party components under their own licences, listed in THIRD_PARTY.md. NVIDIA's model weights are NVIDIA's property and are neither included nor distributed.