Skip to content

fix: main's source checks pass again (15 red since #2574, #2617 and others), and the three bugs behind them - #2656

Closed
notquiteog wants to merge 2 commits into
NotRexed:mainfrom
notquiteog:fix/main-source-checks
Closed

notquiteog wants to merge 2 commits into
NotRexed:mainfrom
notquiteog:fix/main-source-checks

Conversation

@notquiteog

@notquiteog notquiteog commented Nov 12, 2026 •

Copy link
Copy Markdown
Contributor

main's Game-free source regressions check is red: 15 source checks fail at de86601, from PRs that were merged without a rebase onto each other. This makes them pass again, and fixes the three real bugs that were behind four of them.

What was wrong

Real bugs (the checks were right):

  • RX_VK_CAPTURE_KEEP_OLD=0 and RX_VK_CAP_BLOCKS=0 turned the switch on (vk_memory.cpp, perf(vk): capture buffers in size classes, kept up to 256 MB and made ahead on a worker #2437). Both are on/off switches read as set-means-on. They read through env_on now, as line 1054 of the same file already did. (test_env_on)
  • Mouse camera: the view snapped back after first-person aim or Z-targeting (host/mouse_native.c, fix: native camera positioning bugs #2617). The mouse's kept angles were reset when the game takes the stick, but not when the camera leaves states 3 and 4, so on return the old angles were written over where the game had left the camera. (test_mouse_native: yaw 4 where -1 is expected)
  • DLSS could be widened into Ultra Performance below a third (dlss_checks.h, fix(vk): resolve DLSS permanent failure latching and improve dynamic resolution handling #2574). (w + 2) * 3 >= ow fixed 853x480 at 2560x1440 (853 × 3 = 2559) but also let a size one or two pixels under the third through, which mode_for then widens a range for. It is w * 3 + 2 >= ow now: a third rounded down, which is NGX's own Ultra Performance size, and no less. (test_dlss_checks: "below a third")

Stale translations: three English texts changed in vk_menu.cpp after the 13-language table was made (#1930's ocarina sentence in the gamepad hint, #2362's RADV note in the Mesh shaders hint, #2435's keyboard face in the Button prompts hint). Their 39 entries in menu_i18n.h are keyed and translated again. They are machine-made like the rest of the file and not reviewed by speakers. (test_menu_i18n)

Fixtures that cut source by its text and missed what the source gained:

Check What it lacked
test_wayland_libdecor_hint, test_display_startup_failure window_title() (#2116)
test_texel_buffer_ownership dead_import_bytes (#1906)
test_audio_biquad, test_audio_aux env_on in reverb_frame
test_mods_size_table a stub for hos_xinput_pads (#2435)
test_readback_part its marker matched #2458's forward declaration of wait_recorded
test_hdr_encode, test_framegen_preset, test_rumble_menu kEngine's retry and temporal_reset_failure (#2574)
test_linux_docker_packages its parser took the workflow's --no-update for a PPA

How it was tested

  • python -I -B tests/run_all.py on this branch (Linux, the emsdk's clang, glslang 16.6.0): 468 passed, 0 failed, 22 skipped (Windows-only, or needing dotnet / PIL / a Vulkan device). On de86601 without it: 15 failed.
  • The Vulkan back end builds from the branch (Linux, clang, with the NGX SDK).
  • In the game, RTX 5060 Ti 16 GB, driver 615.71.09, Linux (COSMIC, Wayland), Kokiri Forest, 2048x1152 output: DLSS at Ultra Performance (683x384), Performance, Balanced, Quality, 75%, 83%, 92% and Auto, 54 to 60 fps, each feature made once (feature 2 made ... 683x384 (683x384 to 683x384) -> 2048x1152, mode 3), no device lost.

Not tested

  • The mouse camera fix and the two capture switches are proven by their source checks, not by a run with a real mouse or with the switches set.
  • Windows (the fixtures are OS-neutral; CI will say).
  • The three re-translated menu texts were not read by a speaker of any of the 13 languages.

🤖 Generated with Claude Code

notquiteog and others added 2 commits November 11, 2026 22:19
…s behind them

Upstream's main fails 15 of its own source checks at c356bef (PRs merged without a
rebase). These are the eleven outside the upscalers:

- vk_memory.cpp: RX_VK_CAPTURE_KEEP_OLD and RX_VK_CAP_BLOCKS are on/off switches and
  were read as set-means-on, so =0 turned them on (NotRexed#2437). env_on, as the rest.
- mouse_native.c: the mouse's kept angles are let go when the camera leaves states 3
  and 4 (first-person aim, Z-targeting): they were written back on return, and the
  view snapped to where it was before (NotRexed#2617; test_mouse_native's yaw).
- menu_i18n.h: three English texts changed in vk_menu.cpp (NotRexed#1930, NotRexed#2362, NotRexed#2435), so
  their 13 translations are keyed and translated again (machine-made, as the file's
  others).
- Fixtures that cut source by its text and missed what the source gained:
  window_title (NotRexed#2116), dead_import_bytes (NotRexed#1906), env_on in reverb_frame,
  hos_xinput_pads (NotRexed#2435), wait_recorded's forward declaration (NotRexed#2458); and the
  Dockerfile check's parser, which took --no-update for a PPA.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
…and what NotRexed#2574 added in the fixtures

- dlss_checks.h: scene_size_fits takes a third rounded down (853x480 for 2560x1440,
  NotRexed#2574's case) and no less: (w + 2) * 3 let mode_for widen Ultra Performance below a
  third, which test_dlss_checks turns away.
- test_hdr_encode, test_framegen_preset, test_rumble_menu: kEngine's retry and
  temporal_reset_failure, which NotRexed#2574 added, in their fixtures.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>

@Joey-Magnus Joey-Magnus left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Current main already has every part of this, through other PRs. On main at 51da046, tests/run_all.py has only test_lift_cache failing here (a local issue), and every check this PR fixes passes. The PR now conflicts in nine test files.

  • The capture switches read through env_on: #2651 (1101a8e), gpu/vk/vk_memory.cpp:937/960/995.
  • The mouse camera's kept angles after leaving states 3 and 4: #2653 (0ec31ff).
  • The stale translations: #2654 (6946562).
  • The source fixtures (window_title, dead_import_bytes, kEngine's retry, the readback marker, the mods stubs): #2648 (9776c36). The docker PPA parser: #2652 (f82caa6).

The one piece main did differently is scene_size_fits in gpu/vk/dlss_checks.h. Main kept (w + 2) * 3 >= ow, and #2648 made tests/test_dlss_checks.cpp:29-33 require that one and two pixels under a third fit. So w * 3 + 2 would now fail main's own check. If you think sizes two pixels under should be refused (because mode_for widens them), that's worth its own small PR arguing against those test cases. Otherwise I'd suggest closing this one as superseded.

@notquiteog

Copy link
Copy Markdown
Contributor Author

Closing: main has all of this now through #2648, #2651, #2652, #2653, #2654 and #2661, as the review says. Thanks for checking it against main. The one thing that differs is scene_size_fits: main keeps the two-pixel tolerance with tests that say so, which is a deliberate choice and fine by me.

@notquiteog notquiteog closed this Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants