rpcsx/rpcs3
elad335 047f71b434 PPU/cellSpurs: MGS4: Fix cellSpursAddUrgentCommand race condition
cellSpursAddUrgentCommand searches in 4 slots for an empty slot to put the command at.
At first, it seems to do so unordered.

Meanwhile, on SPU side, it expects an order between all the commands because it pops them it in FIFO manner.
Not keeping track of how many commands are queued in total.

After second observation of cellSpursAddUrgentCommand, something odd comes takes places here.
Usually, reservation loops are individual and are expected to be closed without any changes of the previous loop affected by the proceeding one.
But in this case, after a single failure, the entire operayion is reset, a loop of 4 reservation operations suddenly is reset completely.

This makes one wonder if it the HW expects sometjing else here, perhaps it caches the reservation internally here?
After some adjustments to LDARX and STDCX to cache the reservation between succeeding loops, Metal Gear Solid 4 no longer freezes!
2025-03-28 19:56:54 +03:00
..
Crypto unpkg: Restore support for PSP/Vita packages 2025-03-28 14:43:38 +03:00
Emu PPU/cellSpurs: MGS4: Fix cellSpursAddUrgentCommand race condition 2025-03-28 19:56:54 +03:00
Icons
Input Use named_thread in gui_pad_thread 2025-03-12 01:08:49 +01:00
Loader fs::file: implement release_handle 2025-03-10 21:09:27 +01:00
qt/etc Qt6 port 2023-07-31 20:03:24 +03:00
rpcs3qt Loader: deny boot if the firmware is too old 2025-03-28 18:18:09 +03:00
util Utils: Remove AVX10-256 detection (#16904) 2025-03-22 13:28:45 +02:00
CMakeLists.txt Windows/Qt: do not deploy dx and ffmpeg libs 2025-03-27 02:33:32 +01:00
Cubeb.vcxproj Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00
Cubeb.vcxproj.filters Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00
display_sleep_control.cpp Move display sleep functions to emu callbacks 2025-02-25 19:45:43 +01:00
display_sleep_control.h Move display sleep functions to emu callbacks 2025-02-25 19:45:43 +01:00
emucore.vcxproj Update SDL to 3.2.8 2025-03-08 10:03:00 +01:00
emucore.vcxproj.filters move texture_cache_types implementation to cpp 2025-02-26 19:42:31 +01:00
frame_icon.xpm
git-version.cmake
GLGSRender.vcxproj gl: Implement MSAA resolve/unresolve for color images 2025-02-11 02:28:31 +03:00
GLGSRender.vcxproj.filters gl: Implement MSAA resolve/unresolve for color images 2025-02-11 02:28:31 +03:00
headless_application.cpp Move display sleep functions to emu callbacks 2025-02-25 19:45:43 +01:00
headless_application.h Linux: use futex_waitv syscall for atomic waiting 2023-08-02 21:46:06 +03:00
main.cpp main: Fix some warning 2025-03-11 06:58:23 +01:00
main_application.cpp Move display sleep functions to emu callbacks 2025-02-25 19:45:43 +01:00
main_application.h RSX/Qt: Reuse gs_frame if possible 2025-01-06 15:49:09 +01:00
module_verifier.cpp Case-insensitive path compare for module verifier (#15889) 2024-08-04 15:46:08 +02:00
module_verifier.hpp Run platform sanity checks after creating the log and log windows path 2024-08-02 21:40:30 +02:00
resource.h Remove whitespace 2023-02-15 08:58:02 +01:00
resources.qrc
rpcs3.desktop
rpcs3.icns
rpcs3.ico
rpcs3.metainfo.xml Metainfo: Update number of compatible games 2023-12-30 11:41:52 +01:00
rpcs3.plist.in Target macOS 14 instead of 13 (fixes camera) 2025-03-09 01:02:49 +03:00
rpcs3.png
rpcs3.rc
rpcs3.svg
rpcs3.vcxproj Windows/Qt: do not deploy dx and ffmpeg libs 2025-03-27 02:33:32 +01:00
rpcs3.vcxproj.filters VS: add some missing filters 2025-03-04 23:44:45 +01:00
rpcs3_version.cpp rpcs3_version: Bump to 0.0.35 2025-03-01 00:11:02 +00:00
rpcs3_version.h Savestates: Save build version and creation time 2023-12-29 11:11:53 +02:00
stb_image.cpp Add -Werror=implicit-fallthrough to cmake build 2024-01-07 17:29:43 +01:00
stdafx.cpp
stdafx.h Make compile with msvc, clang and gcc on Windows 2023-07-11 21:40:30 +03:00
update_helper.sh rpcs3qt: Add macOS support to the updater. 2024-01-24 09:44:56 +01:00
VKGSRender.vcxproj vk: Refactor swapchain into separate platform headers 2025-03-01 18:02:32 +03:00
VKGSRender.vcxproj.filters vk: Refactor swapchain into separate platform headers 2025-03-01 18:02:32 +03:00
windows.qrc
XAudio.vcxproj xaudio2: use system library instead of xaudio2redist 2024-02-27 05:21:32 +02:00
XAudio.vcxproj.filters Audio: device switching and channel count detection (#12246) 2022-07-08 17:13:38 +02:00