perf(dlss): create features at the recommended render size #311

Open
futondestroyer wants to merge 3 commits from futondestroyer/Longshot:perf/dlss-chain into main
Member

Type: perf · Risk: medium · Tested on: Windows, RTX 4070 · Needs: Linux NVIDIA NGX build/runtime

Why

Scaled DLSS spends unnecessary GPU time and power with models L and M. Initializing the feature at NGX's recommended render size removes an avoidable part of that cost.

What changed

Use NGX's recommended creation size while retaining full dynamic input resources and the actual evaluation subrect. This targets scaled L/M initialization cost without changing models or synchronization.

  • gpu/vk/vk_dlss.cpp::prepare: retain the recommended dimensions for each successful quality-mode query and use the selected recommendation for feature creation. Input allocations still cover the advertised dynamic range; evaluation still receives the actual render subrect. Native AA retains full-resolution feature creation.
  • Log the creation and input-resource dimensions separately.
  • Add an original SDK-free fixture executing the actual preparation function for K/L/M, HDR/SDR, dynamic reuse, rounded sizes, native AA and failed queries/creation.
  • Document the sizing contract and local runs. NVIDIA's public Streamline implementation is the reference for the API behavior; no SDK or Streamline implementation code is included.

Measurements

Current review base: main @ 7494ce4e. The current pushed head is named in Reviewer notes; the table retains the actual historical measured builds.

Verdict: Historical Windows measurements show about 16.1% higher average FPS for L and 12.4% for M. The exact M gain remains preliminary because PR repeats span 6.08%; the ABBA run order and per-run statistics remain disclosed.

Main at original submission: 514591a3 (2026-11-13; baseline actually used for the performance comparisons below).
Branch at original submission: perf/dlss-chain @ b319780c (the measured code commit). The branch is now rebased onto main 5e072fc8 at 65c27efb.
Rebase evidence: the DLSS source and SDK-free regression remain byte-for-byte unchanged from the measured branch. Main 5e072fc8 has not changed vk_dlss.cpp since the previous cf605c85 refresh. The sizing documentation now clarifies the fixture boundary. The original comparison measures the same feature-sizing change on the exact old build named in every column. Main has changed other renderer/runtime paths: the old absolute FPS, GPU time and power are historical measurements, not measurements of 5e072fc8 or a new post-rebase performance claim. The rebased code has been rechecked and rebuilt as described under Testing.

Hardware: RTX 4070 12 GB, NVIDIA 621.01, i7-13700F, 32 GB RAM, Windows 11 Home build 26300.
Scene: Market, child, standing at the fountain from the same locally copied save; 3440x1440 output and client area, DLSS 67% (2294x960), K/L/M, sharpness 0, frame generation off, Reflex off, V-Sync off, uncapped. HDR Native/Vanilla selected, but the display advertised no HDR surface: all four performance runs actually used SDR, confirmed by the startup and NGX feature logs.
Method: renderer-only development packs on the same build v2.1.0-rc.3-413-g514591a3 (source 2af40fe2); baseline host hash verified before every run. Four sequential processes in main / PR / PR / main order, two runs each. This is ABBA, not the prescribed main / PR / main / PR (ABAB); it is a method deviation and no fresh ABAB run is claimed. The second and fourth processes used reversed phase order. Game time and NPCs advance naturally; the two arms each cover both phase orders, rather than freezing world state. Each mode settles for 12 s, then records at least 25 s and 1,200 presents. Table values are medians of the two run summaries. Present intervals come from HOS_PRESENT_TRACE; GPU time from the ordinary runtime log (no serializing diagnostic timestamps); board power from 500 ms nvidia-smi sampling. Every recorded scaling sample passed the quiet-machine check and continuously checked scene/window dimensions. 1% low is 1000 divided by the mean of the slowest 1% of present intervals.
How to reproduce: stand at the Market fountain on a child save, fix output at 3440x1440 and render resolution at 67%, turn frame generation/V-Sync off and remove the cap, then alternate main and this PR with the same save/cache/settings for each model. Compare the GPU time and NVIDIA DLSS status lines as well as present intervals. Do not compare a different display/HDR mode or a profiled build.

Mode / metric Before: main @ 514591a3 After: this PR @ b319780c
Upscaler off, average fps / 1% low 59.84 / 37.42 59.66 / 37.88
K 67%, average fps / 1% low 58.79 / 40.39 58.76 / 42.25
L 67%, average fps / 1% low 45.46 / 36.56 52.79 / 39.48
M 67%, average fps / 1% low 48.77 / 31.13 54.83 / 40.54
Upscaler off, median / p99 frame time (ms) 16.663 / 19.508 16.765 / 19.865
K 67%, median / p99 frame time (ms) 16.972 / 20.406 17.029 / 20.158
L 67%, median / p99 frame time (ms) 21.967 / 24.982 18.927 / 21.588
M 67%, median / p99 frame time (ms) 20.450 / 23.711 18.239 / 21.003
K 67%, GPU time (ms) / board power (W) 9.850 / 105.15 9.850 / 104.32
L 67%, GPU time (ms) / board power (W) 15.075 / 137.19 11.850 / 119.44
M 67%, GPU time (ms) / board power (W) 13.500 / 129.62 11.200 / 115.24

The measured average-FPS gain is 16.1% for L and 12.4% for M. The exact M gain is preliminary: the two PR M runs span 17.699–18.809 ms average frame time, a 6.08% repeat spread. The repeated L runs are tighter (1.29% main, 2.31% PR). K and upscaler-off do not show a repeatable gain. This does not remove the intrinsic cost of DLSS or claim a Native AA speedup. VRAM samples varied with accumulated caches/feature retirement, so no memory saving is claimed.

Repeat spread below is (maximum - minimum) / median * 100 of the two per-run average frame times, not of individual frame times or per-run medians. Each summary metric above is independently the median of its two run summaries; FPS is computed as 1000 / average interval for each run before taking that median.

