kd-11
2275259bf5
rsx: Properly scale overlay passes to match drawable area
2019-09-28 13:24:14 +03:00
Nekotekina
50fc5dfde5
Use g_fxo for rsx::rsx_replay_thread
2019-09-26 23:26:36 +03:00
Megamouse
4594148409
Input: move some pad handler logic to the parent class
2019-09-24 21:09:24 +02:00
Nekotekina
8f47f9517a
Fix fs::create_path
...
Don't try to create already existing parents
2019-09-24 16:18:28 +03:00
Nekotekina
aa8a7b3e8a
Make errors in Emu::Init verbose and don't crash
...
Allow TTY.log to be disabled if file access failed
Add fs::error::isdir
2019-09-24 05:01:00 +03:00
Nekotekina
9710473a2e
atomic.hpp: use native semaphores on Windows
...
Windows: drop keyed events
Linux: keep using native futex
Implement unused POSIX semaphore path
Implement fallback semaphore with pure std (OSX, BSD, etc)
2019-09-24 05:01:00 +03:00
Nekotekina
feee3838eb
Revert "Revert "Remove shared_cond and simplify reservation waiting""
...
This reverts commit b70c08a2e8 .
2019-09-24 05:01:00 +03:00
Nekotekina
3121fecc8f
cond_variable: fix warning in cond.h for MSVC
2019-09-21 03:59:43 +03:00
Nekotekina
a797b350a0
Improve strcpy_trunc
...
Zero all remaining array
2019-09-21 03:59:43 +03:00
Nekotekina
3092914527
typeindices.hpp: add typeindex() helper
2019-09-19 02:16:14 +03:00
Nekotekina
c7bf6421f4
typeindices.hpp: rename typeinfo_v to typelist_v
2019-09-19 02:16:14 +03:00
Nekotekina
75941e62a8
named_thread: implement default thread name support
2019-09-17 02:46:34 +03:00
Nekotekina
b70c08a2e8
Revert "Remove shared_cond and simplify reservation waiting"
...
This reverts commit 0a96497e13 .
2019-09-14 00:02:48 +03:00
Nekotekina
c9170bbb88
Fix lf_queue::wait
...
Remove incorrect loop
2019-09-13 23:52:18 +03:00
Nekotekina
c1b0934f72
Simplify thread_base::join()
...
Use waitable atomics
2019-09-10 19:25:39 +03:00
Nekotekina
0a96497e13
Remove shared_cond and simplify reservation waiting
...
Use atomic wait for reservations
Cleanup some obsolete code
2019-09-10 19:25:39 +03:00
Nekotekina
d13ff285d1
Rewrite cond_variable to use waitable atomics
...
Increase max_timeout and fix max_timeout usage
2019-09-10 19:25:39 +03:00
Nekotekina
92a75cfa80
Remove unique_cond
...
Not very useful.
2019-09-10 19:25:39 +03:00
Nekotekina
a45f86a4a2
Remove notifier class
...
Poorly implemented condition variable.
2019-09-10 19:25:39 +03:00
Nekotekina
b91661ae71
Remove timeout support from lf_queue::wait
...
Add notify method and use atomic wait
2019-09-10 19:25:39 +03:00
Nekotekina
faba366f89
named_thread: install atomic wait callback
2019-09-10 18:48:46 +03:00
Jan Beich
53e7f6c5a5
Thread: drop is_leaf_function after 5e3bacbd9b
2019-09-10 17:41:15 +03:00
Nekotekina
aaf1b4c668
Fix gcc warning in bit_cast
2019-09-08 19:27:29 +03:00
Kaiwen Xu
68071ddf83
Convert EROFS error
2019-09-05 23:05:30 +03:00
RipleyTom
6bdab5322c
Revert File.h encoding.
2019-09-03 08:46:50 +02:00
isJuhn
08c12f4c00
File.cpp: add rounding_alignment argument to get_dir_size to allow GetSizeKB functions to report size more accurately
2019-09-03 03:19:49 +03:00
Nekotekina
81a110f346
Fix system time wraparound
...
Implement utils::udiv128, utils::div128
2019-08-30 22:02:25 +03:00
Nekotekina
2740fafa64
Use g_fxo for page_fault_notification_entries
2019-08-22 02:13:39 +03:00
Nekotekina
a85a8796d3
Use g_fxo for page_fault_event_entries
2019-08-22 02:13:39 +03:00
Nekotekina
7a3aa02dc1
StrFmt.h: remove some dead code with UB
...
Global variable is unused but written concurrently.
2019-08-22 02:13:39 +03:00
Eladash
960c8e6538
Partial compilation fix for WTH_GDB build
2019-08-18 04:01:16 +03:00
Nekotekina
11a43e25d7
typeindices.hpp - start index from 0
...
Starting it from 1 makes it more error-prone to use.
2019-08-17 23:40:51 +03:00
Nekotekina
4df1c16099
Implement stx::typeinfo_v (util/typeindices.hpp)
...
Move and generalize logic from typemap.h
2019-08-14 21:04:25 +03:00
Nekotekina
9f9309055f
typemap: remove "shared" type support
...
Need to fix design mistakes of putting too much into the same bag.
2019-08-14 20:28:34 +03:00
Nekotekina
d41d7b5e24
typemap: remove "polymorphic" type support
...
Unnecessary complexity
2019-08-14 20:28:34 +03:00
Nekotekina
f8f3067deb
Always check page_allocated in vm::check_addr
2019-08-14 20:28:34 +03:00
Nekotekina
4f22559ff0
Remove dumb overloads of atomic_op, fetch_op
...
And lf_queue::apply.
Fix inlining problem by passing F by value.
2019-08-14 20:28:34 +03:00
RipleyTom
87bf0386c4
Screenshot function
2019-08-14 19:24:42 +02:00
Eladash
95f22b76c6
Fixup after #6329
2019-08-13 04:56:00 +03:00
Eladash
6d3fc3a386
core config: Expose min/max ranges of integral settings and use it
2019-08-13 04:56:00 +03:00
Eladash
d48d424b19
Return immediatly from fs::remove_all on failure to remove entries
...
This way error code will be reflected properly
2019-08-12 14:37:23 +03:00
Eladash
25e47e0de0
Fix vm::check_addr memory state check
2019-08-10 19:47:37 +03:00
Nekotekina
8886414013
Use atomic wait in shared_mutex and semaphore
2019-07-29 03:04:55 +03:00
Nekotekina
f63e89f9b4
Implement waitable atomics
...
Moved Atomic.h to util/atomic.hpp
List source files in CMakeLists.txt
2019-07-29 03:04:55 +03:00
Nekotekina
ec2db8edbc
Correct get_int_t to get_uint_t.
...
Add get_sint_t.
2019-07-29 00:12:07 +03:00
Eladash
997e3046e3
vm/sys_overlay Improvements
...
- Implement sys_overlay_load_module_by_fd.
- Implement special segment allocation when ppc_seg flag is specified.
2019-07-28 14:23:58 +03:00
Nekotekina
090c71aa7c
TSX: Improve cpu_thread::suspend_all implementation
...
Implement low_lock and vip_lock (for shared_mutex).
Try to simplify suspend_all implementation with updated shared_mutex.
2019-07-24 17:25:52 +03:00
Zangetsu38
a98a2b79d0
thread scheduler: Add scheduler for zen2 and refactor for zen(+).
2019-07-21 23:02:11 +03:00
Nekotekina
4e4c896136
Expand thread affinity mask to u64
...
Also fix and note __APPLE__ path.
2019-07-20 15:58:28 +03:00
Nekotekina
c062000288
Add experimental TSC frequency detection
2019-07-15 17:20:12 +03:00
Eladash
c727760537
Fix g_exec_addr addres check for access violations
2019-07-13 16:59:58 +03:00
Eladash
537d3f2548
Log last function on debug pause or exception, dump cpu_thread state on access violation
2019-07-10 17:35:39 +03:00
eladash
0979207cc6
Log currently PPU HLE function executed after access violation
...
old functionality retrieved
2019-07-10 17:35:39 +03:00
Eladash
9d9e158b9a
Make more use of the new get_int_t
2019-07-09 11:52:34 +03:00
Eladash
d57b4dc8f3
rsx: Refactor rsx_decode.h and bugfixes
2019-07-09 11:52:34 +03:00
Nekotekina
db4bc6f6be
Add RESTRICT macro
...
Applied as C keyword 'restrict'
2019-07-08 19:43:16 +03:00
msuih
503e023815
Explicitly downcast integers
2019-07-01 04:33:23 +03:00
msuih
d57124d075
Explicitly cast size_t to integer types
2019-07-01 04:33:23 +03:00
Eladash
1ee7b91646
Refactoring ( #6143 )
...
Prefer vm::ptr<>::ptr over vm::get_addr.
Prefer vm::_ptr/base over vm::g_base_addr with offset.
Added methods atomic_t<>::bts and atomic_t<>::btr .
Removed obsolute rsx:🧵 :Read/WriteIO32 methods.
Removed wrong check in semaphore_release.
Added handling for PUTRx commands for RawSPU MFC proxy.
Prefer overloaded methods of v128 instead of _mm_... in VPKSHUS ppu interpreter precise.
Fixed more potential overflows that may result in wrong behaviour.
Added io/size alignment check for sys_rsx_context_iounmap.
Added rsx::constants::local_mem_base which represents RSX local memory base address.
Removed obsolute rsx:🧵 :main_mem_addr/ioSize/ioAddress members.
2019-06-29 01:27:49 +03:00
JohnHolmesII
232a35b6fc
Various small warning fixes
...
-Indentation warnings
-prevent shift overflow
-This was declared extern in all contexts. Remove this for initialization
-Fix main return types. OH CANADA!
-Silence extraneos 'unused expression' warning
-Force use return value (warning)
-Remove tautological compare copy-pasta (char always < 256)
2019-06-28 01:45:29 +03:00
JohnHolmesII
d0eae7bab1
Fix -Wsign-compare a little bit
...
Explicitly mark loop types (per review)
2019-06-28 01:45:29 +03:00
JohnHolmesII
be521ff0ab
Fix warnings related to parentheses
2019-06-25 20:36:32 -07:00
Lassi Hämäläinen
e9e87b8bd9
Add missing #includes to header files
...
- Multiple header files where missing #includes to other headers that
where used in the header. Correct header was included in correct
order in source files which caused everything to compile.
- Added missing #includes so header files correctly include all their
dependencies and fixes problems with IDEs being unable to parse
headers correctly due to missing symbols
2019-06-25 17:11:10 +03:00
Eladash
cd0ef99df5
Fix BE endianess arch support in semaphore_406e ( #6116 )
...
Add raw() methods for endianness support types and make use of it.
2019-06-21 19:29:49 +03:00
Nekotekina
5d45a3e47d
Implement cpu_thread::suspend_all
...
Remove Accurate PUTLLC option.
Implement fallback path for SPU transactions.
2019-06-19 20:36:12 +03:00
Rui Pinheiro
b94730fa95
Fix dynamic_library::loaded
2019-06-16 21:31:38 +03:00
kd-11
0d906d6974
rsx: Remove surface aa_mode hacks
2019-06-14 16:19:52 +03:00
scribam
497f0c26e7
utilities: Add constexpr to color4_base
...
For consistency with the others colorX_base
2019-06-12 10:59:31 +01:00
Eladash
d6db61c594
misc atomics: Use std::atomic_thread_fence (MSVC)
2019-06-11 12:18:04 +03:00
Nekotekina
1dedeb37bf
Fix lf_queue_base::wait
...
Add missing state change
2019-06-05 15:51:25 +03:00
Nekotekina
b2e08100ff
Fix sad bug
2019-06-04 19:13:30 +03:00
Nekotekina
9dc0368079
Rename cond_x16 to shared_cond
...
Extend capacity from 16 to 32.
Remove redundant m_total counter.
2019-06-04 16:37:50 +03:00
Nekotekina
447029a700
Implement fs::file::write_gather (Vectored I/O)
2019-06-03 23:18:39 +03:00
Nekotekina
31994dd3b2
Rename cond_one to unique_cond
...
Remove redundant in_cv in cellVdec
2019-06-02 23:22:16 +03:00
Nekotekina
0333942795
Change utils::popcnt16 to popcnt32
...
Use __builtin_popcount if available.
2019-06-02 23:22:16 +03:00
Nekotekina
dfd50d0185
Implement std::bit_cast<>
...
Partial implementation of std::bit_cast from C++20.
Also fix most strict-aliasing rule break warnings (gcc).
2019-06-02 23:22:16 +03:00
scribam
790962425c
Fix some "-Wpedantic" warnings
2019-06-01 22:59:23 +03:00
scribam
09c9996f31
Use empty() instead of comparing size() with 0
...
Recommendation from Clang-Tidy: https://clang.llvm.org/extra/clang-tidy/checks/readability-container-size-empty.html
2019-06-01 22:59:23 +03:00
Malcolm Jestadt
f90f68d129
Detect tsx_force_abort presence and print to log
2019-06-01 17:46:57 +03:00
Nekotekina
71b71537a0
SPU TSX: implement Accurate PUTLLC option
...
Allow spurious PUTLLC failure if disabled (default).
2019-05-25 22:23:23 +03:00
Nekotekina
a6cde36dc4
Link LLVMAsmParser library
2019-05-19 17:46:55 +03:00
scribam
786dc6ef40
Use if constexpr in hash_struct function
2019-05-12 18:32:11 +03:00
scribam
6c5ea068c9
Remove redundant semicolons
...
Fix "-Wextra-semi" warnings
2019-05-12 18:32:11 +03:00
Nekotekina
5d33d9a3d9
Enable most warnings in GCC
2019-05-11 02:13:19 +03:00
Nekotekina
7492f335e9
SPU analyser: basic function detection in Giga mode
...
Misc: fix EH frame registration (LLVM, non-Windows).
Misc: constant-folding bitcast (cpu_translator).
Misc: add syntax for LLVM arrays (cpu_translator).
Misc: use function names for proper linkage (SPU LLVM).
Changed function search and verification in Giga mode.
Basic stack frame layout analysis.
Function detection in Giga mode.
Basic use of new information in SPU LLVM.
Fixed jump table compilation in SPU LLVM.
Disable broken optimization in Accurate xfloat mode.
Make compiled SPU modules position-independent in SPU LLVM.
Optimizations include but not limited to:
* Compiling SPU functions as native functions when eligible
* Avoiding register context write-out
* Aligned stack assumption (CWD alike instruction)
2019-05-11 02:13:19 +03:00
msuih
be6d9af1ab
Print OS info to log
...
Credit to @maximilian578 for help
2019-04-25 20:20:37 +03:00
Megamouse
b929c13c45
implement get_firmware_version
...
add firmware version to the first line in the log
2019-04-16 22:13:28 +02:00
Nekotekina
e064b92058
mutex.h: fix warning (unary minus unsigned)
2019-04-13 22:56:11 +03:00
Nekotekina
d52df9352c
fs::rename, use renameat2 on Linux
2019-04-13 22:56:11 +03:00
Nekotekina
0736fc8b28
Add fs::file::set_delete
2019-04-10 13:58:12 +03:00
Nekotekina
a54d9c527f
Simplify fs::file::get_handle
...
Via fs::file_base::get_native_handle method
2019-04-10 13:58:12 +03:00
eladash
a3f65084df
Fix sys_process_exit2 when SPUs are at av handler
2019-03-31 14:57:21 +03:00
eladash
16f86b2458
Fix page fault area range check
...
Range end check was bugged (always true), also rewrite it so vm::get would be called only once
2019-03-31 14:57:21 +03:00
Nekotekina
d873802b9c
Use LLVM 9
...
Use new add/sub with saturation intrinsics
2019-03-30 01:36:48 +03:00
Nekotekina
4b381fbbb1
Implement spu_runtime::reset
...
To handle JIT: Out Of Memory error.
2019-03-23 02:43:41 +03:00
Nekotekina
849411693a
PPU LLVM: add MemoryManager3
...
For temporary allocations.
Add flags in jit_compiler constructor.
2019-03-23 02:43:41 +03:00
Jan Beich
1a13d3ae4e
OpenBSD doesn't have mcontext_t
...
`<signal.h>` provides `typedef struct sigcontext ucontext_t`
2019-03-19 22:24:49 +03:00
kd-11
bb65e45614
rsx: Implement GPU acceleration for rotated images
2019-03-17 21:50:11 +03:00
RipleyTom
980c3d6fe8
Fix lf_queue destructor
2019-03-13 15:59:13 +03:00
Nekotekina
eae5b9e049
Rewrite mulh64/umulh64
...
Use __int128_t/__uint128_t idioms on GCC/Clang.
May result in better codegen by avoiding inline asm.
2019-03-13 00:16:43 +03:00
eladash
4a28319edf
Implement SPU page faults notifications
...
* Implement both RawSPU and threaded SPU page fault recovery
* Guard page_fault_notification_entries access with a mutex
* Add missing lock in sys_ppu_thread_recover_page_fault/get_page_fault_context
* Fix EINVAL check in sys_ppu_thread_recover_page_fault, previously when the event was not found begin() was erased and
CELL_OK was returned.
* Fixed page fault recovery waiting logic:
- Do not rely on a single thread_ctrl notification (unsafe)
- Avoided a race where ::awake(ppu) can be called before ::sleep(ppu) therefore nop-ing out the notification
* Avoid inconsistencies with vm flags on page fault cause detection
* Fix sys_mmapper_enable_page_fault_notification EBUSY check
from RE it's allowed to register the same queue twice (on a different area) but not to enable page fault notifications twice
2019-03-12 13:28:31 +03:00
Nekotekina
efe067bfa0
LLVM: handle cascadelake CPU name
2019-03-05 21:47:34 +03:00
Nekotekina
ebb24375d1
LLVM: handle icelake-client and icelake-server CPU names
...
Correct AVX / AVX-512 disabling logic
2019-03-01 00:20:04 +03:00
Nekotekina
7f6a410770
Add dummy __has_builtin macro, use rotate builtins if possible
2019-03-01 00:08:19 +03:00
Nekotekina
9ee2867247
Improve count leading/trailing zeros implementation
...
Use x86 intrinsics if compiled with appropriate instruction support
2019-03-01 00:08:19 +03:00
Nekotekina
7b344b7654
Implement utils::refptr for typemap (with && syntax)
...
Ref-counted pointer, object is always allocated on heap.
Rvalue reference && in typemap is converted to refptr for convenience.
2019-03-01 00:08:19 +03:00
Nekotekina
6c5d9fffaa
typemap: improve pointer support
...
If stored object is a pointer, access dereferenced object directly via ->
2019-03-01 00:08:19 +03:00
eladash
25aa5f80a6
Fix access violations reporting on RSX
...
and on other threads that do not have cpu_thread handler
2019-01-30 18:44:29 +03:00
eladash
b61492ca30
Dont call std::terminate() after normal access violation handling
2019-01-30 18:44:29 +03:00
Nekotekina
f50d9cc136
Initial support for HLE in internal API
...
atomic_storage<>: add compare_exchange_hle_acq and fetch_add_hle_rel
shared_mutex: add methods (un)lock_hle and (un)lock_shared_hle
Clang: 👅
2019-01-29 04:33:59 +03:00
Nekotekina
58358e85dd
spu_runtime::add minor optimization
...
Use preallocated vectors in trampoline generation subroutine
2019-01-29 03:32:16 +03:00
Nekotekina
2b66abaf10
Implement atomic_t<>::release
...
More relaxed store with release memory order
2019-01-29 03:32:16 +03:00
Nekotekina
4292997a01
Added jit_runtime class
...
Is a memory manager for ASMJIT, replaces asmjit::JitRuntime
Unified memory manager for ASMJIT and LLVM
Unified SPU trampoline generation
Remove previous workarounds
2019-01-29 03:32:16 +03:00
Nekotekina
d5eda98e49
Fix le_t<> compilation error
...
Use memcpy for copying
2019-01-22 22:02:03 +03:00
Nekotekina
4f152ad126
SPU: multithread compilation
...
Allow parallel compilation of SPU code, both at startup and runtime
Remove 'SPU Shared Runtime' option (it became obsolete)
Refactor spu_runtime class (now is common for ASMJIT and LLVM)
Implement SPU ubertrampoline generation in raw assembly (LLVM)
Minor improvement of balanced_wait_until<> and balanced_awaken<>
Make JIT MemoryManager2 shared (global)
Fix wrong assertion in cond_variable
2019-01-22 22:02:02 +03:00
Nekotekina
a419e98acb
Move PPU and shader cache
...
New hash-based location (already used for SPU)
Bump PPU cache version, improve naming and decrease size
Remove fs::get_data_dir
Disable boot.elf cache
2019-01-14 01:24:05 +03:00
Nekotekina
81c50bad69
lf_queue: implement wait() method
...
Synchronization does not occupy additional space by reusing LSB
2019-01-13 14:45:36 +03:00
Nekotekina
ac775cd75e
Simplify gui_listener
...
Use lf_queue
2019-01-13 14:45:36 +03:00
Nekotekina
3fed4dcc5a
Remove lf_mpsc, lf_spsc
...
Not practical
2019-01-13 14:45:36 +03:00
Nekotekina
435f60d503
lf_queue: add iterator support
...
Allow range-for loop over an object returned by `pop_all()`
2019-01-13 14:45:36 +03:00
Nekotekina
bd9131ae1c
Implement fs::get_cache_dir
...
Win32: equal to config dir for now
Linux: respect XDG_CACHE_HOME if specified
OSX: possibly incomplete
2019-01-13 14:45:36 +03:00
Nekotekina
20efed66e9
Implement RPCS3_CONFIG_DIR env variable (Win32)
...
Overrides config location, should end with / or \
2019-01-13 14:45:36 +03:00
JohnHolmesII
be75a564ca
Fix builds with musl c
2018-12-30 21:31:06 +03:00
Jan Beich
33f7a39f5d
fs: implement copy_file() fallback
...
sendfile(2) on DragonFly and FreeBSD can only write into sockets.
2018-12-29 18:07:45 +03:00
msuih
dbd4814584
Disable thread assignment for Intel
2018-12-24 19:33:08 +00:00
msuih
1dd3a4b3f0
Detect hyperthreading on Windows
2018-12-24 19:33:08 +00:00
vit9696
5a40c1802b
Support macOS bundling for binary distribution
2018-12-16 18:17:21 +03:00
Nekotekina
96cabeadff
Rewrite condition variables
...
Implement helper functions balanced_wait_until and balanced_awaken
They include new path for Windows 8.1+ (WaitOnAddress)
shared_mutex, cond_variable, cond_one, cond_x16 modified to use it
Added helper function utils::popcnt16
Replace most semaphore<> with shared_mutex
2018-11-29 01:30:05 +03:00
Nekotekina
febe4d4a10
Implement class cond_x16
...
Use as reservation notifier
Limited to 16 threads but allows more precise control of contention
2018-11-26 00:23:29 +03:00
vit9696
634a5fa31c
Fix macOS compilation
2018-11-19 14:39:33 +03:00
Nekotekina
1fdd013e4b
fs: normalize atime (ensure atime >= mtime)
2018-11-17 14:40:11 +03:00
Nekotekina
c719ae360d
fs: disable ctime (return mtime instead)
2018-11-17 14:40:11 +03:00
Nekotekina
7180c1f2d0
typemap: make use of volatile qualifier
...
Use shared lock for volatile pointers
Use no lock for const volatile pointers
2018-11-09 16:19:59 +03:00
Nekotekina
6a30d5a6c1
shared_mutex: increase max_readers to 16383
...
Standard requires at least 10000 for SharedMutex concept
2018-11-09 16:19:59 +03:00
Nekotekina
6104685ad6
Implement cond_one sync primitive
...
Change futex() args to use unsigned int
2018-11-05 13:14:11 +03:00
Dennis Luxen
36d4614d12
Fix a warning that shift overflows data type width ( #5116 )
2018-10-23 18:49:01 +03:00
Nekotekina
f588454d26
Internal: register WaitOnAddress family functions (WinAPI)
2018-10-19 22:22:35 +03:00
Nekotekina
1b37e775be
Migration to named_thread<>
...
Add atomic_t<>::try_dec instead of fetch_dec_sat
Add atomic_t<>::try_inc
GDBDebugServer is broken (needs rewrite)
Removed old_thread class (former named_thread)
Removed storing/rethrowing exceptions from thread
Emu.Stop doesn't inject an exception anymore
task_stack helper class removed
thread_base simplified (no shared_from_this)
thread_ctrl::spawn simplified (creates detached thread)
Implemented overrideable thread detaching logic
Disabled cellAdec, cellDmux, cellFsAio
SPUThread renamed to spu_thread
RawSPUThread removed, spu_thread used instead
Disabled deriving from ppu_thread
Partial support for thread renaming
lv2_timer... simplified, screw it
idm/fxm: butchered support for on_stop/on_init
vm: improved allocation structure (added size)
2018-10-19 22:22:35 +03:00
Nekotekina
8ca6c9fff0
Fix thread_base::get_cycles (Linux/POSIX)
2018-10-19 22:22:35 +03:00
Megamouse
76da3fa907
RSX/Overlays: don't press buttons on every iteration
2018-10-03 21:37:05 +02:00
Nekotekina
a8a9c11bf8
typemap improvements
2018-10-02 23:26:54 +03:00
Nekotekina
f6f72c1cf8
Rename -> typemap_ptr::unlock()
2018-10-02 23:26:54 +03:00
Nekotekina
bc87c5808c
Add cond_variable::wait_unlock
2018-10-02 23:26:54 +03:00
Nekotekina
4bef0f8dab
Rename thread_abort (name conflict)
2018-10-02 23:26:54 +03:00
Nekotekina
3359e9a51b
Minor thread fixes
...
Call thread result destructor
2018-10-02 02:22:26 +03:00
Nekotekina
7a024f3355
Implement shared_mutex::lock_unlock
...
Minor fix for shared_mutex::try_lock - don't optimize for pessimistic case
2018-10-02 02:22:26 +03:00
Nekotekina
8a1b5abee1
utils::typemap implemented
...
Container for all types
2018-10-02 02:22:26 +03:00
Nekotekina
da6ce80f4f
Make vm::get_super_ptr return contiguous memory
...
Cleanup RSX code complexity
2018-09-27 23:37:13 +03:00
Nekotekina
306f95a9ae
New named_thread template (preview)
...
Old class named_thread renamed to old_thread
It's too hard to move in a single commit
2018-09-27 14:04:16 +03:00
Nekotekina
b2f29cd4d4
LLVM: remove false alarm errors
...
Writable sections ARE supported
2018-09-27 12:16:43 +03:00
Nekotekina
bb524db236
Implement utils::memory_reset
2018-09-27 12:16:43 +03:00
Nekotekina
a605dd0a3f
Add missing deleted operators
2018-09-27 12:16:43 +03:00
Nekotekina
a8a8cd88a0
Implement lf_queue<>, lf_value<>
...
lf_queue<>: unbound FIFO queue with dynamic linked-list
lf_value<>: concurrently-assignable value readable without locking at the cost of memory (using dynamic linked list)
Add atomic_t<>::compare_exchange
2018-09-27 12:16:43 +03:00
Nekotekina
9e5b633779
shared_mutex cleanup
...
Rewrite to use unsigned arithmetic, shrink to u32
Ensure zero default unlocked state (will need it later)
Inline all public methods, rewrite lock_upgrade()
Remove try_lock_degrade(), lock_degrade() methods
Implement lock_downgrade() (now trivial)
Remove is_reading(), added is_free()
Added reader_lock::try_upgrade()
2018-09-27 12:16:43 +03:00
Rui Pinheiro
8b3d1c2c91
Implement address_range utility class
2018-09-24 15:26:40 +03:00
Rui Pinheiro
a07cbaca8e
Update ASSUME, add ASSERT and AUDIT
...
- ASSUME now uses __builtin_assume in clang
- ASSERT defined as a wrapper around verify
- AUDIT aliases ASSERT when _DEBUG or _AUDIT are set, otherwise empty
2018-09-24 15:26:40 +03:00
Rui Pinheiro
13faf4e816
Avoid silent failures in RSX violation handler
2018-09-24 15:26:40 +03:00
Lassi Hämäläinen
972de4c730
CMake: Fix Linux WITHOUT_LLVM build
...
- _XABORT_RETRY is defined in immintrin.h which wasn't included
2018-09-19 21:17:01 +03:00
Nekotekina
26da91c972
Optimize logs
...
Pass va_args instead of constructing a temporary array
2018-09-19 14:14:04 +03:00
Nekotekina
11e297c975
Remove explicit in atomic_t constructor
...
Match with std::atomic
C++17 now allows writing std::atomic<int> x = 3;
2018-09-19 14:07:38 +03:00
Lassi Hämäläinen
7aef811ff7
CMake: Refactor CMake build ( #5032 )
...
* CMake: Refactor build to multiple libraries
- Refactor CMake build system by creating separate libraries for
different components
- Create interface libraries for most dependencies and add 3rdparty::*
ALIAS targets for ease of use and use them to try specifying correct
dependencies for each target
- Prefer 3rdparty:: ALIAS when linking dependencies
- Exclude xxHash subdirectory from ALL build target
- Add USE_SYSTEM_ZLIB option to select between using included ZLib and
the ZLib in CMake search path
* Add cstring include to Log.cpp
* CMake: Add 3rdparty::glew interface target
* Add Visual Studio CMakeSettings.json to gitignore
* CMake: Move building and finding LLVM to 3rdparty/llvm.cmake script
- LLVM is now built under 3rdparty/ directory in the binary directory
* CMake: Move finding Qt5 to 3rdparty/qt5.cmake script
- Script has to be included in rpcs3/CMakeLists.txt because it defines
Qt5::moc target which isn't available in that folder if it is
included in 3rdparty directory
- Set AUTOMOC and AUTOUIC properties for targets requiring them (rpcs3
and rpcs3_ui) instead of setting CMAKE_AUTOMOC and CMAKE_AUTOUIC so
those properties are not defined for all targets under rpcs3 dir
* CMake: Remove redundant code from rpcs3/CMakeLists.txt
* CMake: Add BUILD_LLVM_SUBMODULE option instead of hardcoded check
- Add BUILD_LLVM_SUBMODULE option (defaults to ON) to allow controlling
usage of the LLVM submodule.
- Move option definitions to root CMakeLists
* CMake: Remove separate Emu subtargets
- Based on discussion in pull request #5032 , I decided to combine
subtargets under Emu folder back to a single rpcs3_emu target
* CMake: Remove utilities, loader and crypto targets: merge them to Emu
- Removed separate targets and merged them into rpcs3_emu target as
recommended in pull request (#5032 ) conversations. Separating targets
probably later in a separate pull request
* Fix relative includes in pad_thread.cpp
* Fix Travis-CI cloning all submodules needlessly
2018-09-18 13:07:33 +03:00
Nekotekina
4cebf431fd
Add forgotten SAFE_BUFFERS
2018-09-17 12:18:40 +03:00
Nekotekina
9de31fc5ce
Fix trailing zeros in CPU brand
2018-09-17 12:18:40 +03:00
Nekotekina
ed8aa774bb
Optimize logging via logs::channel
...
Use constant-initialized severity subobjects instead of temporaries
2018-09-16 00:36:20 +03:00
Nekotekina
c5676e5649
Remove thread_ctrl::atexit
...
It was only a workaround for poor C++11 thread_local support
2018-09-15 17:09:56 +03:00
Nekotekina
d347145855
Fix bitset formatting
2018-09-15 17:09:56 +03:00
Nekotekina
445e5def42
Remove safe_reader_lock, safe_writer_lock
...
It worked as a simple recursive locker for shared_mutex
But its design is flawed and thus can't be fully implemented
2018-09-15 17:09:56 +03:00
Nekotekina
e8b5555630
Rewrite vfs::get and vfs::mount
...
Preprocess . and .. correctly
Don't use recursive locking
Also use std::string_view
Fix format system for std::string and std::string_view
Fix fmt::merge for std::string_view
2018-09-15 17:09:56 +03:00
Nekotekina
2226125728
atomic_t<>: remove inline assignment
...
Add atomic_op/fetch_op overloads with template argument (may be removed in future)
Remove args... in atomic_op (capturing lambda is preferred)
2018-09-09 12:59:24 +03:00
Nekotekina
fb5cdf9769
atomic_t<>: extend fetch_op to support cancellation
...
Use std::invoke inside atomic_op/fetch_op
Remove op_fetch because it's easily replaced
Add fetch_dec_sat algorithm (conditional decrement)
2018-09-08 00:32:04 +03:00
Nekotekina
ed9fb8405b
Move rotate/cntlz/cnttz helpers to Utilities/asm.h
2018-09-08 00:32:04 +03:00
Nekotekina
ee96807305
Remove explicit_bool_t, ignore, multicast<>
...
Remove vm::ptr operator %
This was a bad idea but explicit_bool_t was created almost for it
Other removed types are unused and have little to no meaning
2018-09-08 00:32:04 +03:00
Nekotekina
99ffc3fca9
Use std::invoke_result_t
...
Also simplify idm code
2018-09-08 00:32:04 +03:00
Nekotekina
d750e955c3
Use std::uncaught_exceptions()
...
Also remove wrong attributes
2018-09-08 00:32:04 +03:00
Nekotekina
ea4a3b2476
bs_t<>: add missing operators
2018-09-08 00:32:04 +03:00
scribam
549a5370d8
cleanup: remove recursive_wrapper.hpp
2018-09-06 13:15:59 +03:00
scribam
a745f02a07
cleanup: remove compatibility code for old versions of clang
2018-09-06 13:15:59 +03:00
scribam
d7bb59cd99
c++17: use std::size
2018-09-06 13:15:59 +03:00
Nekotekina
ca5158a03e
Cleanup semaphore<> (sema.h) and mutex.h (shared_mutex)
...
Remove semaphore_lock and writer_lock classes, replace with std::lock_guard
Change semaphore<> interface to Lockable (+ exotic try_unlock method)
2018-09-03 23:00:36 +03:00
Nekotekina
ce4c4696dd
Try to get rid of SIZE_32 macro
2018-09-03 21:40:36 +03:00
Nekotekina
8abe6489ed
Mega-cleanup for atomic_t<> and named bit-sets bs_t<>
...
Remove "atomic operator" classes
Remove test, test_and_set, test_and_reset, test_and_complement global functions
Simplify atomic_t<> with constexpr if, remove some garbage
Redesign bs_t<> to use class, mark its methods constexpr
Implement atomic_bs_t<> for optimizations
Remove unused __bitwise_ops concept (should be in other header anyway)
Bitsets can now be tested via safe bool conversion
2018-09-03 21:40:36 +03:00
Nekotekina
a6d06b2e20
Use fold expr in fs::write_file
2018-09-03 21:40:36 +03:00
Nekotekina
01b4c68238
Remove EXPECTS/ENSURES macro
2018-09-03 21:40:36 +03:00
Nekotekina
69f0ad0d68
Remove ALIGN_32 macro
...
It's never used in expressions like SIZE_32(T) * n, so it doesn't help to fix any warning issued due to truncation.
2018-09-03 21:40:36 +03:00
Lassi Hämäläinen
79cf2832ae
Remove Utilities/variant.hpp and use C++17 variant
...
- Remove also Utilities/variant_visitor.hpp
- Fix variant and variant_visitor usages and #includes
2018-08-31 17:49:59 +04:00
Jan Beich
cd6bf37d06
Utilities: explicitly add more includes found by GCC
...
Utilities/Log.cpp: In member function 'void logs::file_writer::log(logs::level, const char*, std::size_t)':
Utilities/Log.cpp:559:9: error: 'memcpy' is not a member of 'std'
std::memcpy(pos, text, frag);
^~~~~~
Utilities/Log.cpp:559:9: note: suggested alternative: 'empty'
std::memcpy(pos, text, frag);
^~~~~~
empty
Utilities/Log.cpp:560:9: error: 'memcpy' is not a member of 'std'
std::memcpy(m_fptr, text + frag, size - frag);
^~~~~~
Utilities/Log.cpp:560:9: note: suggested alternative: 'empty'
std::memcpy(m_fptr, text + frag, size - frag);
^~~~~~
empty
Utilities/Log.cpp:564:9: error: 'memcpy' is not a member of 'std'
std::memcpy(pos, text, size);
^~~~~~
Utilities/Log.cpp:564:9: note: suggested alternative: 'empty'
std::memcpy(pos, text, size);
^~~~~~
empty
Utilities/sync.h: In member function 'int futex(int*, int, int, const timespec*, int*, int)::futex_map::operator()(int*, int, int, const timespec*, int*, uint)':
Utilities/sync.h:110:20: error: 'find' is not a member of 'std'
map.erase(std::find(map.find(uaddr), map.end(), ref));
^~~~
Utilities/sync.h:110:20: note: suggested alternative: 'rend'
map.erase(std::find(map.find(uaddr), map.end(), ref));
^~~~
rend
2018-08-31 03:19:17 +04:00
Nekotekina
85fa0942e7
vm: allow 4k-aligned allocations for vm::stack
...
Fix utils::shm::map logic for MapViewOfFileEx
2018-08-30 14:56:45 +03:00
Dzmitry Malyshau
c452b43ebc
Basic support for Vulkan Portability on OSX
2018-08-28 21:20:11 +03:00
zarroboogs
23f5cee653
Git Revision Fix ( #5043 )
...
* fix shotrened git revision in version string
2018-08-27 22:53:45 +04:00
Nekotekina
84abb9923a
Don't use std::aligned_storage
...
Don't need its limiting behaviour anyway
2018-08-25 15:47:03 +03:00
Nekotekina
363811981d
Reintroduce LOG_CHANNEL
...
Groundwork for further improvements
2018-08-25 15:39:00 +03:00
Nekotekina
57f394e156
Fix type-safe formatting
2018-08-25 12:06:57 +03:00
Nekotekina
1c6c24f8ac
Update GSL and yaml-cpp submodules
2018-08-25 01:15:47 +03:00
Nekotekina
bb19feca96
Workaround MSVC bug
...
It fails to parse Args... in fmt::get_type_info<>()
2018-08-25 01:15:47 +03:00
Nekotekina
3aa6741b8c
Simplify error_code
2018-08-25 01:15:47 +03:00
Nekotekina
56a165ecdc
Rearrange atomic operator internals
2018-08-25 01:15:47 +03:00
Nekotekina
76bac80dde
Add MATCH macro
2018-08-24 16:44:19 +03:00
Nekotekina
6cc7d1fb26
Use std::void_t
2018-08-24 16:44:19 +03:00
kd-11
1200ca8172
rsx: Optimize hash_struct; vk cleanup
2018-08-18 16:14:30 +03:00
Nekotekina
441541a42f
Implement fs::make_gather
2018-08-14 12:46:22 +03:00
eladash
f349695a75
Rsx: rewrite address translation
2018-08-13 16:16:34 +03:00
Megamouse
d057c79733
RSX: use localtime_s instead of localtime
2018-07-28 23:10:45 +02:00
scribam
b09321354a
clang: fix compilation on 3.7
2018-07-15 12:51:09 +04:00
scribam
4babe9076b
clang: fix compilation on 3.8
2018-07-15 12:51:09 +04:00
kd-11
46abe0f315
vm: Fix memory mirror performance regression
2018-07-14 15:19:56 +03:00
kd-11
c5b2469fe7
silence warning
2018-07-12 18:02:28 +03:00
scribam
3935cef691
pugixml: update submodule and build integration
2018-06-24 02:02:36 +04:00
Nekotekina
e4da284176
SPU: analyser v4 and fixes
...
Build SPU cache after PPU, fix mixing progress
SPU ASMJIT: add support for Giga mode
SPU ASMJIT: use the same spu.log location as SPU LLVM
SPU: improve spu.log disasm
SPU: improve trampolines, unify with SPU ASMJIT
SPU: decode interrupt handler address from BR/BRA at 0x0
SPU LLVM: support Mega/Giga modes
SPU LLVM: implement function chunks
SPU LLVM: use PHI nodes, value visibility across basic blocks
SPU LLVM: implement function chunk table
New simple memory manager for LLVM (bugfix)
2018-06-21 22:29:34 +03:00
VelocityRa
9d431e77a4
Utilities/geometry: Add unsigned specializations to typedefs
2018-06-18 22:34:26 +03:00
Megamouse
af71cf0922
implement "Enable TSX" combobox
2018-06-17 00:43:00 +04:00
scribam
968f3995ff
Merge branch 'master' into asmjit
2018-06-13 09:27:12 +02:00
scribam
14dc1fead6
yaml-cpp: update submodule and build integration
2018-06-13 04:25:34 +04:00
scribam
3a9778668a
asmjit: update build integration
2018-06-12 20:03:53 +02:00
Daniel Valentine
fb20c27e7b
Delay GDB server launch until emulator run ( #4658 )
2018-06-08 13:34:27 +01:00
Nekotekina
37577714fa
SPU LLVM: emulate PSHUFB
...
For targets without SSSE3 support
2018-05-30 20:35:35 +03:00
Nekotekina
1193ab0b89
Use memfd_create (Linux)
2018-05-30 20:35:35 +03:00
Jan Beich
3d632a3774
CPUStats: add support for macOS and BSDs
2018-05-30 12:35:41 +03:00
VelocityRa
8981227644
util/thread_ctrl: Method for measuring cycles a thread has run for
...
Also add a getter for the native thread handle.
2018-05-30 12:35:41 +03:00
VelocityRa
5defa9c7b0
util: Class for getting overall CPU usage and thread count
2018-05-30 12:35:41 +03:00
kd-11
824340363d
disable thread scheduler on intel
2018-05-29 13:54:30 +03:00
Nekotekina
a33f297315
Replace notifier::lock_shared() with try_lock_shared()
...
Also add notify_one(), try_lock() and unlock()
Move some code in cond.cpp
2018-05-21 00:18:37 +03:00
Nekotekina
33a1c743a4
Transactions: move loops inside
...
Rewrite loops in assembler (minor optimization)
2018-05-21 00:18:37 +03:00
Nekotekina
0b1c8bc676
Change retire strategy in cond_variable::imp_wait (WIN32)
...
Instead of waiting infinitely, try and yield until success
2018-05-17 21:29:49 +03:00
Nekotekina
08cd8e0cb1
Cleanup: unused imports
2018-05-17 18:33:44 +03:00
pauls-gh
fdef77d779
Set Windows timer resolution to 0,5ms ( #4579 )
...
* Fix for https://github.com/RPCS3/rpcs3/issues/4569
(Win 10 update 1803 performance regression)
2018-05-17 15:00:22 +04:00
Jan Beich
a68dac7282
JIT: add missing header after fd525ae1cf
...
In file included from Utilities/JIT.cpp:1:
Utilities/JIT.h:33:23: error: implicit instantiation of undefined template 'std::__1::array<asmjit::X86Gp, 4>'
std::array<X86Gp, 4> args;
^
/usr/include/c++/v1/__tuple:223:64: note: template is declared here
template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array;
^
2018-05-17 04:42:05 +04:00
Nekotekina
367f039523
Build transactions at runtime
...
Drop _xbegin family intrinsics due to bad codegen
Implemented `notifier` class, replacing vm::notify
Minor optimization: detach transactions from global mutex on TSX path
Minor optimization: don't acquire vm::passive_lock on PPU on TSX path
2018-05-16 17:31:58 +03:00
Nekotekina
fd525ae1cf
Implement build_function_asm
...
Uses ASMJIT to build function at startup
2018-05-16 15:48:35 +03:00
Nekotekina
a46ef4f29a
Increase open file limit on Linux
...
Add some assertions to VirtualMemory.cpp
2018-05-13 23:56:43 +03:00
Jan Beich
177da2984d
VirtualMemory: add missing header after 5d15d64ec8 ( #4532 )
...
Utilities/VirtualMemory.cpp:123:8: error: use of undeclared identifier 'errno'
if (errno != EEXIST)
^
Utilities/VirtualMemory.cpp:123:17: error: use of undeclared identifier 'EEXIST'
if (errno != EEXIST)
^
2018-05-13 11:34:33 +03:00
Nekotekina
a77896c1b6
Update LLVM commit, use small code model
2018-05-13 00:03:08 +03:00
Nekotekina
5d15d64ec8
Memory mirror support
...
Implemented utils::memory_release (not used)
Implemented utils::shm class (handler for shared memory)
Improved sys_mmapper syscalls
Rewritten ppu_patch function
Implemented vm::get_super_ptr (ignores memory protection)
Minimal allocation alignment increased to 0x10000
2018-05-09 23:35:34 +03:00
Nekotekina
cfa9b163fd
Implement fmt::to_lower
...
It was strangely removed...
2018-05-09 22:19:55 +03:00
Nekotekina
eae78a8711
Improve fs::create_path
...
Don't fail if already exists
2018-05-09 22:19:55 +03:00
Nekotekina
88dc6b7700
Cfg: add missing get() methods
2018-05-09 22:19:55 +03:00
Nekotekina
a975ecdc4f
Use LLVM 6
2018-05-08 13:05:29 +03:00
Nekotekina
a7c34123a6
Improve dynamic_library
2018-05-08 13:05:29 +03:00
Nekotekina
841d8955de
Fix warning (fmt_unveil)
2018-04-22 00:06:49 +03:00
Nekotekina
8ca33bcb94
SPU ASMJIT v2.0
...
Use X86Assembler and blocks
2018-04-22 00:06:48 +03:00
Nekotekina
0797164fac
SPU: fix possible livelock
...
The bug affects TSX path
2018-04-07 20:51:21 +03:00
Nekotekina
2b5cf2455f
SPU: improve TSX usage
...
Reduce transaction failure amount
Remove vm::try_to_lock
2018-04-06 21:47:54 +03:00
Nekotekina
402ca480cd
Fix vm::check_addr usage
2018-04-01 22:39:48 +03:00
Birk Magnussen
c5caaa9211
Fix missing Detection for AVX OS Support
2018-03-24 03:30:27 +04:00
Nekotekina
20785b00f6
Implement fmt::base57
...
For future use
2018-03-22 23:24:58 +03:00
Nekotekina
19944eeed0
Implement SPRX precompilation
...
Automatically precompile firmware modules
Add "Create LLVM Cache" menu (for games)
Reimplement jit_compiler::cpu as static method
2018-03-22 23:24:58 +03:00
Nekotekina
f66d5adf5f
Prevent accessing incomplete RPCS3.log.gz
...
Use permissions to make it inaccessible
On Windows, autodelete the file
Implement fs::unread for this purpose
Rename fs::unshare to fs::lock
Fix fs::lock correctness
2018-03-17 00:39:45 +03:00
Jan Beich
e487480ca9
Thread: unbreak build on BSDs after ac82ecf387
...
Utilities/Thread.cpp:1644:2: error: use of undeclared identifier 'pthread_setname_np'; did you mean 'pthread_set_name_np'?
pthread_setname_np(pthread_self(), m_name.substr(0, 15).c_str());
^~~~~~~~~~~~~~~~~~
pthread_set_name_np
/usr/include/pthread_np.h:58:6: note: 'pthread_set_name_np' declared here
void pthread_set_name_np(pthread_t, const char *);
^
2018-03-13 12:51:22 +04:00
Nekotekina
ac82ecf387
Use pthread_setname_np (Linux, GDB)
2018-03-11 19:33:02 +03:00
Nekotekina
4b1c052030
Fix crash on exit after access violation
2018-03-11 19:33:02 +03:00
Nekotekina
7f542a5c99
Fix safe_writer_lock (typo)
2018-03-11 19:33:01 +03:00