Nekotekina
22a24446c1
Threads: fix minor race
...
Has already been in "fixed" state in past...
2020-11-26 20:11:26 +03:00
Nekotekina
b5d498ffda
Homebrew atomic_ptr rewritten (util/shared_ptr.hpp)
...
It's analogous to C++20 atomic std::shared_ptr
The following things brought into global namespace:
single_ptr
shared_ptr
atomic_ptr
make_single
2020-11-26 20:11:26 +03:00
Nekotekina
bd90e3e37f
atomic.cpp: shrink and simplify main hashtable
...
Reduce collision detection to 1 or 0 for now.
I think it should be offloaded to notifiers.
2020-11-26 20:11:26 +03:00
Nekotekina
8b6d615aa6
atomic.hpp: remove/deprecate incomplete notify features
...
Notification with "phantom value" could be useful in theory.
As an alternative way of sending signal from the notifier.
But current implementation is just useless.
Also fixed slow_mutex (not used anywhere).
2020-11-26 06:31:36 +03:00
Megamouse
9e352da052
Handle some undefined behavior regarding null pads
2020-11-26 00:45:49 +01:00
Nekotekina
ca9898e838
JIT: increase likeliness of allocating 2M large pages
...
On top of enabled transparent hugepages hint (Linux).
2020-11-25 10:41:17 +03:00
Nekotekina
95b8467a76
perf_meter.hpp: move logic to noinline function
...
May improve performance if perf meter is disabled.
2020-11-25 10:41:17 +03:00
Nekotekina
2b674d4d8c
utils::shm: allow 2M hugepages on demand
2020-11-25 10:41:17 +03:00
Nekotekina
487b572aa6
Linux: remove assertions on MADV_HUGEPAGE
...
It's a hint and is allowed to fail.
2020-11-25 10:41:17 +03:00
Nekotekina
600c0ea5ba
atomic.cpp: fix windows/std path
...
Always check condition after rearming internal semaphore.
2020-11-25 10:41:17 +03:00
Nekotekina
00e64920c8
Implement "slow mutex" without spin-waiting.
...
Benefits: only 1 byte.
Testing atomic wait.
2020-11-25 10:41:17 +03:00
Megamouse
9efedbe76a
Minor changes related to Emu.Stop()
2020-11-25 00:11:07 +01:00
Nekotekina
d8e9382573
asm.hpp: constexpr refactoring
...
Removed asm (what an irony), made many functions constexpr.
Removed some unused function, readding them should be trivial.
2020-11-24 13:20:40 +03:00
Nekotekina
ab248e170c
vm_native.cpp: add MADV_HUGEPAGE
...
It enables Transparend Huge Pages for some regions on Linux.
Although it can't be actively useful, it seems to do something.
Maybe it's even harmful for recompilers.
2020-11-24 12:31:11 +03:00
Nekotekina
27097cbcfe
atomic.hpp: alter atomic_storage<>::store a bit
...
Always fallback to exchange. May improve codegen on gcc.
2020-11-24 12:31:11 +03:00
Nekotekina
43952e18e2
Implement prefetch_write() and prefetch_exec() wrappers
...
Do some refactoring to prefetch_read() in util/asm.hpp as well.
Make all these function constexpr because they are no-ops.
2020-11-24 12:31:11 +03:00
Megamouse
5076da8f77
Fix auto exit
...
- Don't quit on stop if force boot was set
- Don't stop the emulator on gs_frame close when it was already stopped. This would remove the force boot flag by mistake.
2020-11-24 11:17:03 +03:00
kd-11
8228a4adcd
gl: Disable depth test before rendering text to the backbuffer which does have a Z buffer
2020-11-24 11:10:43 +03:00
Nekotekina
721883f64e
Azure: attempt to produce clang artifact
2020-11-24 08:11:45 +03:00
Nekotekina
b55c759f71
Remove any mentions of scam CI
2020-11-24 08:11:45 +03:00
Eladash
3f028fbb83
Fix SPU LS MMIO
2020-11-24 03:44:30 +03:00
Nekotekina
f0cba1371c
vm: adjustments
...
Increase max range lock size (less than 512 MiB)
Remove "range_executable" flag, make it reserved.
2020-11-24 01:09:04 +03:00
Nekotekina
14fa96fdef
atomic.cpp: don't use empty notify callback
...
Instead, allow setting it to null and check for null.
Similar could be done for wait cb, but it's set for all named threads.
2020-11-24 01:09:04 +03:00
Nekotekina
b954a41f2a
Threads: minor simplification
2020-11-24 01:09:04 +03:00
kd-11
f1c65dcefc
vk: Improve support for RDNA
...
- Add support for RDNA2
- Add RDNA MSAA workaround
2020-11-23 19:20:00 +03:00
Nekotekina
d4c17ecda5
Simplify communication with thread pool
...
Add "entry_point" member to "thread_base".
Don't use "m_thread" to exchange values.
2020-11-23 11:32:34 +03:00
Nekotekina
a4458e2c8c
Clean thread pool at exit.
...
Execute TLS destructors.
Test atomic wait list.
2020-11-23 10:20:42 +03:00
Nekotekina
16cc88dd0e
atomic.hpp: fix atomic_wait::list regression
...
Typo-regressions. Also improve static asserts.
2020-11-23 09:26:25 +03:00
Nekotekina
280f5f0b54
atomic.hpp: redefine op::ne to actually mean "not equal"
...
WTF is "native endianness", it's native by default.
2020-11-23 09:24:16 +03:00
Nekotekina
e38eaa7cd7
Remove old travis badge (kill it with fire)
2020-11-23 09:22:51 +03:00
Zion Nimchuk
a27bd2275c
Pushing master AppImage Artifacts to GitHub Releases via Azure
2020-11-23 06:50:27 +03:00
Nekotekina
7d00c69a4f
Attempt 2: Try to make Azure push linux builds
2020-11-22 19:24:54 +03:00
Nekotekina
a2c189b45a
Azure: try to deploy GCC artifact (upload to github)
2020-11-22 18:29:46 +03:00
Nekotekina
41320688b7
Removed .travis.yml
...
Non-functional CI
2020-11-22 17:03:35 +03:00
Nekotekina
f85c8584b0
Attempt to fix #9316
2020-11-22 12:57:50 +03:00
Nekotekina
6cf50f8f6c
Second attempt to fix hanging RPCS3 process
...
Now fix exit logic a bit.
Remove Init() call from Stop().
Remove Stop() call from Quit().
2020-11-22 12:45:19 +03:00
Nekotekina
d70ab11477
atomic.cpp: remove redundant constexpr
...
Static initialization is all-zeros anyway.
But constexpr was killing my intellisense.
And probably also affected compile time.
Also make some internal structures hidden ("static").
2020-11-22 12:07:49 +03:00
kd-11
cab4c78b7b
rsx: Some shader compiler threads tuning
...
- Allow more threads for wide CPUs
- Simplify 'auto' selection a bit
2020-11-21 20:43:15 +03:00
kd-11
14358d5e84
qt: Add shader compiler threads to GUI
2020-11-21 20:43:15 +03:00
kd-11
7553429130
gl: Thread shader source compilation dispatch
...
- glCompileShader is in itself much slower than anticipated
2020-11-21 20:43:15 +03:00
kd-11
3ddfa288cf
rsx: Use multithreaded shader compiler backend
2020-11-21 20:43:15 +03:00
Nekotekina
e89a568765
Attempt to fix Emu.Quit()
...
There was some kind of "initialization order fiasco" of g_fxo.
Not only should it be used after main, but also destroyed before exit.
2020-11-21 18:27:16 +03:00
Nekotekina
71f1021648
Fix thread pool entry point and get_cycles()
...
Fix possible race between thread handle availability.
Don't treat zero thread as invalid one.
Now entry point is full is assembly.
Attempt to fix #9282
Also fix some TLS.
2020-11-21 17:18:42 +03:00
Nekotekina
60cff6f3d4
Attempt to fix #9271
2020-11-21 07:09:48 +03:00
Nekotekina
5f010c2f4c
atomic.cpp: optimize "cond" allocation with TLS
...
Billions of events can reduce to thousands, saving CPU time a few s.
Only 4 slots are available (arbitrarily), and only 1 is usually used.
Other slots are used only for waiting on multiple atomics.
2020-11-20 19:13:22 +03:00
Nekotekina
c0f3d1f06d
Basic constexpr support for u128 (MSVC)
...
Added explicit conversion op to u64.
Added constexpr path for +,-,>>,<< ops.
Make almost all methods constexpr.
Removed a lot of redundancy.
2020-11-20 15:04:17 +03:00
Nekotekina
6c18e00977
atomic.cpp: use deterministic "cond" allocation
...
Takes ~80 ns instead of ~40 ns, same about deallocation.
Loops don't exist here, only 4-level semaphore tree.
Worst case only happens with concurrence, not from looping.
This optimization is not really necessary at current state of RPCS3.
This is more like to test C++ compilers and MSVC u128 implementation.
2020-11-20 15:04:17 +03:00
Nekotekina
72ac1aa537
atomic.cpp: use some actual hash for hashtable (std::minstd_rand)
...
Should only take about 5ns for initialization.
Should also make collisions almost impossible.
I also suspect I fixed some bad bug in process...
2020-11-20 15:04:17 +03:00
Nekotekina
5bcaa25c02
CPU: remove descheduled threads from suspend_all list
2020-11-20 13:53:34 +03:00
Eladash
85880ffded
SPU: Log STOP full opcode ( #9292 )
...
Co-authored-by: Ani <ani-leo@outlook.com>
2020-11-20 13:53:16 +03:00