Mode Main average-frame-time range / spread PR average-frame-time range / spread
native 16.125–17.343 ms / 7.28% 16.239–17.317 ms / 6.42%
K67 16.787–17.241 ms / 2.66% 16.899–17.143 ms / 1.43%
L67 21.856–22.139 ms / 1.29% 18.727–19.165 ms / 2.31%
M67 20.015–21.016 ms / 4.88% 17.699–18.809 ms / 6.08%
Per-run timing and quiet-machine summaries (original measured builds)
Process / mode Average FPS Median ms p99 ms 1% low FPS
main-a / native 57.661 17.288 20.471 40.064
main-a / K67 58.003 17.200 21.094 39.319
main-a / L67 45.754 21.811 25.375 36.521
main-a / M67 49.963 19.984 23.098 32.139
pr-b / M67 53.166 18.777 21.880 39.171
pr-b / L67 52.178 19.145 21.498 36.838
pr-b / K67 59.176 16.861 20.817 41.529
pr-b / native 61.581 16.257 19.237 40.896
pr-c / native 57.748 17.273 20.493 34.863
pr-c / K67 58.334 17.198 19.499 42.967
pr-c / L67 53.400 18.710 21.678 42.126
pr-c / M67 56.501 17.702 20.127 41.914
main-d / M67 47.583 20.917 24.324 30.127
main-d / L67 45.169 22.123 24.589 36.601
main-d / K67 59.568 16.744 19.718 41.464
main-d / native 62.017 16.037 18.544 34.769
Process / mode Presents Interval sum (s) Other CPU mean (cores) Other CPU peak 5 s (cores) Eligible
main-a / native 1443 25.025 0.790 1.387 True
main-a / K67 1451 25.016 0.723 1.237 True
main-a / L67 1236 27.014 0.686 0.987 True
main-a / M67 1250 25.019 0.618 0.896 True
pr-b / M67 1331 25.035 0.528 0.643 True
pr-b / L67 1306 25.030 0.441 0.568 True
pr-b / K67 1481 25.027 0.697 0.903 True
pr-b / native 1540 25.008 0.613 0.721 True
pr-c / native 1445 25.023 0.623 0.884 True
pr-c / K67 1460 25.028 0.551 0.762 True
pr-c / L67 1337 25.038 0.527 0.678 True
pr-c / M67 1414 25.026 0.569 0.774 True
main-d / M67 1238 26.018 0.613 0.837 True
main-d / L67 1221 27.032 0.481 0.671 True
main-d / K67 1490 25.013 0.602 0.796 True
main-d / native 1551 25.009 0.758 1.299 True

The per-run timing numbers were recomputed from locally retained traces and matched every original audited summary. Each frame range is complete and contiguous. p99 is the nearest-rank 99th percentile; the 1% low uses the slowest ceil(N * 0.01) intervals. Interval sums give the measured duration, not wall time including setup. Quiet figures are CPU busy cores excluding the game's process; eligibility requires mean <3 and peak over 5 seconds <=6. All 16 phases passed. Raw game-derived traces remain local under CONTRIBUTING.md; these numeric summaries expose the aggregation without uploading them.

main @ 514591a3, L 67%
[hos Presentation Thread] vk: GPU time 15.0 ms a frame (the longest submission 8.3 ms); 2.0 textures made a frame
[hos Presentation Thread] vk: status: 600 frames, the slowest 42.2 ms; VRAM 8.1 of 10.6 GB; NVIDIA DLSS: 600 frames drawn, 3 made, jitter +0.219 -0.426 px, actor motion 121273 draws in 600 frames (0.253 ms CPU a frame), its images 128 MB, its own 631 MB
this PR @ b319780c, L 67%
[hos Presentation Thread] vk: NVIDIA DLSS: feature create size 2293x960 (recommended), input resources 3440x1440
[hos Presentation Thread] vk: GPU time 11.9 ms a frame (the longest submission 5.3 ms); 0.0 textures made a frame
[hos Presentation Thread] vk: status: 600 frames, the slowest 35.1 ms; VRAM 8.1 of 10.6 GB; NVIDIA DLSS: 600 frames drawn, 3 made, jitter +0.313 -0.352 px, actor motion 132034 draws in 600 frames (0.267 ms CPU a frame), its images 128 MB, its own 369 MB

Flags and settings

None. None added. Existing DLSS settings use the corrected initialization. No model defaults change.

Testing

Readiness validation on main7494ce4e: clean main: 533 passed, 7 failed, 34 skipped in 119 s (windows, 24 at once). This PR: 534 passed, 7 failed, 34 skipped in 121 s (windows, 24 at once). The same seven failures occur on both: tests/test_cpm_discovery.py, tests/test_linux_preflight.py, tests/test_make_game_cache.py, tests/test_oot_state_tap.py, tests/test_release.py, tests/test_tested_configurations.py, tests/test_walk_key.py. No PR-only failures. The previous Windows NGX renderer build passed and its production source is byte-identical; the additional current-main renderer rebuild is deferred while another job holds the shared test lock and for the scheduled autobuild priority window. The PR production files are byte-identical to the prior submitted head. All eight related PR screenshot links were checked anonymously with range GET: HTTP206 and valid PNG signatures; HEAD requests are rejected by the server and were not used as evidence of broken links. No new in-game or performance run is claimed.

Tested: Original pre-rebase Windows renderer pack built from the committed change with llvm-mingw and the local optional NGX SDK. New regression passes here and fails at the recommended-width assertion on unchanged main. Full python -I -B tests/run_all.py: 496 passed, 5 failed, 33 skipped in 126 s. The same five checks fail on clean main: nx2/test_nup_paths.py, tests/test_finish_output.py, tests/test_check_third_party.py, tests/test_menu_i18n.py, tests/test_release.py. These include Windows symlink privilege, NGX staging expectations and translation/release fixtures outside this change. The third-party checker also counts ignored build DLLs on the built checkout because its text-mode git check-ignore --stdin loses ignored-path matching on Windows; the fresh main checkout lacks those artifacts. Every shared file in the three affected parts (a64-kit, sdl2, zbic) was compared byte for byte to clean main with no differences, and the fake clean-tree ignored-file case fails on both. A direct text-stdin versus byte-stdin control confirmed the ignore-matching difference. No provenance hashes were changed or checks weakened.

Actual Native HDR/Vanilla correctness controls on main and the PR: K/L/M Native AA sustained 600/600 evaluations in the last complete interval for every phase. One run per arm, so these are correctness controls, not speedup measurements. aa3-main-a: KAA GPU 12.3 ms, LAA GPU 17.5 ms, MAA GPU 16.1 ms; aa3-pr-b: MAA GPU 16.5 ms, LAA GPU 17.8 ms, KAA GPU 12.3 ms. The PR also sustained K/L/M at 83% (2867x1200, above the 2293x960 creation recommendation), with full-size 3440x1440 input resources, no evaluation fallback, and quiet/scene/window guards passing. Local captures were inspected for coverage and obvious corruption. The performance comparisons and these HDR controls are separate datasets; no HDR-versus-SDR speed comparison is made.

Post-rebase validation on main 5e072fc8 and this PR @ 65c27efb, bundled Python 3.14.7 and llvm-mingw: full python -I -B tests/run_all.py gave 522 passed, 6 failed, 34 skipped in 119 s on the PR and 521 passed, 6 failed, 34 skipped in 117 s on clean main. Shared failures: tests/test_framegen_resources.py, tests/test_module_ids.py, tests/test_oot_state_tap.py, tests/test_pad_layout.py, tests/test_release.py, tests/test_tested_configurations.py. No PR-only failures. The tested-configurations unit failure is its ASCII-pipe CRLF/LF expectation on Windows; the seven migrated records remain verbatim and the frozen main table is unchanged.

The source-reading DLSS regression passes on the rebased PR and fails on clean current main at the intended recommended-size assertion (2293x960). The Windows renderer with the actual optional NGX SDK compiles and links successfully (54 s); this is a build check, not a new in-game performance run. No third-party files, provenance hashes or regression assertions were changed. The fixture checks requested input dimensions; it does not allocate GPU images or execute NGX evaluation.

Forgejo source-check jobs on the pushed head are blocked by required conditions, not passing: CI run 5047 and third-party run 5048. The description job succeeded. A maintainer must unblock the fork workflows; local test results above are separate evidence.

