RDNA4 (experimental; untested on RDNA4 hardware) - kernels/common/wmma_layout.h picks the WMMA operand/accumulator layout per target; K (pwin_*) and M (swin_*) index through it, so the same sources build for gfx11 and gfx12. D4R_WMMA_LAYOUT=12 on gfx11 is a test shim that runs the gfx12 indexing on gfx11 WMMA. - M can use native e4m3 FP8 WMMA on gfx12 (D4R_NATIVE_FP8=1). Texture tails (enc0_tail, dec0_head) get gfx12 f16 and FP8 paths that match ZLUDA's gfx12 lowering. - ZLUDA patch 0007: gfx12 WMMA helpers, optional native FP8 MMA (D4R_ZLUDA_WMMA_FP8_NATIVE), a layout override for testing, and an architecture argument for d4r_emit. Texture kernels are now compiled offline per target through d4r_emit (D4R_ZLUDA_EMIT) instead of on the local GPU. - New d4r.ini option [Kernels] NativeFp8 (default on), wired through the shim and d4r_config.py. On gfx12 the bridge serves kernels/<arch>-fp8 when it is on. - The bridge picks the KFD GPU with the most SIMDs (so an iGPU is not chosen over a discrete GPU); D4R_GPU_ARCH overrides it. - kernels/build.sh and package_release.sh build gfx1100-gfx1103 and gfx1200/gfx1201 (plus -fp8 variants), and D4R_BUNDLE_TEX takes per-target folders. Performance (RDNA3; harness byte-identical unless noted) - ZLUDA patch 0006: m16n8k8 f16 MMAs on WMMA (E; not bit-exact, 52-55 dB per layer, D4R_ZLUDA_WMMA_K8=0 disables it), per-key weight-image slots for native prep kernels (d4r_prep_key_at, d4r_prep_key_slots), and wave64 builds of MMA-free kernels (D4R_ZLUDA_WAVE64). - M: packed FP8 encoding, conflict-free patch-merge reads, scalar weight loads in enc1, and weight prep once per weight set for the six enc3 tube blocks. - K: CU mode for the six non-wide pwin layers. - Texture kernels: every DLSS flag variant is built natively (24 K output, 8 M post, 4 M downsample, 4 M enc0), not only Townfall's; post and K output run as wave64. - M direct output: rrlite_downsample_kernel writes the shim's output buffer; the shim's default direct-output presets are now 11,13. Tools - dump_runner takes the prep grid from d4r_prep_blocks and refuses texture/surface dumps. - New pwin_check.py, swin_check.py, model_enc3.py and tail_check.hip. Docs: README GPU table and RDNA4 notes, building (patches 0002-0007, d4r_emit), native-kernels (RDNA4 section), performance (new numbers), packaging README. Version 0.1.2.
58 lines
2.4 KiB
INI
58 lines
2.4 KiB
INI
; d4r settings for this game. This file lives in the game's d4r folder and applies to this game only.
|
|
; "auto" means the built-in default. Any setting can also be overridden with the environment variable
|
|
; that config/d4r.ini.default in the source repository lists for it, e.g. in the game's launch options.
|
|
|
|
[DLSS]
|
|
; Which DLSS network runs:
|
|
; K DLSS 4 transformer (default)
|
|
; E DLSS 3 CNN: a little faster, softer image
|
|
; M DLSS 4.5 transformer: best image, much slower on RDNA3
|
|
; game whatever the game (or OptiScaler's preset override) asks for
|
|
; Frame rates measured on an RX 7700 XT at 2560x1440, Quality mode: see D4R_README.txt.
|
|
Model = K
|
|
; NVIDIA's library marks the image "DLSS SDK - DO NOT DISTRIBUTE" in this setup; d4r turns that off.
|
|
; true shows it.
|
|
ShowWatermark = false
|
|
|
|
[Latency]
|
|
; 0: every frame shows its own DLSS result, as with a native upscaler (needs the d3d12.dll that came
|
|
; with d4r next to the game).
|
|
; 1-3: allow results up to that many frames old. Slightly more fps, more input latency.
|
|
FrameAge = 0
|
|
|
|
[Kernels]
|
|
; Hand-written RDNA3 and RDNA4 kernels for the DLSS 4 and 4.5 networks (d4r\kernels). Each one is used
|
|
; only when your DLSS library's code for that kernel matches the code it was written for; otherwise
|
|
; that kernel is compiled from NVIDIA's code instead, which is slower but still correct.
|
|
NativeKernels = on
|
|
; RDNA4 (RX 9000 series) only: run DLSS's FP8 math on the GPU's native FP8 matrix units, with NVIDIA's
|
|
; own FP8 rounding in the DLSS 4.5 (M) layers. off runs it as 16-bit math, as on RDNA3. Ignored on
|
|
; other GPUs.
|
|
NativeFp8 = on
|
|
|
|
[Interop]
|
|
; These keep DLSS's inputs and output in video memory and move the waits between the game and DLSS
|
|
; onto the GPU. Leave them on unless you are chasing a problem.
|
|
VramInterop = true
|
|
GpuWait = true
|
|
LinearInputs = true
|
|
ElideNgxSync = true
|
|
; Lets DLSS's last kernel write straight into the game's output buffer (DLSS 4 / K only). It takes
|
|
; effect only while d4r's own output kernel runs, which it does when the DLSS library matches.
|
|
DirectOutput = auto
|
|
|
|
[Paths]
|
|
; Linux paths.
|
|
; ROCm installation (default: the ROCm runtime in d4r\rocm, else /opt/rocm)
|
|
RocmDir = auto
|
|
; Cache for the compiled DLSS kernels (default ~/.cache/d4r). The first launch fills it.
|
|
CacheDir = auto
|
|
|
|
[Debug]
|
|
; d4r's log is d4r\d4r_nvngx.log, rewritten at every launch.
|
|
; Profile = true adds one line of timings per frame.
|
|
Profile = false
|
|
|
|
[Env]
|
|
; Extra environment variables for d4r, NAME = value.
|