release: engine models skip L/M on RDNA2 and render in parallel

RDNA2 has native kernels for K's layers only; L's and M's test frames still
compiled their transformer layers with emulated matrix products for most of
an hour. The builder now builds e, f, k, k-ldr on gfx103x (detected like the
native kernels: D4R_GPU_ARCH, else the KFD node with the most SIMDs);
D4R_ENGINE_ALL_MODELS=1 builds L and M anyway. install.sh takes the model
list from build-engine-models.sh --list-sr-models and keys the shared cache
on it.

Models build in alphabetical order (E, F, K, L, M). The first frame renders
alone to create the Proton prefix; the rest render at the same time, each
model built as soon as its frame is done (ZLUDA compiles in one thread per
process). Cold install.sh --yes on a Steam Deck: 185 s.
This commit is contained in:
woutermans committed 2026-10-18 23:03:58 +02:00
1 parent 4064117244
commit 916b0d1467
2 files changed
+67 -28

No files matched your search

+5 -3
View File
@@ -167,10 +167,12 @@ if [[ ! -f "$BUILDER" ]]; then
[[ "$DO_ENGINE" != 1 ]] || fail "missing $BUILDER (this release has no engine-model builder)"
done_msg; exit 0
fi
models=(rr-d rr-e rr-f k k-ldr m m-ldr l l-ldr e f)
# One build serves every game with the same DLLs and builder: the key covers both and the accuracy choice.
# the Super Resolution models depend on the GPU (RDNA2 builds no L and M), so the builder lists them
models=(rr-d rr-e rr-f $(bash "$BUILDER" --list-sr-models))
# One build serves every game with the same DLLs, builder and model set: the key covers them and the accuracy choice.
key() { # key EXACT(0|1)
{ echo "exact=$1"
echo "models=${models[*]}"
sha256sum -- "$RUNTIME/nvngx_dlss.dll" "$RUNTIME/nvngx_dlssd.dll" 2>/dev/null | cut -d' ' -f1
(cd "$RUNTIME/tools" && find . -type f ! -name '*.pyc' -print0 | LC_ALL=C sort -z | xargs -0 sha256sum); } | sha256sum | cut -c1-16
}
@@ -193,7 +195,7 @@ if [[ "$DO_ENGINE" == ask ]]; then
echo ' + On RDNA2 (Steam Deck) it is the route for DLSS 3'"'"'s CNN presets E and F: those models run without cooperative matrices.'
echo ' + Lower latency: the game shows the upscaled result of the frame it just rendered, not an older one.'
echo ' + No minute-long freeze while DLSS'"'"'s CUDA kernels compile the first time a model is used.'
echo ' - Longer setup, once: building its models takes a minute or two (it renders a test frame per model'
echo ' - Longer setup, once: building its models takes a few minutes (it renders a test frame per model'
echo ' through GE-Proton) and needs ~300 MB of temporary space. Later installs reuse the models.'
echo ' - Slower for K and M on RDNA3; there d4r keeps those two models on its normal path.'
echo ' Without it, d4r uses its normal path; anything the engine does not cover uses that path anyway.'