Not tested: Linux build/runtime, other NVIDIA generations/drivers, other areas, extended gameplay or injected GPU failures. The SDK-free fixture covers sizing in both color modes but cannot prove other drivers' behavior. Frame generation and PsychoV35 are separate from this change.

External checks: Fork CI remains blocked by required conditions; Test Farm approval awaits a maintainer. These are pending, not passing. The Linux checkbox stays unticked; do not mark ready until required external coverage is settled.

Must be tested:

  • Linux, NVIDIA RTX with locally installed NGX SDK/runtime: build the renderer and check K/L/M at 67%, 75%/83%, Native AA and rounded Ultra Performance 1147x480 against advertised maximum1146x480 in SDR/supported Native HDR, expecting sustained evaluations, no crop/flicker/device loss and no K/AA regression (by hand: T-J85B; Test Farm: @Beanstalk Linux NVIDIA NGX sizing validation, optional runtime installed locally).

Screenshots

No intended visible change. The two original measured-build images are now PR attachments, verified anonymously accessible (HTTP 200, identical hashes). Same-scene images checked for output coverage and obvious corruption; HDR screenshots are not used to claim calibrated color accuracy.

main @ 514591a3, L 67%, SDR

main @ 514591a3

this PR @ b319780c, L 67%, SDR

this PR @ b319780c

Risks

What could break: NGX dynamic-resolution handling can differ by driver/runtime. Test inputs above the creation recommendation, rounded dimensions and native AA before accepting additional hardware coverage. Reverting the sizing commit restores the previous creation dimensions. Input allocations, evaluation subrects and resource synchronization are unchanged.

Turning it off: Revert the sizing change.

Compatibility: No save migration, option-file schema, public renderer ABI or builder-tool requirement is introduced by this PR. No shader-cache format change is introduced by this PR.

Reviewer notes

Final upstream check: main advanced to 5d3ecc78 after the validated rebase at7494ce4e. git merge-tree reports a clean merge for this PR against that newer main; the full-suite/build numbers above remain tied to the validated7494ce4e base. No new measured result on5d3ecc78 is claimed. The combined-tree fixture run is prepared but deferred while another job holds the shared lock and for the17:30 Halifax autobuild priority window; standalone PR fixtures passed.

Review the separate recommended, maximum-resource and actual-evaluation dimensions first. This addresses the scaled initialization penalty only; the original report also includes Native AA and model cost. PsychoV35 work was checked before claiming and is not duplicated here.

Current readiness refresh rebases onto main7494ce4e; current branch head 705f1534. Historical game measurements retain their original measured commits. This rebase includes upstream build/profile changes, so no current-head performance claim is made. The relevant production functions are unchanged by this readiness refresh; no production changes were added in this readiness refresh. Each PR merges individually against current main; shared documentation requires preserving each path when the other PRs land.

Issues

See #17

Checklist

Everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description) of the status line's type.
  • Why gives the reason plainly and links the issues that fit (the tracker searched).
  • Measurements has a verdict, or one line saying why there is nothing to measure.
  • Testing names what was tested, what wasn't, and what must still be tested, where and how.
  • Rebased on current main. (Validated7494ce4e; final clean-merge check against5d3ecc78.)
  • python -I -B tests/run_all.py passes (any failure that also fails on main is named).
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

When it applies

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported.
  • Screenshots of the same spot, captioned like the Measurements columns, for a change that shows on screen.
  • A file in docs/tested/ for each new measured run (format in docs/tested-configurations.md).
  • A game-free test added for the fix, failing on main and passing here.
  • A check under tests/ that reads changed source updated in this PR, not weakened.
  • Host code builds on both Windows (llvm-mingw) and Linux, with UTF-8 paths. (Prior Windows NGX build passes; current-main rebuild deferred for shared job/autobuild priority; Linux pending T-J85B.)
  • Docs updated.
