Add support for compilation on x64 toolchain (x86 cl.exe was running out of heap space in vm.cpp)
Also took the opportunity to change compile optimisation from /Ox to /O2, as /O2 provides better optimisation than does /Ox
Also, we shouldn't be explicitely setting compiler tool defines (__cpp_lib_bitops), so remove that from types.h
- Some texture accesses require image compositing steps to assemble the requested image from existing subresources.
Handle all the common routines in a unified manner to avoid having one broken path (e.g mipmap gather not supporting bitcast operations)
* Replace ppu_module_manager Function Static with Class Static
Makes for a slightly 'cleaner' interface in my opinion, may also assist with adding thread read/write concurrency support in future if ever required (have left that out of this commit to match existing function).
Very slight performance improvements were seen in representative testing.
https://quick-bench.com/q/GMbgeNc-mZc21aqOKCofnbzPZvg
I didn't investigate whether static initialisation of the static_modules might actually be possible here, perhaps there's a way to do a constexpr / consteval of this.
* Fix up for old style cast syntax..
* Fixups from PR comments
Plus remove spurious type_traits include (from me) not picked up in previous PR
* Remove old code
* Update rpcs3/Emu/Cell/PPUModule.h
Co-authored-by: Eladash <elad3356p@gmail.com>
* Fix naming of static variable
Co-authored-by: Eladash <elad3356p@gmail.com>
Tidy up fake transfer iterator handling. erase invalidates all iterators including the current iterator (i.e. 'it'), given precedence ordering this was UB prior to C++17. Splitting out to use return iterator from erase seems cleaner.
Also added some additional info to usb debug message to potentially help with #8666, and used the atomic (dev_counter) less often