Commit Graph
17 Commits
Author SHA1 Message Date
libretroadmin f1208a7a5a Make threading lock-free
The core and the headless tools no longer use mutexes, condition variables,
spinlocks, std::atomic, std::thread or volatile flags. Threads hand off through
libretro-common's retro_atomic and rthreads plus a few small pieces on top of
them in Common/Thread: Thread, MpscQueue, EventCounter, ParkingLot waits and
ReaderGate. Every wait blocks until it's woken; nothing polls on a timer.

State that only one thread touches just loses its lock. The PSP filesystem,
sceIo and the savedata dialog now belong to the emulation thread: async reads
and writes run when they're queued and complete later in emulated time, and
the IO and savedata threads are gone. The friend finder only talks to the
adhoc server and hands what it gets to the emulation thread. GPU init always
runs on the thread that starts the game.

The Vulkan render and compile queues, pipeline and render pass caches, delete
list and SPIR-V cache, the GL render queue, the software renderer's jit caches,
the file loader caches, the web debugger, UPnP, input, savestates, logging and
the GE debugger all hand off through queues and atomics. The IR jit's spinning
profiler thread goes.

A CPU thread with nothing to run now sleeps until work is queued instead of
spinning. Headless with --debugger waits for a client while stopped, and ends
the run once every client that connected has left. Web server shutdown keeps
servicing the CPU queue until the server has finished.
2026-10-09 04:56:16 +02:00
Henrik Rydgård c5849ada33 GameDB: validate CSV structure before indexing into it
LoadIfNeeded() indexed lines[0] unconditionally after splitting the
bundled CSV into lines, crashing if the file were empty. It also used
GetColumnIndex()'s result directly as an index into each row's fields
without checking for its (size_t)-1 "not found" sentinel, which would
have produced a huge out-of-bounds index on every row if any of the
expected column headers were missing. Both require a corrupted or
replaced redump.csv asset to trigger, but are simple, cheap checks to
add.
2026-08-11 08:43:52 +02:00
Henrik Rydgård c9acf8e80e More std::string_view 2025-08-31 20:20:59 +02:00
Henrik Rydgård 8d6f8b9399 Cleanup and paranoia 2025-06-06 10:34:13 +02:00
Henrik Rydgård fbb5d649e4 Fix hang bug when searching settings in the Developer Tools screen 2025-04-30 11:50:47 +02:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Henrik Rydgård dc4f22d1a4 GameDB: Add a mutex, and load on demand instead. 2024-01-15 17:17:02 +01:00
Henrik Rydgård 92d1c33426 Another minor GameDB fix 2024-01-15 12:21:48 +01:00
Henrik Rydgård dc4053095a Add some paranoia checks in the GameDB 2024-01-15 10:47:16 +01:00
Henrik Rydgård 126d88ecfc Back out clearly inconsequential/useless .reserve() calls 2023-12-29 08:27:56 +01:00
Herman Semenov b871e76d05 [Core/Debugger/FileLoaders/FileSystems/MIPS] Using reserve if possible 2023-12-15 13:59:19 +03:00
Henrik Rydgård 6645ddfa38 Merge pull request #18489 from hrydgard/memory-profiling-notes
Some changes and comments after running the memory profiler on Windows
2023-12-08 23:58:48 +01:00
Henrik Rydgård d234fa24e6 Add progress bar (without %) to install/uninstall. Other fixes. 2023-12-08 16:16:28 +01:00
Henrik Rydgård 376db1f931 Remove the unused "front" draw2d buffer. Saves 1.5MB of RAM. 2023-12-08 12:29:24 +01:00
Henrik Rydgård a22450320b Some minor changes and comments after memory profiling 2023-12-08 12:22:12 +01:00
Henrik Rydgård e0ada6e5ba Cleanup, add the new strings to en_US.ini 2023-10-26 00:18:05 -05:00
Henrik Rydgård 87ddb3f3b1 Add easy way to verify games against the Redump database, supplied as CSV. 2023-10-23 19:11:01 -05:00