**Type:** perf · **Risk:** medium · **Tested on:** Windows, RTX 4070 · **Needs:** Linux NVIDIA NGX build/runtime ## Why Scaled DLSS spends unnecessary GPU time and power with models L and M. Initializing the feature at NGX's recommended render size removes an avoidable part of that cost. ## What changed Use NGX's recommended creation size while retaining full dynamic input resources and the actual evaluation subrect. This targets scaled L/M initialization cost without changing models or synchronization. - `gpu/vk/vk_dlss.cpp::prepare`: retain the recommended dimensions for each successful quality-mode query and use the selected recommendation for feature creation. Input allocations still cover the advertised dynamic range; evaluation still receives the actual render subrect. Native AA retains full-resolution feature creation. - Log the creation and input-resource dimensions separately. - Add an original SDK-free fixture executing the actual preparation function for K/L/M, HDR/SDR, dynamic reuse, rounded sizes, native AA and failed queries/creation. - Document the sizing contract and local runs. NVIDIA's public [Streamline implementation](https://github.com/NVIDIA-RTX/Streamline/blob/main/source/plugins/sl.dlss/dlssEntry.cpp) is the reference for the API behavior; no SDK or Streamline implementation code is included. ## Measurements Current review base: **main @ 7494ce4e**. The current pushed head is named in Reviewer notes; the table retains the actual historical measured builds. **Verdict:** Historical Windows measurements show about 16.1% higher average FPS for L and 12.4% for M. The exact M gain remains preliminary because PR repeats span 6.08%; the ABBA run order and per-run statistics remain disclosed. Main at original submission: 514591a3 (2026-11-13; baseline actually used for the performance comparisons below). Branch at original submission: perf/dlss-chain @ b319780c (the measured code commit). The branch is now rebased onto main 5e072fc8 at 65c27efb. Rebase evidence: the DLSS source and SDK-free regression remain byte-for-byte unchanged from the measured branch. Main 5e072fc8 has not changed vk_dlss.cpp since the previous cf605c85 refresh. The sizing documentation now clarifies the fixture boundary. The original comparison measures the same feature-sizing change on the exact old build named in every column. Main has changed other renderer/runtime paths: the old absolute FPS, GPU time and power are historical measurements, not measurements of 5e072fc8 or a new post-rebase performance claim. The rebased code has been rechecked and rebuilt as described under Testing. Hardware: RTX 4070 12 GB, NVIDIA 621.01, i7-13700F, 32 GB RAM, Windows 11 Home build 26300. Scene: Market, child, standing at the fountain from the same locally copied save; 3440x1440 output and client area, DLSS 67% (2294x960), K/L/M, sharpness 0, frame generation off, Reflex off, V-Sync off, uncapped. HDR Native/Vanilla selected, but the display advertised no HDR surface: **all four performance runs actually used SDR**, confirmed by the startup and NGX feature logs. Method: renderer-only development packs on the same build `v2.1.0-rc.3-413-g514591a3` (source `2af40fe2`); baseline host hash verified before every run. Four sequential processes in **main / PR / PR / main** order, two runs each. This is **ABBA, not the prescribed main / PR / main / PR (ABAB)**; it is a method deviation and no fresh ABAB run is claimed. The second and fourth processes used reversed phase order. Game time and NPCs advance naturally; the two arms each cover both phase orders, rather than freezing world state. Each mode settles for 12 s, then records at least 25 s and 1,200 presents. Table values are medians of the two run summaries. Present intervals come from `HOS_PRESENT_TRACE`; GPU time from the ordinary runtime log (no serializing diagnostic timestamps); board power from 500 ms `nvidia-smi` sampling. Every recorded scaling sample passed the quiet-machine check and continuously checked scene/window dimensions. 1% low is 1000 divided by the mean of the slowest 1% of present intervals. How to reproduce: stand at the Market fountain on a child save, fix output at 3440x1440 and render resolution at 67%, turn frame generation/V-Sync off and remove the cap, then alternate main and this PR with the same save/cache/settings for each model. Compare the `GPU time` and `NVIDIA DLSS` status lines as well as present intervals. Do not compare a different display/HDR mode or a profiled build. | Mode / metric | Before: main @ 514591a3| After: this PR @ b319780c| |---|---:|---:| | Upscaler off, average fps / 1% low | 59.84 / 37.42 | 59.66 / 37.88 | | K 67%, average fps / 1% low | 58.79 / 40.39 | 58.76 / 42.25 | | L 67%, average fps / 1% low | 45.46 / 36.56 | 52.79 / 39.48 | | M 67%, average fps / 1% low | 48.77 / 31.13 | 54.83 / 40.54 | | Upscaler off, median / p99 frame time (ms) | 16.663 / 19.508 | 16.765 / 19.865 | | K 67%, median / p99 frame time (ms) | 16.972 / 20.406 | 17.029 / 20.158 | | L 67%, median / p99 frame time (ms) | 21.967 / 24.982 | 18.927 / 21.588 | | M 67%, median / p99 frame time (ms) | 20.450 / 23.711 | 18.239 / 21.003 | | K 67%, GPU time (ms) / board power (W) | 9.850 / 105.15 | 9.850 / 104.32 | | L 67%, GPU time (ms) / board power (W) | 15.075 / 137.19 | 11.850 / 119.44 | | M 67%, GPU time (ms) / board power (W) | 13.500 / 129.62 | 11.200 / 115.24 | The measured average-FPS gain is 16.1% for L and 12.4% for M. **The exact M gain is preliminary:** the two PR M runs span 17.699–18.809 ms average frame time, a 6.08% repeat spread. The repeated L runs are tighter (1.29% main, 2.31% PR). K and upscaler-off do not show a repeatable gain. This does not remove the intrinsic cost of DLSS or claim a Native AA speedup. VRAM samples varied with accumulated caches/feature retirement, so no memory saving is claimed. Repeat spread below is `(maximum - minimum) / median * 100` of the two per-run **average** frame times, not of individual frame times or per-run medians. Each summary metric above is independently the median of its two run summaries; FPS is computed as 1000 / average interval for each run before taking that median. | Mode | Main average-frame-time range / spread | PR average-frame-time range / spread | |---|---:|---:| | native | 16.125–17.343 ms / 7.28% | 16.239–17.317 ms / 6.42% | | K67 | 16.787–17.241 ms / 2.66% | 16.899–17.143 ms / 1.43% | | L67 | 21.856–22.139 ms / 1.29% | 18.727–19.165 ms / 2.31% | | M67 | 20.015–21.016 ms / 4.88% | 17.699–18.809 ms / 6.08% | <details> <summary>Per-run timing and quiet-machine summaries (original measured builds)</summary> | Process / mode | Average FPS | Median ms | p99 ms | 1% low FPS | |---|---:|---:|---:|---:| | main-a / native | 57.661 | 17.288 | 20.471 | 40.064 | | main-a / K67 | 58.003 | 17.200 | 21.094 | 39.319 | | main-a / L67 | 45.754 | 21.811 | 25.375 | 36.521 | | main-a / M67 | 49.963 | 19.984 | 23.098 | 32.139 | | pr-b / M67 | 53.166 | 18.777 | 21.880 | 39.171 | | pr-b / L67 | 52.178 | 19.145 | 21.498 | 36.838 | | pr-b / K67 | 59.176 | 16.861 | 20.817 | 41.529 | | pr-b / native | 61.581 | 16.257 | 19.237 | 40.896 | | pr-c / native | 57.748 | 17.273 | 20.493 | 34.863 | | pr-c / K67 | 58.334 | 17.198 | 19.499 | 42.967 | | pr-c / L67 | 53.400 | 18.710 | 21.678 | 42.126 | | pr-c / M67 | 56.501 | 17.702 | 20.127 | 41.914 | | main-d / M67 | 47.583 | 20.917 | 24.324 | 30.127 | | main-d / L67 | 45.169 | 22.123 | 24.589 | 36.601 | | main-d / K67 | 59.568 | 16.744 | 19.718 | 41.464 | | main-d / native | 62.017 | 16.037 | 18.544 | 34.769 | | Process / mode | Presents | Interval sum (s) | Other CPU mean (cores) | Other CPU peak 5 s (cores) | Eligible | |---|---:|---:|---:|---:|---| | main-a / native | 1443 | 25.025 | 0.790 | 1.387 | True | | main-a / K67 | 1451 | 25.016 | 0.723 | 1.237 | True | | main-a / L67 | 1236 | 27.014 | 0.686 | 0.987 | True | | main-a / M67 | 1250 | 25.019 | 0.618 | 0.896 | True | | pr-b / M67 | 1331 | 25.035 | 0.528 | 0.643 | True | | pr-b / L67 | 1306 | 25.030 | 0.441 | 0.568 | True | | pr-b / K67 | 1481 | 25.027 | 0.697 | 0.903 | True | | pr-b / native | 1540 | 25.008 | 0.613 | 0.721 | True | | pr-c / native | 1445 | 25.023 | 0.623 | 0.884 | True | | pr-c / K67 | 1460 | 25.028 | 0.551 | 0.762 | True | | pr-c / L67 | 1337 | 25.038 | 0.527 | 0.678 | True | | pr-c / M67 | 1414 | 25.026 | 0.569 | 0.774 | True | | main-d / M67 | 1238 | 26.018 | 0.613 | 0.837 | True | | main-d / L67 | 1221 | 27.032 | 0.481 | 0.671 | True | | main-d / K67 | 1490 | 25.013 | 0.602 | 0.796 | True | | main-d / native | 1551 | 25.009 | 0.758 | 1.299 | True | </details> The per-run timing numbers were recomputed from locally retained traces and matched every original audited summary. Each frame range is complete and contiguous. p99 is the nearest-rank 99th percentile; the 1% low uses the slowest `ceil(N * 0.01)` intervals. Interval sums give the measured duration, not wall time including setup. Quiet figures are CPU busy cores excluding the game's process; eligibility requires mean <3 and peak over 5 seconds <=6. All 16 phases passed. Raw game-derived traces remain local under CONTRIBUTING.md; these numeric summaries expose the aggregation without uploading them. ```text main @ 514591a3, L 67% [hos Presentation Thread] vk: GPU time 15.0 ms a frame (the longest submission 8.3 ms); 2.0 textures made a frame [hos Presentation Thread] vk: status: 600 frames, the slowest 42.2 ms; VRAM 8.1 of 10.6 GB; NVIDIA DLSS: 600 frames drawn, 3 made, jitter +0.219 -0.426 px, actor motion 121273 draws in 600 frames (0.253 ms CPU a frame), its images 128 MB, its own 631 MB this PR @ b319780c, L 67% [hos Presentation Thread] vk: NVIDIA DLSS: feature create size 2293x960 (recommended), input resources 3440x1440 [hos Presentation Thread] vk: GPU time 11.9 ms a frame (the longest submission 5.3 ms); 0.0 textures made a frame [hos Presentation Thread] vk: status: 600 frames, the slowest 35.1 ms; VRAM 8.1 of 10.6 GB; NVIDIA DLSS: 600 frames drawn, 3 made, jitter +0.313 -0.352 px, actor motion 132034 draws in 600 frames (0.267 ms CPU a frame), its images 128 MB, its own 369 MB ``` ### Flags and settings None. None added. Existing DLSS settings use the corrected initialization. No model defaults change. ## Testing **Readiness validation on main7494ce4e:** clean main: 533 passed, 7 failed, 34 skipped in 119 s (windows, 24 at once). This PR: 534 passed, 7 failed, 34 skipped in 121 s (windows, 24 at once). The same seven failures occur on both: `tests/test_cpm_discovery.py`, `tests/test_linux_preflight.py`, `tests/test_make_game_cache.py`, `tests/test_oot_state_tap.py`, `tests/test_release.py`, `tests/test_tested_configurations.py`, `tests/test_walk_key.py`. **No PR-only failures.** The previous Windows NGX renderer build passed and its production source is byte-identical; the additional current-main renderer rebuild is deferred while another job holds the shared test lock and for the scheduled autobuild priority window. The PR production files are byte-identical to the prior submitted head. All eight related PR screenshot links were checked anonymously with range GET: HTTP206 and valid PNG signatures; HEAD requests are rejected by the server and were not used as evidence of broken links. No new in-game or performance run is claimed. **Tested:** Original pre-rebase Windows renderer pack built from the committed change with llvm-mingw and the local optional NGX SDK. New regression passes here and fails at the recommended-width assertion on unchanged main. Full `python -I -B tests/run_all.py`: **496 passed, 5 failed, 33 skipped** in 126 s. The same five checks fail on clean main: `nx2/test_nup_paths.py`, `tests/test_finish_output.py`, `tests/test_check_third_party.py`, `tests/test_menu_i18n.py`, `tests/test_release.py`. These include Windows symlink privilege, NGX staging expectations and translation/release fixtures outside this change. The third-party checker also counts ignored build DLLs on the built checkout because its text-mode `git check-ignore --stdin` loses ignored-path matching on Windows; the fresh main checkout lacks those artifacts. Every shared file in the three affected parts (`a64-kit`, `sdl2`, `zbic`) was compared byte for byte to clean main with no differences, and the fake clean-tree ignored-file case fails on both. A direct text-stdin versus byte-stdin control confirmed the ignore-matching difference. No provenance hashes were changed or checks weakened. Actual Native HDR/Vanilla correctness controls on main and the PR: K/L/M Native AA sustained 600/600 evaluations in the last complete interval for every phase. One run per arm, so these are correctness controls, not speedup measurements. aa3-main-a: KAA GPU 12.3 ms, LAA GPU 17.5 ms, MAA GPU 16.1 ms; aa3-pr-b: MAA GPU 16.5 ms, LAA GPU 17.8 ms, KAA GPU 12.3 ms. The PR also sustained K/L/M at 83% (2867x1200, above the 2293x960 creation recommendation), with full-size 3440x1440 input resources, no evaluation fallback, and quiet/scene/window guards passing. Local captures were inspected for coverage and obvious corruption. The performance comparisons and these HDR controls are separate datasets; no HDR-versus-SDR speed comparison is made. Post-rebase validation on main 5e072fc8 and this PR @ 65c27efb, bundled Python 3.14.7 and llvm-mingw: full `python -I -B tests/run_all.py` gave **522 passed, 6 failed, 34 skipped in 119 s** on the PR and **521 passed, 6 failed, 34 skipped in 117 s** on clean main. Shared failures: `tests/test_framegen_resources.py`, `tests/test_module_ids.py`, `tests/test_oot_state_tap.py`, `tests/test_pad_layout.py`, `tests/test_release.py`, `tests/test_tested_configurations.py`. No PR-only failures. The tested-configurations unit failure is its ASCII-pipe CRLF/LF expectation on Windows; the seven migrated records remain verbatim and the frozen main table is unchanged. The source-reading DLSS regression passes on the rebased PR and fails on clean current main at the intended recommended-size assertion (2293x960). The Windows renderer with the actual optional NGX SDK compiles and links successfully (54 s); this is a build check, not a new in-game performance run. No third-party files, provenance hashes or regression assertions were changed. The fixture checks requested input dimensions; it does not allocate GPU images or execute NGX evaluation. Forgejo source-check jobs on the pushed head are **blocked by required conditions**, not passing: [CI run 5047](https://git.magicbean.dev/MagicBeanDev/Longshot/actions/runs/5047) and [third-party run 5048](https://git.magicbean.dev/MagicBeanDev/Longshot/actions/runs/5048). The description job succeeded. A maintainer must unblock the fork workflows; local test results above are separate evidence. **Not tested:** Linux build/runtime, other NVIDIA generations/drivers, other areas, extended gameplay or injected GPU failures. The SDK-free fixture covers sizing in both color modes but cannot prove other drivers' behavior. Frame generation and PsychoV35 are separate from this change. **External checks:** [Fork CI](https://git.magicbean.dev/MagicBeanDev/Longshot/actions/runs/9062/jobs/1) remains blocked by required conditions; [Test Farm approval](https://beanstalk.magicbean.dev/prs/311) awaits a maintainer. These are pending, not passing. The Linux checkbox stays unticked; do not mark ready until required external coverage is settled. **Must be tested:** - Linux, NVIDIA RTX with locally installed NGX SDK/runtime: build the renderer and check K/L/M at 67%, 75%/83%, Native AA and rounded Ultra Performance 1147x480 against advertised maximum1146x480 in SDR/supported Native HDR, expecting sustained evaluations, no crop/flicker/device loss and no K/AA regression (by hand: T-J85B; Test Farm: @Beanstalk Linux NVIDIA NGX sizing validation, optional runtime installed locally). ## Screenshots No intended visible change. The two original measured-build images are now PR attachments, verified anonymously accessible (HTTP 200, identical hashes). Same-scene images checked for output coverage and obvious corruption; HDR screenshots are not used to claim calibrated color accuracy. **main @ 514591a3, L 67%, SDR** ![main @ 514591a3](https://git.magicbean.dev/attachments/b27a81d6-4a8a-4677-9ed4-4b1f6361170b) **this PR @ b319780c, L 67%, SDR** ![this PR @ b319780c](https://git.magicbean.dev/attachments/afa0812e-99ce-48b4-b6f5-5441af3a9eb0) ## Risks **What could break:** NGX dynamic-resolution handling can differ by driver/runtime. Test inputs above the creation recommendation, rounded dimensions and native AA before accepting additional hardware coverage. Reverting the sizing commit restores the previous creation dimensions. Input allocations, evaluation subrects and resource synchronization are unchanged. **Turning it off:** Revert the sizing change. **Compatibility:** No save migration, option-file schema, public renderer ABI or builder-tool requirement is introduced by this PR. No shader-cache format change is introduced by this PR. ## Reviewer notes Final upstream check: main advanced to **5d3ecc78** after the validated rebase at7494ce4e. `git merge-tree` reports a clean merge for this PR against that newer main; the full-suite/build numbers above remain tied to the validated7494ce4e base. No new measured result on5d3ecc78 is claimed. The combined-tree fixture run is prepared but deferred while another job holds the shared lock and for the17:30 Halifax autobuild priority window; standalone PR fixtures passed. Review the separate recommended, maximum-resource and actual-evaluation dimensions first. This addresses the scaled initialization penalty only; the original report also includes Native AA and model cost. PsychoV35 work was checked before claiming and is not duplicated here. Current readiness refresh rebases onto main7494ce4e; current branch head 705f1534. Historical game measurements retain their original measured commits. This rebase includes upstream build/profile changes, so no current-head performance claim is made. The relevant production functions are unchanged by this readiness refresh; no production changes were added in this readiness refresh. Each PR merges individually against current main; shared documentation requires preserving each path when the other PRs land. ## Issues See https://git.magicbean.dev/MagicBeanDev/Longshot/issues/17 ## Checklist ### Everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`) of the status line's type. - [x] Why gives the reason plainly and links the issues that fit (the tracker searched). - [x] Measurements has a verdict, or one line saying why there is nothing to measure. - [x] Testing names what was tested, what wasn't, and what must still be tested, where and how. - [x] Rebased on current `main`. (Validated7494ce4e; final clean-merge check against5d3ecc78.) - [x] `python -I -B tests/run_all.py` passes (any failure that also fails on `main` is named). - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### When it applies - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported. - [x] Screenshots of the same spot, captioned like the Measurements columns, for a change that shows on screen. - [x] A file in `docs/tested/` for each new measured run (format in `docs/tested-configurations.md`). - [x] A game-free test added for the fix, failing on `main` and passing here. - [x] A check under `tests/` that reads changed source updated in this PR, not weakened. - [ ] Host code builds on both Windows (llvm-mingw) and Linux, with UTF-8 paths. (Prior Windows NGX build passes; current-main rebuild deferred for shared job/autobuild priority; Linux pending T-J85B.) - [x] Docs updated.
Keep NGX feature creation dimensions separate from the maximum dynamic input-resource size. Record the selected mode's recommendation while preserving range reuse and native AA. Add an SDK-free fixture that executes the real preparation function.

