rpcsx/rpcs3/Emu/Cell
plappermaul 925f2ce02f Use Linux timers for sleeps up to 1ms (#6697)
* Use Linux timers for sleeps up to 1ms (v3)
The current sleep timer implementation basically offers two variants. Either
wait the specified time exactly with a condition variable (as host) or use a
combination of it with a thread yielding busy loop afterwards (usleep timer).

While the second one is very precise it consumes CPU loops for each wait call
below 50us. Games like Bomberman Ultra spam 30us waits and the emulator hogs
low power CPUs. Switching to host mode reduces CPU consumption but gives a
~50us penalty for each wait call. Thus extending all sleeps by a factor of
more than two.

The following bugfix tries to improve the system timer for Linux by using
Linux native timers for small wait calls below 1ms. This has two effects.

- Host wait setting has much less wait overhead
- usleep wait setting produces lower CPU overhead
2019-10-09 20:03:34 +03:00
..
lv2 Use Linux timers for sleeps up to 1ms (#6697) 2019-10-09 20:03:34 +03:00
Modules Fix log format misuse 2019-10-09 02:14:52 +03:00
Common.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
ErrorCodes.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
MFC.cpp Remove unnecessary header includes 2019-06-25 17:11:10 +03:00
MFC.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
PPCDisAsm.h fmt::by_value, fmt::Format removed 2015-08-24 21:22:42 +03:00
PPUAnalyser.cpp Add another pattern to ppu analyzer imports 2019-08-16 22:55:04 +03:00
PPUAnalyser.h Use g_fxo for global ppu_module instance 2019-09-26 23:26:36 +03:00
PPUCallback.h Increases stack allocation for callbacks. 2018-11-12 15:09:26 +03:00
PPUDisAsm.cpp ppu disasm: Improve BC formatting 2019-09-23 02:35:56 +03:00
PPUDisAsm.h Silence some obvious warnings 2017-08-18 23:09:52 +03:00
PPUFunction.cpp Fix sys_config_get_io_event syscall name 2019-07-29 21:55:59 +03:00
PPUFunction.h Log last function on debug pause or exception, dump cpu_thread state on access violation 2019-07-10 17:35:39 +03:00
PPUInterpreter.cpp Fix ppu_interpreter::MTFSFI 2019-09-08 14:50:50 +03:00
PPUInterpreter.h PPU Precise: FPCC handling on float ops implemented 2019-08-18 04:01:16 +03:00
PPUModule.cpp Use g_fxo for global ppu_module instance 2019-09-26 23:26:36 +03:00
PPUModule.h vm::gvar: add array support 2019-09-17 02:46:34 +03:00
PPUOpcodes.h Move rotate/cntlz/cnttz helpers to Utilities/asm.h 2018-09-08 00:32:04 +03:00
PPUThread.cpp GDB Server: fix and cleanup 2019-10-09 00:11:44 +03:00
PPUThread.h PPU Precise: FPCC handling on float ops implemented 2019-08-18 04:01:16 +03:00
PPUTranslator.cpp Fixup after #6286 2019-08-13 13:34:14 +03:00
PPUTranslator.h Remove unnecessary header includes 2019-06-25 17:11:10 +03:00
RawSPUThread.cpp Fixup after #6143 (#6146) 2019-06-29 18:48:42 +03:00
RawSPUThread.h Migration to named_thread<> 2018-10-19 22:22:35 +03:00
SPUAnalyser.cpp Implement spu_iname helper 2018-07-06 00:33:52 +03:00
SPUAnalyser.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
SPUASMJITRecompiler.cpp spu: Mask SRR0 at write 2019-10-08 02:52:33 +03:00
SPUASMJITRecompiler.h SPU LLVM/ASMJIT: fix BRA/BRASL instructions for PIC 2019-05-16 02:41:31 +03:00
SPUDisAsm.cpp Partial commit: Cell 2016-04-15 19:22:34 +03:00
SPUDisAsm.h SPU Disasm: fix absolute addressing in some instructions. 2019-05-16 00:53:37 +03:00
SPUInterpreter.cpp spu: Mask SRR0 at write 2019-10-08 02:52:33 +03:00
SPUInterpreter.h Migration to named_thread<> 2018-10-19 22:22:35 +03:00
SPUOpcodes.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
SPURecompiler.cpp spu: Mask SRR0 at write 2019-10-08 02:52:33 +03:00
SPURecompiler.h SPU: optimize function dispatch in trampolines 2019-10-06 16:03:38 +03:00
SPUThread.cpp spu: Mask SRR0 at write 2019-10-08 02:52:33 +03:00
SPUThread.h Fixup after #6143 (#6146) 2019-06-29 18:48:42 +03:00