Repository navigation
Releases: lonewolf0622/HelixSR
Release list
HelixSR 1.4.1
HelixSR 1.4.1: faster QSSM.
- QSSM is faster with the same image: its final downscale pass was rewritten (separable, staged in shared memory). Largest difference to 1.4.0's output: 0.00075 after tonemapping; the same scores in our test scenes.
| Quality mode, BC-250 | auto | QSSM Light (1.4.0 -> 1.4.1) | QSSM Ultra (1.4.0 -> 1.4.1) |
|---|---|---|---|
| 1080p | 1.19 ms | 2.19 -> 1.80 ms | 2.59 -> 2.00 ms |
| 1440p | 1.80 ms | 3.55 -> 2.87 ms | 4.40 -> 3.35 ms |
- A custom QSSM
ScreenScaleis capped at 1.5x (the presets are 1.25x or less). helixsr.inishows how to pick a preset: one ready line per QSSM / PRSM preset.
Update from 1.4.0
- Extract 1.4.1 into a new folder and run its setup (it builds the network into the new DLL).
- Run
helixsr-install: games that have HelixSR are updated in place.
With --separate-files / -SeparateFiles, copying the new DLL is enough: the network files did not change.
The download contains no NVIDIA weights or NVIDIA-derived kernels; the setup builds them on your PC from NVIDIA's DLSS DLL. The DLL the setup makes contains NVIDIA's network and is for your own PC only.
HelixSR 1.4.0
HelixSR 1.4.0: new quality and speed presets, a one-file DLL and an installer.
Re-run the setup after updating. The network file format changed; HelixSR refuses the 1.3.0 files with a message in helixsr.log.
New
- QSSM (Quality Super-Sampled Mode): the network outputs more than the screen and a final pass scales it down: cleaner edges and less shimmer, at a higher GPU cost.
NetworkResolution = QSSM Ultra / High / Balanced / Light / Eco / Min= 1.25 / 1.20 / 1.15 / 1.10 / 1.05 / 1.025x the screen. At 1.25x it had less error and 4-12% less flicker than NVIDIA's Model E at the screen size in our test scenes. - PRSM (Performance Reduced-Sample Mode): the network outputs less than the screen and the final pass scales it up: faster, softer.
NetworkResolution = PRSM Light / Quality / Balanced / Performance / Ultra / Extreme= 0.95 / 0.90 / 0.85 / 0.80 / 0.75 / 0.70x the screen. It never goes below 1.5x the render size (smaller would be slower). Example: 4K Performance 3.54 -> 2.74 ms at 0.75x. - QSSM and PRSM change only upscaling modes: native (DLAA) always runs at the screen size. QSSM skips Ultra Performance.
ScreenScalesets any other scale. - Ultra Performance:
NetworkScalesets the network size (default 2x the render size;2.25and2.5give 1620p and 1800p at 4K, more detail for more GPU time). - One-file DLL: the setup builds the network into
amd_fidelityfx_dx12.dllitself; each game needs only that file. (--separate-files/-SeparateFileskeeps the old two files.) - Installer:
helixsr-install.sh(Linux) /helixsr-install.bat(Windows) lists your Steam games with FSR 3.1 (all libraries, also Flatpak Steam), installs HelixSR into the ones you pick, keeping the game's DLL as*.original.dll, and restores it on uninstall.--folderfor games outside Steam.
Fixes and changes
- Games with dynamic resolution could crash in 1.3.0: its split k7/k11 network kernels are removed.
- The game's reactive mask reaches the network correctly with
UseReactiveMask = true(still off by default). - The camera jitter sequence is three times longer than NVIDIA's recommended length: 5-13% less error on still and slow scenes in our tests.
- 1080p Quality is 0.03 ms slower than 1.3.0 (1.13 -> 1.16 ms on the BC-250) after the split kernels were removed.
Update from 1.3.0
- Extract the new zip into a new folder and run
helixsr-setupthere. - Run
helixsr-installand pick your games (games that have HelixSR are updated in place). Manual installs: copy the newamd_fidelityfx_dx12.dllover HelixSR's file in each game; the oldhelixsr_weights.bin/helixsr_kernels.pakcan be deleted.
Timings are from one example GPU (the BC-250 at 2000 MHz); faster GPUs can afford the larger QSSM presets. The download contains no NVIDIA weights or NVIDIA-derived kernels: the setup builds them on your PC from NVIDIA's DLSS DLL. The DLL the setup makes contains NVIDIA's network and is for your own PC only.
HelixSR 1.3.0
HelixSR 1.3.0
What's new
- Automatic wave size. HelixSR now picks the shader wave size that suits your GPU. This targets the blurry/ghosting image reported on RX 7000 cards and the ROG Ally under Windows.
- Ultra Performance about 30% faster at the same image quality, plus an optional faster Performance mode.
- Faster at several other common resolutions, with the same image quality.
- Clear message on Vega / Radeon VII. These GPUs are not supported in this version. Instead of a shaking low-quality picture, HelixSR now says so in
helixsr.logand leaves the network off. - Re-run the setup after updating (see Upgrading).
Faster Ultra Performance (network resolution)
New setting in helixsr.ini:
[Upscaling]
NetworkResolution = auto- auto (default): in Ultra Performance the network outputs twice the game's render size, and a final pass scales that to your screen. In our tests (compared with NVIDIA's Model E at full size) the image quality is the same, and it costs about 30% less GPU time.
- fast: also does this for Performance (network at 1.5x the render size). Faster, a little softer (foliage most).
- full: always the full output size, as in 1.2.0.
It is used only with render-resolution motion vectors (most games).
| Output | Mode | 1.2.0 | 1.3.0 |
|---|---|---|---|
| 3840x2160 | Ultra Performance | 3.40 ms | 2.16 ms |
| 2560x1440 | Ultra Performance | 1.63 ms | 1.15 ms |
| 1920x1080 | Ultra Performance | 1.09 ms | 0.75 ms |
| 3840x2160 | Performance, fast |
3.50 ms | 2.71 ms |
| 2560x1440 | Performance, fast |
1.67 ms | 1.35 ms |
| 1920x1080 | Performance, fast |
1.11 ms | 0.94 ms |
Wave size (auto)
New setting in helixsr.ini:
[Compatibility]
WaveSize = autoauto (default), 32 or 64.
- auto on RDNA 1 and 2 (Steam Deck, RX 6000, BC-250): wave32, as before.
- auto on RDNA 3, 3.5 and 4 (RX 7000, RX 9000, ROG Ally / Z1, Radeon 780M / 890M, Strix): the network shaders run at wave64. HelixSR's own convolution kernels stay at wave32. The setup now builds both versions.
Why: with wave32, RDNA 3 under Windows showed a blurry, ghosting image. A community wave64 test build fixed it.
In our tests wave64 gives exactly the same output as wave32 (bit-identical) and is about 5% slower. The community wave64 build was 12-22% slower; ours reads lanes through shared memory (LDS), which is cheaper.
helixsr.log shows the choice in a line starting with wave size:.
Faster
Measured on the BC-250 at 2000 MHz, GPU time of the upscaling pass, same image quality:
| Output | Render size | 1.2.0 | 1.3.0 |
|---|---|---|---|
| 1920x1080 Quality | 1280x720 | 1.153 ms | 1.129 ms |
| 1920x804 Quality | 0.969 ms | 0.926 ms | |
| 2560x1071 Quality | 1.431 ms | 1.411 ms | |
| 2560x1440 | 1707x960 | 2.48 ms | 1.73 ms |
| 1920x1080 | 1280x721 | 1.56 ms | 1.16 ms |
| 3840x2160 | 2560x1441 | 5.45 ms | 3.70 ms |
- Two small network layers now split their work across more of the GPU (first three rows). 4K is unchanged.
- Render sizes just under a 1.5x ratio (a game rounding the render size up, e.g. 1707x960 for 1440p) now use the faster output kernel. Its output was checked equal to native Model E.
Not supported (Vega / Radeon VII)
Radeon Vega GPUs (Vega 56/64, Radeon VII and the Vega graphics in Ryzen APUs) have no wave32, which HelixSR still needs. They are not supported in 1.3.0. HelixSR now writes a clear message to helixsr.log and does not start the network, instead of showing the shaking placeholder picture from earlier versions. Vega support may come in a later version; there is no date.
Upgrading (re-run setup)
Run helixsr-setup again after updating, then copy the new helixsr_kernels.pak (and helixsr_weights.bin) next to the DLL in each game, as before.
The kernel file format changed. With a file from 1.2.0 the DLL still works, but without the new speedup, and it logs a hint to re-run the setup.
Thanks
Thanks to dawoodtogoo2020-code for building and testing a wave64 version on Windows and the ROG Ally X. That test showed that wave64 fixes the RDNA 3 image problem and led to this release's automatic wave size.
HelixSR 1.2.0
The HelixSR download no longer contains any NVIDIA weights or NVIDIA-derived code. A one-time setup builds the network on your PC from NVIDIA's own DLSS DLL.
Install
- Extract the zip.
- Run the setup in that folder:
./helixsr-setup.sh(Linux) or double-clickhelixsr-setup.bat(Windows). It asks before downloading NVIDIA's DLSS 310.7.0 DLL from NVIDIA's GitHub, buildshelixsr_weights.binandhelixsr_kernels.paknext to the HelixSR DLL (2-3 minutes) and deletes the DLL again. You can also pass a local copy with--dlss <path>. - Install HelixSR as described in the README, copying the two network files next to the DLL.
The network files contain NVIDIA's network. They are for your own PC: do not share or upload them.
What changed
- Same network and same speed as 1.1.0 (identical shaders and weights, measured on the BC-250: 1.15 ms at 1080p Quality, 3.50 ms at 4K Performance, 3.41 ms at 4K Ultra Performance).
- OptiScaler lists HelixSR as "FSR HelixSR (3.1.5)".
- Optional second FidelityFX upscaler DLL (for example AMD's, with FSR 4) listed next to HelixSR:
[Forwarding] UpscalerDllin helixsr.ini. - Linux setup works on any distribution (system Python and numpy, your package manager, or a portable Python; Microsoft's shader compiler runs through Proton). The Windows setup (PowerShell) has been tested only through Proton so far: reports welcome.
- Older releases (1.0.0 to 1.1.0) were removed because they contained NVIDIA's weights.
Tested on the AMD BC-250 (gfx1013, Linux, Mesa RADV); other GPUs and drivers are untested.