Assisted-by: OpenAI Codex
docs: record paired DLSS sizing measurements
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 3s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
5bcd5d47c6
Assisted-by: OpenAI Codex
Author
Member

Recorded the completed main/PR/PR/main Windows comparison, actual Native HDR Native-AA controls and above-recommended 83% validation; added inspected SDR screenshots. Linux/NVIDIA request T-EJXP is open and awaits a maintainer testing wanted label. The code remains WIP for Linux coverage.

Recorded the completed main/PR/PR/main Windows comparison, actual Native HDR Native-AA controls and above-recommended 83% validation; added inspected SDR screenshots. Linux/NVIDIA request T-EJXP is open and awaits a maintainer testing wanted label. The code remains WIP for Linux coverage.
futondestroyer force-pushed perf/dlss-chain from 5bcd5d47c6
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 3s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
to db2a83b851
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 3s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
2026-11-14 02:50:31 +00:00
Compare
Author
Member

Rebased onto main cf605c85 and resolved the catalogue conflict by migrating all seven original measurement rows verbatim into docs/tested/ files; the frozen table is unchanged. The DLSS source and regression fixture are unchanged. Rebased checks: PR 520 passed/6 failed/34 skipped, clean main 519 passed/the same 6 failed/34 skipped; the new regression passes here and fails at the intended assertion on current main. The Windows renderer rebuilt and linked with the actual NGX SDK (58 s, zero compiler failures). Description/checklist refreshed, including explicit historical-measurement scope. Linux/NVIDIA coverage remains pending T-EJXP: could a maintainer add testing wanted so a tester can claim it? Keeping this PR WIP until that coverage is settled.

