Commit Graph

  • f7899e5443 Let the game's limiter stand aside only once RivaTuner Statistics Server is seen holding the game, and give up on RTSS at 1.05 times the limit over three fresh periods. chrg6 2026-11-13 19:13:36 -05:00
  • 04f4d44747 Keep RivaTuner Statistics Server's profile as it was in rtss-profile.txt, so a start after a kill or crash puts it back, and leave it to that start at a crash. chrg6 2026-11-13 19:08:10 -05:00
  • 208a10718d Let the game's pacer hold a movie while RivaTuner Statistics Server holds the limit, and keep the play limit in RTSS's profile through it. chrg6 2026-11-13 18:58:47 -05:00
  • 27a034e946 Keep the 240 ceiling while RivaTuner Statistics Server holds the limit, and take the limit back after 200 ms with no host present. chrg6 2026-11-13 18:55:40 -05:00
  • 1f547853e3 Put back the backslash that had turned into a tab in docs/building.md's tex_compact_check command. chrg6 2026-11-13 18:46:50 -05:00
  • 419e173e8a Check that a want after the exit's RivaTuner restore changes nothing: the restore marks the run closed before anything else and rtss_limit_want returns on it, which the exit order relies on now that the restore runs before the pipeline save while frames still come. chrg6 2026-11-13 18:46:50 -05:00
  • d9940113ef Give a network task's system event back to the event table before its record is freed. The table counts entries in host memory as live, so each task the game destroyed kept a slot for the rest of the run, and enough of them would fill it. Not reproduced before the change; system_event_check passed. chrg6 2026-11-13 18:46:50 -05:00
  • 52d996d4aa Count the low-latency driver's sleep as pacing on whichever thread acquires, as the other acquire waits are counted since the pacing timing changed: vk_lowlat.c frame_begin runs on the acquiring thread, which need not be the one that presents, and perf_end dropped a wait made there. chrg6 2026-11-13 18:46:49 -05:00
  • a0fd6edc48 Take main's base in cheats.py from recomp/layout.py instead of a copy of its value. chrg6 2026-11-13 17:26:47 -05:00
  • 5f90486cf0 Mark the generated modules.c with GENERATED_MARKER, so that check_content.py refuses it in a commit. chrg6 2026-11-13 17:25:12 -05:00
  • 6b051eea58 List kern_ap_stub_ymm as dispatched in check_isa.py, so that a --cpu v2 build passes its instruction check again. chrg6 2026-11-13 17:23:01 -05:00
  • 56db0d485c Make check_platform.py skip the branches that only a Windows build compiles, so that it passes on the runtime and guards it again. chrg6 2026-11-13 17:21:56 -05:00
  • 73d6c8ffb8 Refuse the command line's update while the game runs, as the window's Updates row does. chrg6 2026-11-13 17:19:54 -05:00
  • 814c10b355 Keep the Steam shortcut from starting the game while the launcher runs a job in the game folder. chrg6 2026-11-13 17:18:36 -05:00
  • 0105720217 Take only a sharing violation on ocarina.exe for a running game, not any refusal to write it. chrg6 2026-11-13 17:16:21 -05:00
  • 8f42883a74 Tell the end of a game started from the Steam shortcut as Play tells it, with a message box for a fatal one. chrg6 2026-11-13 17:12:51 -05:00
  • 8de99df6eb Explain a lost device's exit code 72 with the game's FATAL line, and follow the copy the game's own Restart starts for the code it really ends with. chrg6 2026-11-13 17:10:50 -05:00
  • 359591c237 Note the module list from each image's header and GetModuleFileNameA, which takes 0.3 ms where it took 25 ms. chrg6 2026-11-13 18:35:00 -05:00
  • e4f10a5a02 Log the hang watch's list of guest thread waits after the kernel lock is released, not while it is held. chrg6 2026-11-13 18:33:31 -05:00
  • cd3f015732 Log the guest's ExitProcess line after the exit guard, and bring the comments on gfx_window_closed's return up to date. chrg6 2026-11-13 18:32:04 -05:00
  • 66c607414b End a hung fatal error's report with its own code when a thread waiting beside it gives up, not with the crash code. chrg6 2026-11-13 18:30:49 -05:00
  • e6a6d6a809 Skip RivaTuner's restore at a fatal error on the RTSS thread too, not only at a crash there. chrg6 2026-11-13 18:28:09 -05:00
  • 78e9d23211 Write a fatal error's frame-time summary after RivaTuner's restore and the rumble stop, not before them. chrg6 2026-11-13 18:27:13 -05:00
  • 313ef09081 Open the log's end reserve only when the process is ending, not at a bug capture's log sync in play. chrg6 2026-11-13 18:26:35 -05:00
  • b8b57cfd53 Take the file lock at the end of a save file call only when a CloseFile is pending, not at the end of every call. chrg6 2026-11-13 18:23:21 -05:00
  • a135c19450 Ignore the focus loss that the close's own hide of the window sends, so the exit summary keeps the session's frames. chrg6 2026-11-13 18:20:58 -05:00
  • b23acff301 Leave a line in the log when a module ends the process with ExitProcess, and write the gathered lines at a focus loss. chrg6 2026-11-13 17:53:30 -05:00
  • dd78132e6d Tell a crash on the RTSS thread as the game's own call of RivaTuner's library, and skip the restore there. chrg6 2026-11-13 17:46:53 -05:00
  • 4a36e96411 Name Vulkan layers called VkLayer_*, a recorder's Vulkan hook and a driver's capture tool as foreign in the crash report. chrg6 2026-11-13 17:45:19 -05:00
  • 0efa9a4c78 End the process on a second Ctrl+C after a save Commit in flight finishes, not through the default handler's ExitProcess. chrg6 2026-11-13 17:44:33 -05:00
  • dc94771051 Run the window's close on a thread of its own and hide the window, so it keeps answering while the game saves. chrg6 2026-11-13 17:43:36 -05:00
  • f9033dce64 Put away the boot prebuild's crash marker and journal when the cheats rebuild ends the process. chrg6 2026-11-13 17:42:42 -05:00
  • c040ca6c5f Write the frame-time summary and the stutter map at a fatal error too, the map only when its lock is free. chrg6 2026-11-13 17:41:19 -05:00
  • 153295b64c Check cfg_meta's result before reading a row's default in default_number and gfx_cfg_window_size. chrg6 2026-11-13 17:40:00 -05:00
  • 5b9ed9ed12 Say so in the log when the settings table is full and a key or a menu change is not kept. chrg6 2026-11-13 17:39:20 -05:00
  • b4556957c2 Add a hang watch that logs a report when no frame is shown with the window in front, or the GPU does not finish, for 20 s. chrg6 2026-11-13 17:38:20 -05:00
  • 0fbd2b8f31 Add a static check of cfg.c's settings tables to the content guard, and list the 15 names it found missing from known[]. chrg6 2026-11-13 17:32:02 -05:00
  • bbea3ce2a0 Write the end of the run to the log file past its 64 MiB cap, up to a 4 MiB reserve counted on its own. chrg6 2026-11-13 17:25:40 -05:00
  • 8c1ec42406 Log the nx2navi.ini and environment values that are outside their settings' sets, with the line they came from. chrg6 2026-11-13 17:23:19 -05:00
  • 87fd385b7b Stop HD rumble at a fatal error and a crash too, on a thread of its own the end waits for 300 ms at most. chrg6 2026-11-13 17:19:38 -05:00
  • 722a5dd1b0 Keep 32 KiB of every thread's and fiber's stack back for a stack overflow's crash report. chrg6 2026-11-13 17:18:05 -05:00
  • 790d201a59 Keep a save file open until the last call through its handle is out, so a CloseFile beside a read or write cannot redirect it. chrg6 2026-11-13 17:16:35 -05:00
  • 1352b14f64 Let the first failure report end the run whole when another thread crashes or hits a fatal error beside it. chrg6 2026-11-13 17:13:35 -05:00
  • 8f952d2841 End fatal errors and a lost device with TerminateProcess instead of _Exit, which ran every library's detach. chrg6 2026-11-13 17:11:26 -05:00
  • e39f71df39 Run every orderly exit through one sequence that puts RivaTuner's profile back before the slow pipeline save. chrg6 2026-11-13 17:09:13 -05:00
  • 2c59addd62 Describe the domain checks in the ipc_session_check docstring. chrg6 2026-11-13 18:00:24 -05:00
  • 66d38dc0ac Put the kern_handle_close comment in host.h back in its column. chrg6 2026-11-13 18:00:12 -05:00
  • ef2e5e24a6 Skip a change-event slot whose handle is not stored yet when a channel change signals the list. chrg6 2026-11-13 17:59:49 -05:00
  • d8c046acc4 Destroy a movie decoder's system events and free their table entries when the decoder goes. chrg6 2026-11-13 17:56:39 -05:00
  • 601a954676 Say in nx2navi.ini.example how much game memory the copy sweep reads. chrg6 2026-11-13 17:54:39 -05:00
  • b072b8a2d4 Keep one copy-sweep record per handle, so a copy recorded again over the same block is not counted twice. chrg6 2026-11-13 17:54:34 -05:00
  • 168a80f2ed Run the copy sweep at normal priority, so a preempted sweep cannot hold the recording and submitting threads. chrg6 2026-11-13 17:54:13 -05:00
  • 88a64573a2 Say which mixer calls run without the renderer lock in audren.h. chrg6 2026-11-13 17:29:07 -05:00
  • 6029321eff Check the movie decoder under its lock in DecodeAsync, so a sample after Finalize cannot hold the movie frame rate cap. chrg6 2026-11-13 17:28:29 -05:00
  • af06160284 Leave lazily armed memory out of the camera-speed search, so a sensitivity change no longer fetches GPU buffers. chrg6 2026-11-13 17:27:47 -05:00
  • e9becc12f3 Free closed IPC domain objects and give their ids out again, and keep a domain alive while its objects are. chrg6 2026-11-13 17:26:03 -05:00
  • d3a5c3c353 Make one audio device change event per kind instead of one per request, and close the event of a lost race. chrg6 2026-11-13 17:20:45 -05:00
  • 811024e69b Count the recording copies whose control memory the game reused, behind the new NX2NAVI_COPY_RETIRE switch. chrg6 2026-11-13 17:19:05 -05:00
  • 0b217575d8 Keep the movie deband planes per decoder, and drop the frame instead of ending the game when they cannot be allocated. chrg6 2026-11-13 17:12:08 -05:00
  • 0672655c96 Let a destroyed vsync event give its slot when the vsync list is full, instead of ending the process on the 17th. chrg6 2026-11-13 17:09:19 -05:00
  • 63228e7ca8 Hold a reference on an IPC session for the length of a request, and copy the transfer memory under the kernel lock. chrg6 2026-11-13 17:07:41 -05:00
  • 465ffe67bb Check a system event's kept handle under the kernel lock before signalling it, and keep host-memory events in a full table. chrg6 2026-11-13 17:04:11 -05:00
  • 78bfb83b2b Ask the shipped translator itself for its texture pool length before make_launcher packages it. chrg6 2026-11-13 17:50:38 -05:00
  • 1e1e3b757f Have the preparation's prebuild report say it counts from the preparation's start. chrg6 2026-11-13 17:46:43 -05:00
  • 75b1e0b5d9 Say that pipeline-binaries.bin is cut back also at a malformed record, and check the cut itself. chrg6 2026-11-13 17:45:51 -05:00
  • ad0e934fbf Rewrap make_appimage.py's docstring paragraph on the bundled files at 120 columns. chrg6 2026-11-13 17:44:10 -05:00
  • d2e23ce9c9 Check in carry_pool_check that gfx_shader.c's earlier pool length equals vk.h's. chrg6 2026-11-13 17:43:49 -05:00
  • a47c6d69de Say in docs/architecture.md which carried translations are translated again after an update. chrg6 2026-11-13 17:43:20 -05:00
  • 6c6e7b3974 Serve a refused carried translation once the current translator has failed the shader. chrg6 2026-11-13 17:42:53 -05:00
  • acfc0ac24c Make excl_mt check the exclusive monitor as it is: a compare-and-swap of the value loaded. chrg6 2026-11-13 17:22:51 -05:00
  • e5632aea87 Point movie_timeline_check at the switch the movie timestamp sites have had since 70c99357. chrg6 2026-11-13 17:22:06 -05:00
  • fd91f46bfb Bring compute_prebuild_queue_check's stand-ins up to lb_next's worker limit beside the game. chrg6 2026-11-13 17:21:48 -05:00
  • 077c363f52 Give cache_exit_snapshot_check's stand-in pipeline state the held sizes cache_save_one now stores. chrg6 2026-11-13 17:21:07 -05:00
  • ae90aff58a Keep every pipeline when tex_vram_pressure is 0, as the textures read it. chrg6 2026-11-13 17:20:40 -05:00
  • 6af16f7c34 Record a pipeline's key at its fast link also when its optimised build failed first. chrg6 2026-11-13 17:20:06 -05:00
  • 79c41ca76a Keep the whole records of a pipeline-binaries.bin that ends inside a record, and cut a failed append back out. chrg6 2026-11-13 17:19:08 -05:00
  • ea5087baf6 Let workers_drain drop a queued fast-link job without reading its missing library. chrg6 2026-11-13 17:17:01 -05:00
  • 339f391cf5 Give the pipeline preparation's prebuild report its start time. chrg6 2026-11-13 17:16:38 -05:00
  • b04e7c85b2 Log shaders that index the texture pool with the earlier translator's length, and a texture they cannot reach. chrg6 2026-11-13 17:15:58 -05:00
  • 48846dc9cb Destroy the pipelines given back under video memory pressure on the autosave thread, not the completion thread. chrg6 2026-11-13 17:14:29 -05:00
  • 2f93d2740f Measure the video memory pressure that gives back unused pipelines without the free space inside the allocator's blocks. chrg6 2026-11-13 17:13:25 -05:00
  • f3d8f08689 Make every packaging script refuse a translator not built from the checkout's sources, early. chrg6 2026-11-13 17:12:31 -05:00
  • 72047d12af Stop sending a request again to a new translator child after the first one gave no answer for the read timeout. chrg6 2026-11-13 17:08:45 -05:00
  • 46c764a434 Stop serving carried translations whose texture pool array has the earlier translator's length. chrg6 2026-11-13 17:05:36 -05:00
  • 301445b314 Name the four checks this branch added in docs/building.md's "Checks". chrg6 2026-11-13 17:47:20 -05:00
  • c4140a3f01 Time the finalized pools' destroys and say which thread ran them, on the "mem: sizes" line. chrg6 2026-11-13 17:46:35 -05:00
  • a8cc1e694e Write the released textures' room census only while they may keep more than their bound. chrg6 2026-11-13 17:27:58 -05:00
  • 8fc2228996 Time the hard-count batches of released textures, to measure what one costs. chrg6 2026-11-13 17:27:29 -05:00
  • 5dea57c5e2 Log where a session stands as the 32-bit page generations near their wrap. chrg6 2026-11-13 17:26:24 -05:00
  • 7df96ef0b7 Fetch a lazily written piece without holding lz_lock, as a whole segment already is. chrg6 2026-11-13 17:24:09 -05:00
  • dcccf59a65 Correct memory.c's lock comment: frz_lock is not a leaf lock. chrg6 2026-11-13 17:23:00 -05:00
  • f26d091024 Let the GPU-parts line for long fence waits see upload batches and presents. chrg6 2026-11-13 17:22:33 -05:00
  • 0ffac80222 Name the queue lock's long holders under NX2NAVI_LOCK_TIME, and time each swapchain rebuild's hold of it. chrg6 2026-11-13 17:21:28 -05:00
  • 68bc197393 Route present_image's fence-wait results through the lost-device check, cap their lines, and skip a capture whose wait failed. chrg6 2026-11-13 17:19:21 -05:00
  • c0f8a3224d Stop the VRAM pressure check from walking every texture and every released entry again when nothing can go. chrg6 2026-11-13 17:17:56 -05:00
  • 28a69d23cc Write the GPU-drawn textures of a hard-count batch back in one upload batch before the drops. chrg6 2026-11-13 17:15:48 -05:00
  • 4840f57490 Let the completion thread's collect give way while an upload holds the upload lock. chrg6 2026-11-13 17:14:53 -05:00
  • e70cbb6a39 Destroy finalized pools in vk_mem_collect outside every lock, not in the completion callback or under the upload lock. chrg6 2026-11-13 17:13:50 -05:00
  • b146ee716c Copy untouched lazy-heap pages as zeros in mem_copy_readable instead of faulting on them under frz_lock. chrg6 2026-11-13 17:12:00 -05:00
  • 350c8b2111 Finish a new VRAM mirror's state under the pool lock hold that puts it on the mirrored list. chrg6 2026-11-13 17:08:38 -05:00