Nekotekina
dea8aa675a
Optimize cpu check_state() a bit
...
Move cpu_flag::dbg_pause check from the start.
To the moment before it actually goes to sleep.
2020-11-04 14:59:25 +03:00
Megamouse
027eba2b59
Add Quadro to fast version of VK get_driver_vendor
2020-11-04 12:13:56 +01:00
Megamouse
91b8e7504e
Set some things to log level always
2020-11-04 12:13:56 +01:00
Nekotekina
1b8bf081b5
Upgrade to LLVM 11 Stable
2020-11-02 21:23:25 +03:00
Nekotekina
06ecc2ae68
vm::range_lock cleanup and minor optimization
...
Removed unused arg.
Linearized some branches.
2020-11-01 23:29:33 +03:00
Nekotekina
46d3066c62
Optimize vm::range_lock
...
Only test address on `range_locked`
Don't check current transaction
Remove vm::clear_range_locks completely
2020-11-01 16:46:06 +03:00
Nekotekina
8d12816001
TSX: fix transaction limit settings
2020-11-01 14:58:04 +03:00
Nekotekina
fe03b55046
TSX: tiny optimization of transaction functions
...
Because new memory manager puts them in first 2G.
2020-11-01 14:44:59 +03:00
Nekotekina
ca57f25f26
Fix vm::page_protect and range flags
...
Should fix assertion in vm.cpp
Minor refactoring of internal locking
2020-11-01 02:30:10 +03:00
Eladash
3c639ff8e1
SPU: Fix Accurate DMA edge case
2020-11-01 00:35:48 +03:00
Nekotekina
78c986b5dd
Improve vm::range_lock
...
Not sure how it ever worked
Clear redundant vm::clear_range_lock usage
2020-10-31 23:53:14 +03:00
Megamouse
36149fd986
overlays: kinda fix performance graph margins ( #9181 )
2020-10-31 16:32:31 +00:00
Eladash
c2c559f8d9
Disasm: do not allow to access previous instructions in non-interpreter mode
2020-10-31 17:15:47 +03:00
Eladash
5e8419af0d
SPU Debugger: SHUFB insertion patterns
2020-10-31 17:15:47 +03:00
Nekotekina
86fc842c89
TSX: new fallback method (time-based)
...
Basically, using timestamp counter.
Rewritten vm::reservation_op with the same principle.
Rewritten another transaction helper.
Add two new settings for configuring fallbacks.
Two limits are specified in nanoseconds (first and second).
Fix PUTLLC reload logic (prevent reusing garbage).
2020-10-31 15:34:14 +03:00
Nekotekina
80530e8aef
vm: rename g_addr_lock to g_range_lock
...
Reduce size to 29 bits and use 3 bits to communicate some information.
This information can be used to to a very cheap lock-free access tests.
2020-10-31 15:08:49 +03:00
Nekotekina
ba26e16411
Rename vm::reservation_light_op -> light_op
...
Rename vm::reservation_peek_op -> peek_op
Also remove overkill assertion for cpu_flag::temp.
2020-10-31 15:08:49 +03:00
Megamouse
2cee26c3e7
Cleanup some includes
2020-10-31 11:53:46 +01:00
Megamouse
5d55e509ec
cellSubDisplay: Add some constants ( #9178 )
2020-10-31 01:40:38 +00:00
Megamouse
4984e87776
implement interception for cellKb and cellMouse
...
this needs to be tested
2020-10-31 02:11:27 +03:00
Megamouse
c65b7d0aea
HLE: Add some constants
2020-10-31 02:11:27 +03:00
Megamouse
54fd224fd8
Add License Area Setting
2020-10-31 02:10:30 +03:00
Eladash
b5014d56ab
rsx: Fix transform contants load
2020-10-31 02:08:03 +03:00
Nekotekina
c4e89f8bb4
Actually start rsx replay thread
2020-10-30 22:25:33 +03:00
Nekotekina
7dd85b207f
vm: optimize range lock slot allocations
...
Doesn't seem to need a barrier.
2020-10-30 22:20:20 +03:00
Nekotekina
cb0431d960
sys_fs/sys_usbd: add cpu_flag::wait
2020-10-30 20:14:32 +03:00
Nekotekina
58adb6a1aa
sys_ppu_thread: add cpu_flag::wait
2020-10-30 18:27:15 +03:00
Nekotekina
13c564f2af
sys_memory: add cpu_flag::wait
2020-10-30 18:09:30 +03:00
Nekotekina
95aeebe4b5
sys_rsx: add cpu_flag::wait
2020-10-30 18:00:25 +03:00
Nekotekina
605d57c541
sys_event: cleanup (replace vm::temporary_unlock)
...
Also made minor changes in sys_rsx.cpp.
Removed unused exception std headers.
2020-10-30 17:49:07 +03:00
Nekotekina
f972fa26a4
Derive RSX Replay thread from cpu_thread
...
Its id is set to 0, so fix some id_type() usages.
2020-10-30 17:36:11 +03:00
Nekotekina
150e18539c
Allow cpu_thread& arg passed to the syscalls
...
Minor cleanup. cpu_mem(), cpu_unmem() removed.
2020-10-30 17:03:32 +03:00
Eladash
f03d4cf8fd
PPU: Optimize reservation load for success
2020-10-30 10:49:47 +02:00
Nekotekina
3419d15878
vm: add extern clear_range_locks function
...
Allows to wait for range locks to clear for specified range.
vm::range_lock now monitors specified reservation lock as well.
2020-10-30 07:58:16 +03:00
Nekotekina
0da24f21d6
CPU: improve cpu_thread::suspend_all for cache efficiency (TSX)
...
Add prefetch hint list parameter.
Workloads may be executed by another thread on another CPU core.
It means they may benefit from directly prefetching the data as hinted.
Also implement mov_rdata_nt, for "streaming" data from such workloads.
2020-10-30 05:22:09 +03:00
Nekotekina
e794109a67
perf_meter.hpp: fix double rdtsc bug, add restart() method
2020-10-30 03:19:13 +03:00
Nekotekina
006c783aba
SPU: make do_dma_transfer() static with _this arg
...
Instead of this, nullptr will be passed from another thread.
MMIO via MMIO is disabled if it even possible.
2020-10-30 02:58:39 +03:00
Nekotekina
4378a09867
PPU: reload old data on STCX failure
...
In 128-byte reservation mode, it can reload the whole cache line.
2020-10-30 02:58:39 +03:00
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
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
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
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
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
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
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
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
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
b56bc7e087
SPU: cleanup channels logging
2020-10-23 13:13:04 +03:00
Eladash
abcf265bc7
SPU Debugger: Implement basic instructions's constants propagation
...
Only functional in WRCH and ILHU+IOHL pattern atm.
ILHU+IOHL is extremely common pattern to create 32-bit constants such as SPPU libraries error codes.
2020-10-23 13:13:04 +03:00
Eladash
e70f430b5a
SPU Debugger: Add made-up MR mnemonic
2020-10-23 13:13:04 +03:00
Eladash
b998852385
LV2: cleanup syscall table ( #9106 )
...
Remove old ppu_get_syscall_name from PPUFunction.cpp for deduplication.
2020-10-21 10:04:34 +03:00
Nekotekina
306593a0c5
Revert "atomic.cpp: fixup for WaitOnAddress path"
...
This reverts commit 3b8bce1bed .
2020-10-21 09:54:22 +03:00
Nekotekina
3b8bce1bed
atomic.cpp: fixup for WaitOnAddress path
...
Also fix wait quantum.
2020-10-21 08:18:27 +03:00
Nekotekina
f0fd7e2e19
Atomics: use WaitOnAddress if available (Win8+)
2020-10-21 00:22:08 +03:00
Nekotekina
4384ae15b4
Improve vm::reservation_op
...
Remove XABORT, sync status handling with SPU/PPU transaction.
Limit max number of transaction attempts in loop.
Add Ack template parameter, as in vm::reservation_light_op.
Remove utils::tx_abort, improve utils::tx_start as well.
2020-10-20 09:10:21 +03:00
Nekotekina
dc8252bb9f
Remove XABORT in PPU/SPU transactions.
...
It's expensive for unknown reason. Simply XEND is usually much cheaper.
Add some minor improvements. Use g_sudo_addr.
2020-10-20 09:10:21 +03:00
Nekotekina
ea8e435b32
Fixup for perf_meter.hpp
...
Don't try to push reports if they are empty.
2020-10-19 21:25:42 +03:00
Nekotekina
72d1ac22aa
SPU: report too many PUTLLC attempts (TSX)
...
Mirrored to PPU STCX code and PUTLLUC (STORE128).
2020-10-19 19:41:28 +03:00
Nekotekina
8ce5392390
TSX: add prefetchw instruction in transaction code
2020-10-19 19:41:28 +03:00
Nekotekina
311682b341
SPU: fix GETLLAR regression
...
Misplaced mov_rdata
2020-10-19 19:41:28 +03:00
Nekotekina
a5eb11d79f
Improve cpu_thread::suspend_all (TSX-FA)
...
Add prefetching of cpu->state fields.
2020-10-19 19:41:28 +03:00
Nekotekina
120849c734
Implement perf stat counter for PPU/SPU reservation ops
...
Adds Emu/perf_meter.hpp header file.
Uses RDTSC for speed.
Prints stats at exit.
2020-10-19 19:41:28 +03:00
Nekotekina
adf50b7c4b
Implement cpu_thread::if_suspended
...
Use it for opportunistic guaranteed GETLLAR execution (TSX-FA).
2020-10-18 20:10:48 +03:00
Nekotekina
f5c575961f
Implement priorities for cpu_thread::suspend_all tasks
...
Give PUTLLUC increased priority.
2020-10-18 20:10:48 +03:00
kd-11
a90801e2aa
vk: Add VK_FORMAT_D32_SFLOAT to format conversion table
...
- This format is required to emulate RSX_FORMAT_CLASS_D16_FLOAT
2020-10-18 19:30:40 +03:00
Eladash
402e8b12a6
SPU: Touch unmapoed memory in reservation mismatch
2020-10-18 11:42:54 +03:00
Eladash
701f7f39d6
Improve SPURS debugger ( #9090 )
2020-10-18 11:07:01 +03:00
Eladash
6590366f8e
PPU Debugger: fix typo in STDX
2020-10-17 22:00:22 +03:00
Eladash
fa0b02ed30
PPU Debugger: Improve move from/to CR registers instructions
2020-10-17 22:00:22 +03:00
Nekotekina
d0057c92e4
Fix spu_putlluc_tx (insignificant)
2020-10-17 21:27:19 +03:00
Nekotekina
4078f43984
Fix ppu_stcx_accurate_tx (operand size mismatch)
2020-10-17 21:26:17 +03:00
RipleyTom
9e14d240a8
Implement ethernet address determination
2020-10-16 22:53:48 +03:00
RipleyTom
1393bb2caf
Fix getsockname on windows for unbound sockets
2020-10-16 22:53:48 +03:00
RipleyTom
e9914f3004
Add sys_net error for EISCONN
2020-10-16 22:53:48 +03:00
RipleyTom
073772a801
Fixes setsockopt
2020-10-16 22:53:48 +03:00
RipleyTom
2babe4c236
Add better handling of RTT for STREAM_P2P
2020-10-16 22:53:48 +03:00