Rebased onto main cf605c85 and resolved the catalogue conflict by migrating all seven original measurement rows verbatim into docs/tested/ files; the frozen table is unchanged. The DLSS source and regression fixture are unchanged. Rebased checks: PR 520 passed/6 failed/34 skipped, clean main 519 passed/the same 6 failed/34 skipped; the new regression passes here and fails at the intended assertion on current main. The Windows renderer rebuilt and linked with the actual NGX SDK (58 s, zero compiler failures). Description/checklist refreshed, including explicit historical-measurement scope. Linux/NVIDIA coverage remains pending T-EJXP: could a maintainer add testing wanted so a tester can claim it? Keeping this PR WIP until that coverage is settled.
mooki left a comment

Read head db2a83b8 against main cf605c85: the complete diff, description and both comments, the empty review list, the preparation/allocation/evaluation paths and NVIDIA's reference implementation; the new regression and twelve related drivers pass here, with GCC and Clang for every compiled fixture. The new regression fails against main at the recommended-size assertion with both compilers. No game or renderer build was run.

What's good

  • The old creation call really passes the dynamic maximum rather than the recommended size. The change keeps those values separate without changing the shared input-image sizes, actual evaluation subrect, synchronization or model selection. The recommendation stays paired with its mode when a query fails.
  • The API use agrees with NVIDIA's implementation: https://github.com/NVIDIA-RTX/Streamline/blob/main/source/plugins/sl.dlss/dlssEntry.cpp. Native AA still creates at full size, and the regression checks the above-recommendation reuse and rounded-size cases rather than just looking for source text.
  • The measured source and regression are unchanged across the rebase. The description correctly keeps the performance numbers tied to 514591a3 and b319780c, not the rebuilt head. All seven records are now under docs/tested/, and the frozen table is unchanged.

Must change

No patch-introduced correctness defect found in this head.

Measurement and smaller points

  1. Show the repeat spread beside the gain. The published rows support approximately 16.1% higher average FPS for L and 12.4% for M on the measured Windows setup. L's recorded frame times have about 1.3% spread on main and 2.3% on the PR. M's PR repeats span 17.699 to 18.809 ms, about 6.1% of their median; report that variation and treat the exact M gain as preliminary. Also distinguish the disclosed main / PR / PR / main order from the main / PR / main / PR sequence in CONTRIBUTING.md. Per-run median, p99 and 1% low values, with the underlying traces and quiet-check results, would let readers check the rest of the summary rather than just its average-FPS arithmetic.
  2. Restore the screenshot links. Both image URLs in the description return HTTP 404 through public GET, so I could not inspect the comparison. Attach them to the pull request or use publicly readable, commit-pinned links.
  3. Describe the fixture's boundary precisely. docs/temporal-history.md, lines 20-22, says it checks input allocations. It executes prepare() and checks the returned dimensions; it does not allocate the images or call NGX evaluation. Say “requested input dimensions” there. For the pending Linux run, include the rounded Ultra Performance case as well as 67%, 75%/83% and Native AA: the fixture's 1147x480 input is above its advertised 1146x480 maximum, which a recording stand-in cannot validate against the real runtime.

