mirror of
https://github.com/tangerineturtle1/NX2navi.git
synced 2026-11-15 19:19:58 -04:00
Make the release 0.10.1: every setting under the Game tab's Testing heading is off by default again, CPU helper threads (replay_workers = 0) and Start next frame early (tail_early = 0) among them.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
24
docs/releases/v0.10.1.md
Normal file
24
docs/releases/v0.10.1.md
Normal file
@@ -0,0 +1,24 @@
|
||||
## Install or update
|
||||
|
||||
- **Already have 0.6.0 or newer:** start the launcher; it offers 0.10.1, updates itself and keeps the game it compiled
|
||||
and the shaders it prepared. From 0.10.0 only a few files are compiled again; from older versions the update
|
||||
translates the game's code once more, for the frame-rate fixes of 0.10.0.
|
||||
- **New install:** download **`NX2navi-Setup-0.10.1.exe`** below, put it next to your `.nup` dump of the game and start
|
||||
it. Windows SmartScreen warns on the first start because the setup is not signed: choose *More info* and *Run
|
||||
anyway*. The launcher checks your game files, builds the game (10 to 25 minutes, once), prepares every shader and
|
||||
starts it.
|
||||
|
||||
**Requirements:** as for 0.10.0: Windows 10 or 11; an x86-64 CPU with SSE4.2; 16 GB of RAM; about 30 GB free for the
|
||||
game and 1.5 GB for the launcher; a GPU with Vulkan 1.3 and `VK_EXT_external_memory_host` (current NVIDIA and AMD
|
||||
cards).
|
||||
|
||||
## Changed
|
||||
|
||||
- **Every setting under the Game tab's Testing heading is off by default again:**
|
||||
- *CPU helper threads* (`replay_workers = 0`; it was Automatic in 0.10.0);
|
||||
- *Start next frame early* (`tail_early = 0`; it was on in 0.10.0);
|
||||
- *Helpers work ahead* and *Helpers take small jobs* (`replay_pipe` and `replay_small`, off as before).
|
||||
|
||||
They are experimental and were measured on few cards. A value you chose yourself, in the settings menu or in
|
||||
nx2navi.ini, stays as you set it: to keep 0.10.0's behaviour, set *CPU helper threads* to Automatic and *Start next
|
||||
frame early* to On. Everything else is as in 0.10.0; see its notes.
|
||||
@@ -86,23 +86,23 @@
|
||||
# the game has sometimes rewritten by then.
|
||||
# replay_async = 0
|
||||
# EXPERIMENTAL. Record the large groups of draws of a submission on this many replay worker threads beside the
|
||||
# submitting one: auto or 0 to 16. Default: auto, half the CPU's physical cores less one (2 on 6 cores, 3 on 8, 5 on
|
||||
# 12, at most 6), none on four cores or fewer and none on AMD's driver for RX 6000 and older Radeon cards, where a
|
||||
# player's game lost its graphics device with workers on; the log's "replay workers automatic" line says how many.
|
||||
# 0: the replay records everything on one thread. 3 gave 51.7 instead of 43.6 fps standing in Hyrule Field on an RX
|
||||
# submitting one: auto or 0 to 16. Default: 0, the replay records everything on one thread. auto (the default in
|
||||
# 0.10.0 only): half the CPU's physical cores less one (2 on 6 cores, 3 on 8, 5 on 12, at most 6), none on four cores or
|
||||
# fewer and none on AMD's driver for RX 6000 and older Radeon cards, where a player's game lost its graphics device with
|
||||
# workers on; the log's "replay workers automatic" line says how many. 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 there. 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 = auto
|
||||
# 1, the default, lets the game start on its next frame while the graphics card still runs the end of the last one: the
|
||||
# replay_workers = 0
|
||||
# EXPERIMENTAL. 1 lets the game start on its next frame while the graphics card still runs the end of the last one: the
|
||||
# upscaler (FSR 4, FSR 3.1 or DLSS) and the interface drawn after it. The graphics card runs the same work, with the
|
||||
# copies of what it wrote for the game moved before that end, and the game's waits end once those copies and the
|
||||
# results it reads are there. A frame whose end hands the game anything else runs as before. Default: 1 (0 up to
|
||||
# 0.9.2); 0 turns it off. Standing in Hyrule Field on an RX 7900 XT with FSR 4: 50.7 instead of 42.5 fps, and 63.5
|
||||
# results it reads are there. A frame whose end hands the game anything else runs as before. Default: 0 (1 in 0.10.0
|
||||
# only). 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, Start next frame early.
|
||||
# tail_early = 1
|
||||
# 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 (0 to 63, default 0, needs replay_pipe): a group of N draws or more
|
||||
# that is too small to share out (fewer than 64 draws) goes whole to one worker; 64 or more reads as 63. Kokiri Forest
|
||||
|
||||
@@ -296,9 +296,9 @@ static const CfgMeta metas[] = {
|
||||
// Advanced: scheduling
|
||||
{"ASYNC_PREEMPT", "1", "0|1|2", RESTART}, {"REPLAY_ASYNC", "0", "0|1", RESTART},
|
||||
{"REPLAY_PIPE", "0", "0..4", RESTART},
|
||||
{"REPLAY_WORKERS", "auto", "auto|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16", RESTART}, // vk_exec.c rw_init, vk_exec_replay_workers_auto
|
||||
// vk_exec.c "the early tail"; on by default since 0.10.0
|
||||
{"TAIL_EARLY", "1", "0|1", RESTART},
|
||||
{"REPLAY_WORKERS", "0", "auto|0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16", RESTART}, // vk_exec.c rw_init, vk_exec_replay_workers_auto
|
||||
// vk_exec.c "the early tail"; off by default (on in 0.10.0 only)
|
||||
{"TAIL_EARLY", "0", "0|1", RESTART},
|
||||
{"REPLAY_SMALL", "0", "0..63", RESTART}, // vk_exec.c group_start
|
||||
{"FREE_CORES", "0", "0|1", RESTART}, {"TIMER_1MS", "1", "0|1", RESTART},
|
||||
// dynamic resolution (dynres.c): the scene follows the GPU time toward DYN_RES_TARGET milliseconds
|
||||
|
||||
@@ -1475,7 +1475,7 @@ static void tab_game(float scale) {
|
||||
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.
|
||||
// Automatic first, the default (vk_exec.c vk_exec_replay_workers_auto), named with the count it gives on this PC
|
||||
// Automatic first (vk_exec.c vk_exec_replay_workers_auto), named with the count it gives on this PC; 0 is the default
|
||||
{
|
||||
static const char *const vals[] = {"auto", "0", "1", "2", "3", "4", "5", "6", "7", "8"};
|
||||
static char auto_name[64];
|
||||
|
||||
@@ -1135,7 +1135,7 @@ static int split_n = -1, split_idle, split_in_pass, split_draws, split_at, part_
|
||||
static uint64_t split_ns, part_t0;
|
||||
static uint64_t n_parts, n_subs, n_idle_parts, n_pass_splits, n_cuts;
|
||||
|
||||
// ---- the early tail (NX2NAVI_TAIL_EARLY, default 1 since 0.10.0; 0 turns it off)
|
||||
// ---- the early tail (NX2NAVI_TAIL_EARLY, default 0; on by default in 0.10.0 only)
|
||||
// Standing in Hyrule Field with FSR 4 (RX 7900 XT, 2026-11-13) a frame's main submission ends with one part of 4.7 ms
|
||||
// of GPU time, the temporal upscaler and the interface drawn after it, and one of 1.4 ms, the write-backs of what the
|
||||
// shaders wrote into VRAM mirrors. The game waits for all of it before it writes the next frame's data (the wait after
|
||||
@@ -1849,9 +1849,9 @@ static void op_one(VkExec *ex, const op_hdr *h) {
|
||||
}
|
||||
}
|
||||
|
||||
// ---- replay workers (NX2NAVI_REPLAY_WORKERS, default auto: as many as the CPU's cores make worth it,
|
||||
// vk_exec_replay_workers_auto; 0: the replay records every op on the submitting thread; the Game tab's CPU helper
|
||||
// threads row sets it)
|
||||
// ---- replay workers (NX2NAVI_REPLAY_WORKERS, default 0: the replay records every op on the submitting thread; auto:
|
||||
// as many as the CPU's cores make worth it, vk_exec_replay_workers_auto, the default in 0.10.0 only; the 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