mirror of
https://github.com/tangerineturtle1/NX2navi.git
synced 2026-11-15 19:19:58 -04:00
Name the Testing rows of the performance settings in plain words and make two of them switches.
The rows are now CPU helper threads, Helpers work ahead, Helpers take small jobs and Start next frame early, each with a short description of what it does and what it gained. Helpers work ahead and Helpers take small jobs are switches: on writes replay_pipe = 4 and replay_small = 16, the values measured best, and another value set in nx2navi.ini shows as on and stays. Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This commit is contained in:
@@ -23,7 +23,7 @@
|
||||
|
||||
- **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 *Replay workers (experimental)*: 0 to 8, after a restart.
|
||||
- **The other experimental performance settings have rows there too**: *Worker groups in flight* (`replay_pipe`),
|
||||
*Small groups to one worker* (`replay_small`) and *Early frame end* (`tail_early`). A row whose setting does nothing
|
||||
without another one is greyed out and says which it needs.
|
||||
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.
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
# EXPERIMENTAL. Record the large groups of draws of a submission on this many replay worker threads beside the
|
||||
# submitting one, 0 to 16. Default: 0, the replay records everything on one thread. 3 gave 51.7 instead of 43.6 fps
|
||||
# standing in Hyrule Field on an RX 7900 XT, and more than 3 gave nothing more; some players' games ended with a lost
|
||||
# graphics device with it on, so it is off unless you turn it on (also in the menu: Game, Testing, Replay workers).
|
||||
# graphics device with it on, so it is off unless you turn it on (also in the menu: Game, Testing, CPU helper threads).
|
||||
# With 1 a worker records each long run of draws while the submitting thread waits for it: no faster, it checks that
|
||||
# the pictures stay the same.
|
||||
# replay_workers = 0
|
||||
@@ -79,13 +79,14 @@
|
||||
# results it reads are there. A frame whose end hands the game anything else runs as before. Default: 0. Standing in
|
||||
# Hyrule Field on an RX 7900 XT with FSR 4: 50.7 instead of 42.5 fps, and 63.5 instead of 49.4 with replay_workers = 3.
|
||||
# Does nothing without one of those upscalers, nor with the lazy write-back (the default on NVIDIA and Intel cards).
|
||||
# Also in the menu: Game, Testing, Early frame end.
|
||||
# Also in the menu: Game, Testing, Start next frame early.
|
||||
# tail_early = 0
|
||||
# EXPERIMENTAL, with replay_workers. replay_pipe = N (1 to 4, default 0): the submitting thread goes on past up to N
|
||||
# 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, Worker groups in flight and Small groups to one worker.
|
||||
# menu: Game, Testing, as switches: Helpers work ahead (on is replay_pipe = 4) and Helpers take small jobs (on is
|
||||
# replay_small = 16).
|
||||
# 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
|
||||
|
||||
@@ -1413,13 +1413,15 @@ 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.
|
||||
// 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.
|
||||
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_slider("NX2NAVI_REPLAY_PIPE", UI_MENU_REPLAY_PIPE, 0, 4, UI_MENU_REPLAY_PIPE_DESC, 1, "%.0f");
|
||||
opt_toggle_value("NX2NAVI_REPLAY_PIPE", UI_MENU_REPLAY_PIPE, UI_MENU_REPLAY_PIPE_DESC, "4", "0");
|
||||
if (!pipe) opt_disable_next(workers ? UI_MENU_NEEDS_PIPE : UI_MENU_NEEDS_WORKERS);
|
||||
opt_slider("NX2NAVI_REPLAY_SMALL", UI_MENU_REPLAY_SMALL, 0, 64, UI_MENU_REPLAY_SMALL_DESC, 4, "%.0f");
|
||||
opt_toggle_value("NX2NAVI_REPLAY_SMALL", UI_MENU_REPLAY_SMALL, UI_MENU_REPLAY_SMALL_DESC, "16", "0");
|
||||
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()) {
|
||||
|
||||
@@ -470,27 +470,23 @@ static const char *const text_en[UI_TEXT_COUNT] = {
|
||||
"where the card has none, keeps video memory within what the driver reports free, waits less for the GPU and "
|
||||
"prepares frames on a thread of their own. Measured on a Radeon RX 580 only: it can show a dark or flickering "
|
||||
"frame now and then, so leave it off on a newer card.",
|
||||
[UI_MENU_REPLAY_WORKERS] = "Replay workers (experimental)",
|
||||
[UI_MENU_REPLAY_WORKERS_DESC] = "CPU threads that help translate each frame's draws for the GPU, beside the game's own "
|
||||
"thread. 3 gave about 20% more frames a second in Hyrule Field on an 8-core CPU; more "
|
||||
"than 3 gave little more. Some players' games crashed with them on: 0 (off) is the "
|
||||
"safe choice.",
|
||||
[UI_MENU_REPLAY_PIPE] = "Worker groups in flight (experimental)",
|
||||
[UI_MENU_REPLAY_PIPE_DESC] = "How many groups of draws the replay workers may have in hand at once while the game's "
|
||||
"render thread goes on to the draws after them. At 0 the thread waits for each group "
|
||||
"and helps with it. 2 to 4 gave 1 to 2% more frames a second with 5 workers and the "
|
||||
"early frame end on, and nothing without it.",
|
||||
[UI_MENU_REPLAY_SMALL] = "Small groups to one worker (experimental)",
|
||||
[UI_MENU_REPLAY_SMALL_DESC] = "A group of at least this many draws that is too small to split between workers goes "
|
||||
"whole to one worker, and the game's render thread goes on. 0 is off: the thread "
|
||||
"records such groups itself. 16 gave about 2% more frames a second in Kokiri Forest.",
|
||||
[UI_MENU_TAIL_EARLY] = "Early frame end (experimental)",
|
||||
[UI_MENU_TAIL_EARLY_DESC] = "Lets the game start its next frame while the GPU still runs the upscaler and the rest "
|
||||
"of the frame's end. With FSR 4 on a Radeon RX 7900 XT it gave 19 to 29% more frames a "
|
||||
"second in Hyrule Field, measured on that card only and not in long sessions. It needs "
|
||||
"TAA, or DLSS, FSR 3.1 or FSR 4 under Upscaling, and for now an AMD card: without "
|
||||
"them the game runs as before.",
|
||||
[UI_MENU_NEEDS_WORKERS] = "needs replay workers", [UI_MENU_NEEDS_PIPE] = "needs worker groups in flight",
|
||||
[UI_MENU_REPLAY_WORKERS] = "CPU helper threads (experimental)",
|
||||
[UI_MENU_REPLAY_WORKERS_DESC] = "Uses more of your CPU's cores to prepare each frame for the graphics card. 0 turns it "
|
||||
"off. 3 gave about 20% more frames a second on an 8-core CPU, and 5 a little more "
|
||||
"with the settings below. Some players' games crashed with this on: set it back to "
|
||||
"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.",
|
||||
[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.",
|
||||
[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 "
|
||||
"FSR 4 on a Radeon RX 7900 XT, the only card it was measured on. It needs TAA, DLSS, "
|
||||
"FSR 3.1 or FSR 4, and for now an AMD graphics card. Without them it changes nothing.",
|
||||
[UI_MENU_NEEDS_WORKERS] = "needs CPU helper threads", [UI_MENU_NEEDS_PIPE] = "needs Helpers work ahead",
|
||||
[UI_MENU_DISCORD_RPC] = "Discord Rich Presence",
|
||||
[UI_MENU_DISCORD_RPC_DESC] = "Shows \"Playing NX2navi\" with the play time in your Discord status while the "
|
||||
"game runs. discord_app_id and discord_image in nx2navi.ini choose the application.",
|
||||
|
||||
@@ -1836,7 +1836,7 @@ static void op_one(VkExec *ex, const op_hdr *h) {
|
||||
}
|
||||
|
||||
// ---- replay workers (NX2NAVI_REPLAY_WORKERS, default 0: the replay records every op on the submitting thread; the
|
||||
// Game tab's Replay workers row sets it)
|
||||
// Game tab's CPU helper threads row sets it)
|
||||
// 3 workers: on an RX 7900 XT with a Ryzen 7 5800X3D, Hyrule Field standing went from 41.2 to 50.4 fps (2026-11-12, one
|
||||
// batch), with the same pictures there and in Kokiri Forest, Kakariko, Goron City, a graveyard house and Gerudo
|
||||
// Valley; 5 or 7 workers measured the same as 3. Default 0 again after players' games crashed with 3 on by default
|
||||
|
||||
Reference in New Issue
Block a user