Not checked

No Linux NGX build or game run, Windows execution of these fixtures, other NVIDIA hardware, frame generation, extended play or visual comparison here. The remaining Linux coverage in T-EJXP is still needed; these game-free checks do not satisfy that request. The source-check jobs are blocked, not passing: https://git.magicbean.dev/MagicBeanDev/Longshot/actions/runs/3860. The full published captures, timing traces and quiet-check records were not available in the pull request.

Read head `db2a83b8` against main `cf605c85`: the complete diff, description and both comments, the empty review list, the preparation/allocation/evaluation paths and NVIDIA's reference implementation; the new regression and twelve related drivers pass here, with GCC and Clang for every compiled fixture. The new regression fails against main at the recommended-size assertion with both compilers. No game or renderer build was run. ### What's good - The old creation call really passes the dynamic maximum rather than the recommended size. The change keeps those values separate without changing the shared input-image sizes, actual evaluation subrect, synchronization or model selection. The recommendation stays paired with its mode when a query fails. - The API use agrees with NVIDIA's implementation: https://github.com/NVIDIA-RTX/Streamline/blob/main/source/plugins/sl.dlss/dlssEntry.cpp. Native AA still creates at full size, and the regression checks the above-recommendation reuse and rounded-size cases rather than just looking for source text. - The measured source and regression are unchanged across the rebase. The description correctly keeps the performance numbers tied to `514591a3` and `b319780c`, not the rebuilt head. All seven records are now under `docs/tested/`, and the frozen table is unchanged. ### Must change No patch-introduced correctness defect found in this head. ### Measurement and smaller points 1. **Show the repeat spread beside the gain.** The published rows support approximately 16.1% higher average FPS for L and 12.4% for M on the measured Windows setup. L's recorded frame times have about 1.3% spread on main and 2.3% on the PR. M's PR repeats span 17.699 to 18.809 ms, about 6.1% of their median; report that variation and treat the exact M gain as preliminary. Also distinguish the disclosed main / PR / PR / main order from the main / PR / main / PR sequence in `CONTRIBUTING.md`. Per-run median, p99 and 1% low values, with the underlying traces and quiet-check results, would let readers check the rest of the summary rather than just its average-FPS arithmetic. 2. **Restore the screenshot links.** Both image URLs in the description return HTTP 404 through public GET, so I could not inspect the comparison. Attach them to the pull request or use publicly readable, commit-pinned links. 3. **Describe the fixture's boundary precisely.** `docs/temporal-history.md`, lines 20-22, says it checks input allocations. It executes `prepare()` and checks the returned dimensions; it does not allocate the images or call NGX evaluation. Say “requested input dimensions” there. For the pending Linux run, include the rounded Ultra Performance case as well as 67%, 75%/83% and Native AA: the fixture's 1147x480 input is above its advertised 1146x480 maximum, which a recording stand-in cannot validate against the real runtime. ### Not checked No Linux NGX build or game run, Windows execution of these fixtures, other NVIDIA hardware, frame generation, extended play or visual comparison here. The remaining Linux coverage in T-EJXP is still needed; these game-free checks do not satisfy that request. The source-check jobs are blocked, not passing: https://git.magicbean.dev/MagicBeanDev/Longshot/actions/runs/3860. The full published captures, timing traces and quiet-check records were not available in the pull request.
futondestroyer force-pushed perf/dlss-chain from db2a83b851
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 3s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to 65c27efb08
Some checks failed
Website / Website on Cloudflare (pull_request_target) Has been skipped
beanstalk/approval awaiting maintainer approval
PR description / Description follows the template (pull_request_target) Successful in 15s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
2026-11-14 14:57:21 +00:00
Compare
Author
Member

Addressed the actionable items in the review, rebased onto main 5e072fc8, and pushed head 65c27efb.

  • Added each run's median, p99, 1% low, frame count, duration and quiet-machine summaries to the description. Recomputing from the local traces reproduces the audited numbers. Repeat spread is now beside the gains; the exact M gain is labelled preliminary (6.08% PR repeat spread). The original ABBA order is explicitly disclosed as a deviation from ABAB. Raw game-derived traces stay local under CONTRIBUTING.md.
  • Restored both original measured-build screenshots as PR attachments. Anonymous downloads return HTTP 200 and match the local images byte for byte.
  • Corrected the fixture documentation to say requested input dimensions; it does not allocate GPU images or execute NGX evaluation. Linux test request T-J85B replaces unclaimed T-EJXP and explicitly includes rounded Ultra Performance 1147x480 input against advertised max 1146x480, plus 67%, 75%/83% and Native AA in SDR/supported Native HDR.

Validation: full game-free suites give 522 passed, 6 failed, 34 skipped on the PR versus 521 passed, the same 6 failed, 34 skipped on fresh main; no PR-only failures. The DLSS regression passes here and fails at the intended recommended-size assertion on main. The actual Windows NGX renderer compiles and links successfully. The description names all shared failures and preserves the exact historical measured commits; no new performance runs are claimed.

Remaining: real Linux NGX build/runtime evidence and maintainer authorization for the test request (testing wanted). The pushed head's CI source checks and third-party checks are blocked by required conditions, not passing. The Linux checklist remains unticked and the PR remains WIP until that evidence is available. Could a maintainer enable the test request and unblock the fork workflows?

