rpcsx/rpcs3/Emu/RSX
Elad 575a245f8d
IDM: Implement lock-free smart pointers (#16403)
Replaces `std::shared_pointer` with `stx::atomic_ptr` and `stx::shared_ptr`.

Notes to programmers:

* This pr kills the use of `dynamic_cast`, `std::dynamic_pointer_cast` and `std::weak_ptr` on IDM objects, possible replacement is to save the object ID on the base object, then use idm::check/get_unlocked to the destination type via the saved ID which may be null. Null pointer check is how you can tell type mismatch (as dynamic cast) or object destruction (as weak_ptr locking).
* Double-inheritance on IDM objects should be used with care, `stx::shared_ptr` does not support constant-evaluated pointer offsetting to parent/child type.
* `idm::check/get_unlocked` can now be used anywhere.

Misc fixes:
* Fixes some segfaults with RPCN with interaction with IDM.
* Fix deadlocks in access violation handler due locking recursion.
* Fixes race condition in process exit-spawn on memory containers read.
* Fix bug that theoretically can prevent RPCS3 from booting - fix `id_manager::typeinfo` comparison to compare members instead of `memcmp` which can fail spuriously on padding bytes.
* Ensure all IDM inherited types of base, either has `id_base` or `id_type` defined locally, this allows to make getters such as `idm::get_unlocked<lv2_socket, lv2_socket_raw>()` which were broken before. (requires save-states invalidation)
* Removes broken operator[] overload of `stx::shared_ptr` and `stx::single_ptr` for non-array types.
2024-12-22 20:59:48 +02:00
..
Capture rsx: Initialize some uninitialized members 2024-05-18 16:16:08 +02:00
Common rsx: Revert bounds optimization on RO texture load 2024-12-16 19:00:08 +03:00
Core SPU: Unlock RSX list transfers 2024-08-15 14:05:25 +03:00
GL IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
Host rsx: Improve performance even more when async MM is active 2024-12-16 19:00:08 +03:00
Null Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
NV47 rsx: Improve MM synchronization 2024-12-16 19:00:08 +03:00
Overlays IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
Program Vk/Gl/Overlays: Do not blend the alpha channel when rendering overlays 2024-08-28 01:19:15 +03:00
VK IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
color_utils.h rsx: Verify that channel remap is initialized before applying swizzles 2024-10-03 15:02:09 +03:00
display.h Qt6 port 2023-07-31 20:03:24 +03:00
GCM.h fix some warnings 2023-12-30 19:07:35 +01:00
gcm_enums.cpp Optimize RSX Debugger 2023-07-31 11:55:31 +03:00
gcm_enums.h rsx: Implement texture border color decode to remapped rgba 2024-10-03 15:02:09 +03:00
gcm_printing.cpp Optimize RSX Debugger 2023-07-31 11:55:31 +03:00
gcm_printing.h Optimize RSX Debugger 2023-07-31 11:55:31 +03:00
GSFrameBase.h rsx: Add 120fps and monitor refresh-rate frame limits 2024-09-12 13:49:03 +03:00
GSRender.cpp rsx: Add 120fps and monitor refresh-rate frame limits 2024-09-12 13:49:03 +03:00
GSRender.h rsx: Add 120fps and monitor refresh-rate frame limits 2024-09-12 13:49:03 +03:00
rsx_cache.h rename fs::stat to fs::get_stat 2023-07-25 12:15:08 +03:00
rsx_decode.h rsx: Discard color mask writes with reserved bits 2023-08-25 05:41:54 +03:00
rsx_methods.cpp PPU: Fix potential overflow 2024-07-28 12:36:42 +03:00
rsx_methods.h Get reworked RSX to compile 2024-04-13 03:29:57 +03:00
rsx_utils.cpp rsx: Add some sensible fallbacks (#11219) 2021-12-02 16:02:08 +03:00
rsx_utils.h rsx: Use a proper struct to wrap around channel remap operations 2024-10-03 15:02:09 +03:00
rsx_vertex_data.cpp rsx: Properly implement immediate mode rendering 2021-11-15 18:14:15 +03:00
rsx_vertex_data.h rsx: Properly implement immediate mode rendering 2021-11-15 18:14:15 +03:00
RSXDisAsm.cpp rsx: Separate register context from RSX thread 2024-04-13 03:29:57 +03:00
RSXDisAsm.h RSX-Debugger: Implement backwards scrolling 2022-04-15 22:34:51 +03:00
RSXFIFO.cpp Replace rsx::uclock with get_system_time() 2024-10-29 19:26:33 +02:00
RSXFIFO.h rsx/vk: Implement batched transform constant updates 2024-05-12 21:26:25 +03:00
RSXOffload.cpp rsx: Minor refactoring RSXThread 2023-01-11 16:48:53 +03:00
RSXOffload.h rsx: Fix emu stopping crash when using multi-threaded rsx 2022-07-10 14:19:59 +03:00
RSXTexture.cpp rsx: Implement texture border color decode to remapped rgba 2024-10-03 15:02:09 +03:00
RSXTexture.h vk: Fix border color swizzling behavior 2024-12-21 15:24:15 +03:00
RSXThread.cpp Fix some warnings 2024-12-20 17:30:25 +01:00
RSXThread.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
RSXZCULL.cpp Replace rsx::uclock with get_system_time() 2024-10-29 19:26:33 +02:00
RSXZCULL.h fix some warnings and typos 2024-04-19 01:29:22 +02:00