Remove the low-end GPU mode from the settings.

The user asked for it: the mode no longer gains frame rate, and the mesh shader fallback covers the cards it was written for. Its switch in the settings menu's Game tab is gone with the rows under it, and so are their 57 text ids and strings.

low_end_gpu itself does nothing any more. It is still a known key, so an older nx2navi.ini gives no unknown-key warning, and while it is on the log says once that the mode was removed in 0.10.2. The preset that gave nine keys other defaults is gone, and so is the rule that read the mode's keys only while it was on: each of them (mesh_emulation, tex_clobber, foliage, vram_heap_limit, vram_reserve_mb, upload_batch_mb, mirror_stage, mirror_hot, submit_finish_gpu and the others) is an ordinary setting with the default of its row or of its reader, so a line a player wrote by hand keeps counting and a file with only the switch runs the game as it runs for everyone else. guest_opt in nx2navi.ini counts for the next rebuild without the switch too (tools/make_game.py).

The recorder thread read the switch itself: on an AMD card without mesh shaders the mode turned it on. It is off on every AMD card now unless vk_recorder = 1 is set.

nx2navi.ini.example lists the former mode's settings as single settings, the 0.10.2 notes have a Removed entry and name the foliage fix of the commit before this one, and the comments that said what the mode sets say so in the past tense. tests/cfg_parse_check has the new reading of the switch and of the keys without it; the test matrix is at 90 ok with the same two not ok as before (installer_test, worktree_test), and a clean build compiles 169 runtime files and links. Not run in the game.

Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This commit is contained in:
chrg6
2026-11-14 06:13:18 -05:00
parent 1610ab6e08
commit 7a8bbad47e
21 changed files with 138 additions and 364 deletions

View File

@@ -919,10 +919,11 @@ A change to how nx2navi.ini and the environment are read (`runtime/cfg.c` `cfg_l
`cfg_bool`, `check_value`) passes `python tests\cfg_parse_check.py`, which builds `cfg.c` with stand-ins for what it
links with and loads scratch files: a comment after a value of a setting with a set of values is cut and logged once
with its line, free text, a value in double quotes and the environment keep theirs; switches written as words read as
0 or 1 through every reader, the low-end mode's switch (`lowend_of`, read apart from `cfg_get`) included; values
0 or 1 through every reader; `low_end_gpu`, the switch of the low-end GPU mode that 0.10.2 removed, turns nothing on
and is named once in the log (`lowend_set`), and the mode's keys are read by themselves; values
outside their sets are logged with their line, at most 16 lines and a count; a full settings table logs one line at
load and one for the menu. The launcher's reader (`launcher/gameini.py`) has the same comment lines in
`tests\launcher_test.py` `PlayerIniTest`, and `tools/make_game.py`'s own reads of `shader_carry` and `low_end_gpu`
`tests\launcher_test.py` `PlayerIniTest`, and `tools/make_game.py`'s own reads of `shader_carry` and `guest_opt`
(`shader_carry`, `guest_opt_ini`) theirs in `MakeGameTest`. No game files.
The lifter (`recomp/`) and the CPU headers (`runtime/cpu.h`, `runtime/simd.h`) are checked against Unicorn. Every lifter

View File

@@ -24,6 +24,14 @@ cards).
with *Full* and 42.8 with *Reduced* on the same tour, and a handheld that got *Full* closed when a save was loaded.
A texture detail you chose yourself stays as you set it.
## Removed
- **The low-end GPU mode** is gone from the settings menu's Game tab, with the rows under it: it no longer gained
frame rate, and the mesh shader fallback now covers the cards it was written for. `low_end_gpu = 1` in an existing
nx2navi.ini does nothing, and the log says so once; the game then runs as it does for everyone else. The settings
the mode turned on can still be set one by one in nx2navi.ini (`nx2navi.ini.example` lists them); a line for one of
them that is already in your file keeps counting.
## Fixed
- **See-through ground** (issues #569 and #824). 0.10.0 and 0.10.1 shipped an older shader translator, whose shaders
@@ -40,10 +48,13 @@ cards).
code 70, until nx2navi.ini was edited by hand): with DLSS Frame Generation on and the *Graphics card* setting on
the card that is not NVIDIA's, the device could not be made. The game now starts on the NVIDIA card, and where
there is none, or frame generation cannot be set up, it starts without frame generation and the log says why.
- **A crash on GeForce GTX 10 cards with the low-end GPU mode on** (the game closing inside NVIDIA's driver at the
first grass or foliage of an area, reported on a GTX 1050 Ti, a GTX 1070 and a Titan X): the mode turned on an
- **A crash on GeForce GTX 10 cards that had the low-end GPU mode on** (the game closing inside NVIDIA's driver at
the first grass or foliage of an area, reported on a GTX 1050 Ti, a GTX 1070 and a Titan X): the mode turned on an
older way of drawing the game's mesh shaders that this driver does not survive. NVIDIA cards without mesh shaders
now always take the mesh shader fallback, which ran on the GTX 1050 Ti with the rest of the mode still on.
now always take the mesh shader fallback, and the mode itself is gone (see *Removed*).
- **Flashing or white foliage on cards that take the mesh shader fallback** (reported on a Radeon RX 580): the numbers
each such draw goes by were written in an order the graphics card was free to change, and about half the draws got
the wrong ones. Each is now written exactly once (by Tobim6).
- **Crashes and hangs found in a review of the whole runtime**; none was seen in our own play, and each fix has a check
of its own:
- a crash when the game read memory the lazy write-back was just handing to the GPU (NVIDIA and Intel cards);