Addressed the actionable items in the review, rebased onto main `5e072fc8`, and pushed head `65c27efb`. - Added each run's median, p99, 1% low, frame count, duration and quiet-machine summaries to the description. Recomputing from the local traces reproduces the audited numbers. Repeat spread is now beside the gains; the exact M gain is labelled preliminary (6.08% PR repeat spread). The original ABBA order is explicitly disclosed as a deviation from ABAB. Raw game-derived traces stay local under CONTRIBUTING.md. - Restored both original measured-build screenshots as PR attachments. Anonymous downloads return HTTP 200 and match the local images byte for byte. - Corrected the fixture documentation to say requested input dimensions; it does not allocate GPU images or execute NGX evaluation. Linux test request **T-J85B** replaces unclaimed T-EJXP and explicitly includes rounded Ultra Performance 1147x480 input against advertised max 1146x480, plus 67%, 75%/83% and Native AA in SDR/supported Native HDR. Validation: full game-free suites give **522 passed, 6 failed, 34 skipped** on the PR versus **521 passed, the same 6 failed, 34 skipped** on fresh main; no PR-only failures. The DLSS regression passes here and fails at the intended recommended-size assertion on main. The actual Windows NGX renderer compiles and links successfully. The description names all shared failures and preserves the exact historical measured commits; no new performance runs are claimed. Remaining: real Linux NGX build/runtime evidence and maintainer authorization for the test request (`testing wanted`). The pushed head's [CI source checks](https://git.magicbean.dev/MagicBeanDev/Longshot/actions/runs/5047) and [third-party checks](https://git.magicbean.dev/MagicBeanDev/Longshot/actions/runs/5048) are blocked by required conditions, not passing. The Linux checklist remains unticked and the PR remains WIP until that evidence is available. Could a maintainer enable the test request and unblock the fork workflows?
futondestroyer changed title from WIP: perf(dlss): create features at the recommended render size to perf(dlss): create features at the recommended render size 2026-11-14 18:08:35 +00:00
futondestroyer changed title from perf(dlss): create features at the recommended render size to WIP: perf(dlss): create features at the recommended render size 2026-11-14 21:15:10 +00:00
Author
Member

Readiness refresh: rebased onto main7494ce4e. The PR production files are byte-identical to the previously submitted head; historical game measurements remain tied to their measured commits. Fresh local main/branch suites and Windows builds are in progress under the shared-machine lock; no new gameplay or performance run is claimed.

@Beanstalk Linux NVIDIA renderer build with a locally installed NGX SDK/runtime, then real NGX checks of K/L/M at 67%, 75/83%, Native AA and rounded Ultra Performance 1147x480 input versus advertised maximum1146x480, SDR and supported Native HDR. Expect sustained evaluations and no crop/flicker/device loss or K/Native-AA regression; use the documented same-scene comparisons, preserve game files locally. Build and run through the development guide; publish compiler/OS/hardware, exact tested commit, results and safe log excerpts on this PR. The existing manual test request remains open; no duplicate manual request is being created.

The Linux checklist is still unticked, so this PR has been returned to WIP consistently with that requirement. No PR has been merged.

Readiness refresh: rebased onto main7494ce4e. The PR production files are byte-identical to the previously submitted head; historical game measurements remain tied to their measured commits. Fresh local main/branch suites and Windows builds are in progress under the shared-machine lock; no new gameplay or performance run is claimed. @Beanstalk Linux NVIDIA renderer build with a locally installed NGX SDK/runtime, then real NGX checks of K/L/M at 67%, 75/83%, Native AA and rounded Ultra Performance 1147x480 input versus advertised maximum1146x480, SDR and supported Native HDR. Expect sustained evaluations and no crop/flicker/device loss or K/Native-AA regression; use the documented same-scene comparisons, preserve game files locally. Build and run through the development guide; publish compiler/OS/hardware, exact tested commit, results and safe log excerpts on this PR. The existing manual test request remains open; no duplicate manual request is being created. The Linux checklist is still unticked, so this PR has been returned to WIP consistently with that requirement. No PR has been merged.
Member

@futondestroyer only members of BigBeans can start the farm.

One of them can approve this request by reacting 👍 to it. This request was for 65c27ef, and the PR has changed since (705f153), so a 👍 no longer approves it. Comment @Beanstalk again to ask for the new commit.

@futondestroyer only members of `BigBeans` can start the farm. ~~One of them can approve this request by reacting 👍 to it.~~ This request was for `65c27ef`, and the PR has changed since (`705f153`), so a 👍 no longer approves it. Comment `@Beanstalk` again to ask for the new commit.
futondestroyer force-pushed perf/dlss-chain from 65c27efb08
Some checks failed
Website / Website on Cloudflare (pull_request_target) Has been skipped
beanstalk/approval awaiting maintainer approval
PR description / Description follows the template (pull_request_target) Successful in 15s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to 705f153432
Some checks failed
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
beanstalk/approval waiting for a BigBean's 👍 on the request
PR description / Description follows the template (pull_request_target) Failing after 3s
2026-11-14 21:15:36 +00:00
Compare
Author
Member

Readiness audit completed: rebased onto7494ce4e; final clean-merge check also passes against newer main5d3ecc78. Refreshed the description to the current template, preserving the actual historical game-measurement commits and screenshots. Fresh full suites have no PR-only failures against the same seven failures reproduced on clean7494ce4e. All screenshot links return valid PNG data through anonymous range GET. The prior Windows NGX build remains valid for byte-identical production source; the extra current-main rebuild is deferred while another job owns the shared lock and for the scheduled autobuild. The combined-tree fixture check is similarly deferred; no combined-runtime claim is made. Linux (and the listed AMD HDR checks where applicable) remain pending. Test Farm approval and fork CI jobs explicitly await maintainer authorization, so this remains WIP. Please approve the farm/fork jobs and enable the existing manual requests as appropriate. No PR was merged.

Readiness audit completed: rebased onto7494ce4e; final clean-merge check also passes against newer main5d3ecc78. Refreshed the description to the current template, preserving the actual historical game-measurement commits and screenshots. Fresh full suites have no PR-only failures against the same seven failures reproduced on clean7494ce4e. All screenshot links return valid PNG data through anonymous range GET. The prior Windows NGX build remains valid for byte-identical production source; the extra current-main rebuild is deferred while another job owns the shared lock and for the scheduled autobuild. The combined-tree fixture check is similarly deferred; no combined-runtime claim is made. Linux (and the listed AMD HDR checks where applicable) remain pending. Test Farm approval and fork CI jobs explicitly await maintainer authorization, so this remains WIP. Please approve the farm/fork jobs and enable the existing manual requests as appropriate. No PR was merged.
Author
Member

@Beanstalk Please validate current head 705f153432: Linux NVIDIA renderer build with a locally installed NGX SDK/runtime, then actual NGX checks for K/L/M at 67%, 75%/83%, Native AA and rounded Ultra Performance 1147x480 input versus advertised maximum 1146x480, SDR and supported Native HDR. Follow the development guide and preserve game files locally. Expect sustained evaluations without crop, flicker, device loss or K/Native-AA regression; report exact commits, OS/compiler/GPU/driver and the same-scene results. This replaces the earlier request that the farm attached to the pre-rebase head. Fresh Windows suites have no PR-only failures; the extra current-main Windows rebuild remains deferred for shared-job/autobuild priority.

@Beanstalk Please validate current head 705f153432bdc4168a870e49f8611e319bb15cc1: Linux NVIDIA renderer build with a locally installed NGX SDK/runtime, then actual NGX checks for K/L/M at 67%, 75%/83%, Native AA and rounded Ultra Performance 1147x480 input versus advertised maximum 1146x480, SDR and supported Native HDR. Follow the development guide and preserve game files locally. Expect sustained evaluations without crop, flicker, device loss or K/Native-AA regression; report exact commits, OS/compiler/GPU/driver and the same-scene results. This replaces the earlier request that the farm attached to the pre-rebase head. Fresh Windows suites have no PR-only failures; the extra current-main Windows rebuild remains deferred for shared-job/autobuild priority.
Member

@futondestroyer only members of BigBeans can start the farm. One of them can approve this request by reacting 👍 to it.

@futondestroyer only members of `BigBeans` can start the farm. One of them can approve this request by reacting 👍 to it.
futondestroyer changed title from WIP: perf(dlss): create features at the recommended render size to perf(dlss): create features at the recommended render size 2026-11-14 22:06:09 +00:00
Some checks failed
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
beanstalk/approval waiting for a BigBean's 👍 on the request
PR description / Description follows the template (pull_request_target) Failing after 3s
This pull request has changes conflicting with the target branch.
  • docs/temporal-history.md
Some workflows are waiting to be reviewed.
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u 'perf/dlss-chain:futondestroyer-perf/dlss-chain'
git switch 'futondestroyer-perf/dlss-chain'
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
3 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot!311
No description provided.