Commit Graph

11163 Commits

Author SHA1 Message Date
Nekotekina
fb24b06a5d PPU: add LARX perf counter
Also refactor ppu_store_reservation a bit.
2020-10-30 02:58:39 +03:00
Nekotekina
425fce5070 SPU: load previous data on PUTLLC failure
Since it will most likely execute GETLLAR to load it again.
Only implemented for TSX at moment.
2020-10-30 02:58:39 +03:00
Nekotekina
d5667a859a CPU: improve cpu_thread::suspend_all (TSX)
Try to make more clever busy-waiting on cpu_flag::pause.
2020-10-30 02:58:39 +03:00
Nekotekina
95dbcf2fd7 Logs: add callback for cpu_thread to set cpu_flag::wait
May improve waiting time in critical suspend_all ops.
2020-10-29 18:57:57 +03:00
Nekotekina
8ce0819b42 SPU: add stx/ftx counters
Just count pure transaction successes and failures.
2020-10-29 18:57:57 +03:00
Nekotekina
688a456642 TSX tweaks
Allow to do more in first-chance transactions.
Give PUTLLC +1 priority (minor change).
2020-10-29 18:57:57 +03:00
Megamouse
59b3a3d26b
Qt: Add "Configure Game Patches" to game list (#9154) 2020-10-29 06:02:05 +00:00
Ani
ea1cdbfdd8 ci: Update docker to 1.6
Bumps Windows VulkanSDK version to 1.2.154.1 to stay synchronised with
docker
2020-10-29 03:57:39 +00:00
Ani
3641926333 ci: Use system cURL on Linux build 2020-10-29 03:57:39 +00:00
Nekotekina
280958ee74 Revert "TSX: adjust transaction logic"
This reverts commit ff550b5c3c.
2020-10-28 21:59:12 +03:00
Bevan Weiss
f4070731a8 NET: Add SO_RCVBUF / SO_SNDBUF defaults to .._bnet_socket
The OS defaults for SO_RCVBUF / SO_SNDBUF may not match what the defaults for the PS3 are.
And the code may be happy with the PS3 defaults, so may not set this explicitly.
So we'll do it when we establish the socket.
It also looks like the Windows recv behaviour is different for the MSG_PEEK option (and possibly in all situations where a smaller buffer is provided). I believe other platforms will return the size of the data received into the socket buffer, even if the supplied user buffer is smaller. Windows returns WSAEMSGSIZE instead. For the length of '1' MSG_PEEK request that is currently seen, we just mask this and return the full size of the buffer. This might need to be the case in all situations, I assume there will be applications that will supply an artificially small buffer and resize it as necessary based on the size of the received packet.
Add some additional translations from native->PS3 error codes

Rewrote handling of MSG_PEEK to just be a copy of what GalCiv suggested
Added WSAESHUTDOWN, and WSASetLastError as done by Cygwin
2020-10-28 20:54:29 +03:00
Eladash
e791678dfc atomic.cpp: fix memory ordering loads and release stores 2020-10-28 20:45:13 +03:00
RipleyTom
6f5bbf550a Revert part of CellHddGameCheck 2020-10-28 20:44:38 +03:00
Nekotekina
ff550b5c3c TSX: adjust transaction logic
Allow more in first-chance transactions.
Allow abandonment of PUTLLC as in original path.
Make PUTLLUC unconditionally shared-locked.
Give PUTLLC +1 priority (minor change).
2020-10-28 14:00:09 +03:00
Nekotekina
d6daa0d05b Fix cpu_flag::temp, make sure it removes cpu_flag::wait 2020-10-28 14:00:09 +03:00
Nekotekina
86785dffa4 SPU: make vm::check_addr checks safe under vm::range_lock
Reuse some internal locking mechanisms.
Also fix vm::range_lock missing check.
2020-10-28 14:00:09 +03:00
Nekotekina
c491b73f3a SPU: improve accurate DMA
Remove vm::reservation_lock from it.
Use lock bits to prevent memory clobbering in GETLLAR.
Improve u128 for MSVC since it's used for bitlocking.
Improve 128 bit atomics for the same reason.
Improve vm::reservation_op and friends.
2020-10-28 03:47:41 +03:00
Nekotekina
c50233cc92 atomics.cpp: add support for waiting on 128-bit atomics
Complementarily.
Also refactored to make waiting mask non-template arg.
2020-10-28 03:47:41 +03:00
Nekotekina
13de773486 Remove some vm::reservation_lock instances 2020-10-27 17:56:19 +03:00
Nekotekina
4966f6de73 vm: improve range_lock and shareable cache (Non-TSX)
Allocate "personal" range lock variable for each spu_thread.
Switch from reservation_lock to range lock for all stores.
Detect actual memory mirrors in shareable cache setup logic.
2020-10-27 17:56:19 +03:00
Nekotekina
6806e3d5c7 atomic.cpp: implement notify callback
Notification can be very heavy, especially if we need to wake many threads.
Callback is set for cpu_thread in order to set wait flag accordingly.
2020-10-27 17:56:19 +03:00
Megamouse
0a121e9d26 DS4: Add error logging and remove some unused code 2020-10-27 15:25:08 +01:00
Megamouse
15e8cba398 Qt: fix never played nonsense 2020-10-27 12:50:43 +01:00
kd-11
b32eecb5a7
rsx: Driver compatibility improvements (#9131)
* rsx: Refactor vertex clip emit to avoid using f64 unnecessarily

- Fixes driver crash on intel

* vk: Add NVIDIA driver version check

- Warn if user has outdated drivers with known problems
2020-10-27 13:22:15 +03:00
Megamouse
8ce0eaa9d0
Qt: move TTY option to TTY tab (#9147) 2020-10-27 02:47:07 +00:00
Ani
8307f82f86 ci: Set glslang checksum back to auto-builds
Forgot to set on #9124
2020-10-26 06:16:08 +03:00
Cebtenzzre
2b6a56c21c Partially revert "Fix debug build gcc/clang linker."
This reverts commit 4599d58413.

The issue this works around was fixed in 3265772 ("idm: Implement
creation/destruction invalidation counter") by making the variables
constexpr.

Fixes #6896
2020-10-26 04:12:04 +03:00
Nekotekina
f1e66085cd Fixup for cpu_flag::temp
Wrong check_state() result was triggering assertion.
2020-10-26 01:18:26 +03:00
Nekotekina
d344701fd5 atomic.cpp: add sparse atomics
Set alignment as second template argument (typically cache line).
2020-10-26 01:15:31 +03:00
Nekotekina
130a0ef20e Implement cpu_flag::temp flag
Accompanies wait flag, indicating that it was set in limited conditions.
Such condition don't allow thread to terminate after its removal.
2020-10-25 21:48:20 +03:00
kd-11
18ca3ed449 rsx: Block-level reservation access 2020-10-25 20:21:04 +03:00
Nekotekina
af6fcb19a8 atomic.cpp: add std primitive fallback for other platforms
Other platforms = not Windows or Linux.
2020-10-25 16:45:22 +03:00
Ani
eec2dfad7b ci: Set GLSLANG_URL back to auto-builds 2020-10-25 16:44:06 +03:00
Eladash
0fcf767ee9 SPURS: Implement spursJobchainPopUrgentCommand 2020-10-25 16:43:38 +03:00
Eladash
1e7bf218e0 CellSpurs: Minor fixes 2020-10-25 16:43:38 +03:00
Eladash
4ea7628204 SPU: Fix LS capture entry point 2020-10-25 16:39:40 +03:00
Nekotekina
7db77a5580 atomic.cpp: use new thread alerting API (Win8+)
Win7 will remain using old API (keyed events).
2020-10-24 19:06:02 +03:00
Nekotekina
97ae5ab561 Add imports for some undocumented NTDLL functions
Some of them are available only since Windows 8.
2020-10-24 14:16:32 +03:00
Nekotekina
89d9813a45 Fix UTF-8 strings in perf_meter files 2020-10-24 14:16:32 +03:00
Nekotekina
2b52b4a749 SPU: use normal notify() thread function
Using raw_notify() everywhere was overkill.
2020-10-24 14:16:32 +03:00
Nekotekina
c479d431a4 atomic.cpp: experimental optimization (Win7+)
Try non-blocking wake up function first.
2020-10-24 14:16:32 +03:00
Nekotekina
8628fc441d atomic.cpp: rewrite internals (again)
Use individual semaphore for each thread.
Unfortunately, limit max thread waiting for single address (60).
If limit is reached, use busy waiting.
2020-10-24 14:16:32 +03:00
Nekotekina
d48d67767a atomic.cpp: integrate callback check in ptr_cmp function 2020-10-24 14:16:32 +03:00
Nekotekina
10caa2981f Improve raw_notify a bit 2020-10-24 14:16:32 +03:00
Eladash
49610f52f5 SPU: Save LS capture executable in one segment 2020-10-24 14:13:19 +03:00
Megamouse
27643cb715 HLE: improve cellHddGameCheck 2020-10-24 00:26:41 +03:00
Megamouse
fe3c7926f7 Qt: add custom game icons
This shouldn't interfere with emulation as replacing actual files would
2020-10-23 23:13:22 +02:00
Eladash
552d8e6aec Debugger: Fix SignedHex
It didnt take into account INTx_MIN. (UB for std::abs)
2020-10-23 13:13:04 +03:00
Eladash
0bb3609cad Debugger: Simplify thread pause state change 2020-10-23 13:13:04 +03:00
Eladash
b56bc7e087 SPU: cleanup channels logging 2020-10-23 13:13:04 +03:00