From d4778b1bb0b8ef929a9b23c387a22f5cef5b4101 Mon Sep 17 00:00:00 2001 From: epicmeme546 <178368684+epicmeme546@users.noreply.github.com> Date: Fri, 13 Nov 2026 00:30:04 -0500 Subject: [PATCH] Make the Helpers work ahead and Helpers take small jobs rows number sliders again. The rows keep their plain names. Their descriptions now say what the number counts and that 0 turns the setting off: 0 to 4 for replay_pipe, 0 to 64 in steps of 4 for replay_small. Co-Authored-By: Claude Fable 5.2 --- docs/releases/v0.9.3.md | 6 +++--- nx2navi.ini.example | 3 +-- runtime/ui/menu.cpp | 8 +++----- runtime/ui_text.c | 7 +++++-- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/releases/v0.9.3.md b/docs/releases/v0.9.3.md index 88496e36..bbb568f3 100644 --- a/docs/releases/v0.9.3.md +++ b/docs/releases/v0.9.3.md @@ -24,6 +24,6 @@ - **The draw replay on several CPU cores is off by default again** (`replay_workers = 0`). With three workers on by default in 0.9.1 and 0.9.2 some players' games ended with a lost graphics device; the cause is not found yet. The settings menu has it under Game, Testing, as *CPU helper threads (experimental)*: 0 to 8, after a restart. -- **The other experimental performance settings have rows there too**, each a switch: *Helpers work ahead* (on is - `replay_pipe = 4`), *Helpers take small jobs* (on is `replay_small = 16`) and *Start next frame early* - (`tail_early`). A row whose setting does nothing without another one is greyed out and says which it needs. +- **The other experimental performance settings have rows there too**: *Helpers work ahead* (`replay_pipe`, 0 to 4), + *Helpers take small jobs* (`replay_small`, 0 to 64) and *Start next frame early* (`tail_early`). A row whose setting + does nothing without another one is greyed out and says which it needs. diff --git a/nx2navi.ini.example b/nx2navi.ini.example index db63418c..547cf14d 100644 --- a/nx2navi.ini.example +++ b/nx2navi.ini.example @@ -85,8 +85,7 @@ # groups its workers still record. replay_small = N (default 0, needs replay_pipe): a group of N draws or more that is # too small to share out goes whole to one worker. Kokiri Forest standing on an RX 7900 XT with FSR 4, tail_early = 1, # replay_workers = 5, replay_pipe = 4 and replay_small = 16: 63 instead of 45 fps with all of them off. Also in the -# menu: Game, Testing, as switches: Helpers work ahead (on is replay_pipe = 4) and Helpers take small jobs (on is -# replay_small = 16). +# menu: Game, Testing, Helpers work ahead (replay_pipe) and Helpers take small jobs (replay_small). # replay_pipe = 0 # replay_small = 0 # EXPERIMENTAL, THE GAME CRASHES WITH 1. 1 lifts the virtual core gate: guest threads run without the console's limit diff --git a/runtime/ui/menu.cpp b/runtime/ui/menu.cpp index cb092290..cfeddcd8 100644 --- a/runtime/ui/menu.cpp +++ b/runtime/ui/menu.cpp @@ -1413,15 +1413,13 @@ static void tab_game(float scale) { // Testing: experimental rows, then the debug menu where the game version has it opt_group_text("Testing"); // vk_exec.c rw_init and tail_enabled read these at start: each row notes the restart and the bar's Restart does - // it. A row whose setting does nothing without another one (rw_init) is greyed out until that one is set. The two - // rows under the workers are switches: on writes the value measured best (4 groups at once, groups from 16 draws), - // and any other value set in nx2navi.ini shows as on and stays. + // it. A row whose setting does nothing without another one (rw_init) is greyed out until that one is set. opt_slider("NX2NAVI_REPLAY_WORKERS", UI_MENU_REPLAY_WORKERS, 0, 8, UI_MENU_REPLAY_WORKERS_DESC, 1, "%.0f"); const bool workers = cfg_int("NX2NAVI_REPLAY_WORKERS") > 0, pipe = workers && cfg_int("NX2NAVI_REPLAY_PIPE") > 0; if (!workers) opt_disable_next(UI_MENU_NEEDS_WORKERS); - opt_toggle_value("NX2NAVI_REPLAY_PIPE", UI_MENU_REPLAY_PIPE, UI_MENU_REPLAY_PIPE_DESC, "4", "0"); + opt_slider("NX2NAVI_REPLAY_PIPE", UI_MENU_REPLAY_PIPE, 0, 4, UI_MENU_REPLAY_PIPE_DESC, 1, "%.0f"); if (!pipe) opt_disable_next(workers ? UI_MENU_NEEDS_PIPE : UI_MENU_NEEDS_WORKERS); - opt_toggle_value("NX2NAVI_REPLAY_SMALL", UI_MENU_REPLAY_SMALL, UI_MENU_REPLAY_SMALL_DESC, "16", "0"); + opt_slider("NX2NAVI_REPLAY_SMALL", UI_MENU_REPLAY_SMALL, 0, 64, UI_MENU_REPLAY_SMALL_DESC, 4, "%.0f"); opt_toggle("NX2NAVI_TAIL_EARLY", UI_MENU_TAIL_EARLY, UI_MENU_TAIL_EARLY_DESC); // The debug menu, a tool for testing with English text of its own: off unless switched on here if (dbg_supported()) { diff --git a/runtime/ui_text.c b/runtime/ui_text.c index 2bd703b6..993d1cde 100644 --- a/runtime/ui_text.c +++ b/runtime/ui_text.c @@ -477,10 +477,13 @@ static const char *const text_en[UI_TEXT_COUNT] = { "0 if yours does.", [UI_MENU_REPLAY_PIPE] = "Helpers work ahead (experimental)", [UI_MENU_REPLAY_PIPE_DESC] = "The game carries on with the rest of the frame while the helper threads are still " - "busy, instead of waiting for them. A small gain: 1 to 2% more frames a second.", + "busy, instead of waiting for them. The number is how many batches of work the " + "helpers may have at once; 0 turns it off. A small gain: 4 gave 1 to 2% more frames a " + "second.", [UI_MENU_REPLAY_SMALL] = "Helpers take small jobs (experimental)", [UI_MENU_REPLAY_SMALL_DESC] = "Gives the helper threads the smaller batches of drawing work too, not only the large " - "ones. A small gain: about 2% more frames a second.", + "ones. The number is the smallest batch a helper takes, counted in draw calls; 0 " + "turns it off. A small gain: 16 gave about 2% more frames a second.", [UI_MENU_TAIL_EARLY] = "Start next frame early (experimental)", [UI_MENU_TAIL_EARLY_DESC] = "The game starts on its next frame while the graphics card is still finishing the " "current one. The biggest gain of these settings: 19 to 29% more frames a second with "