Commit graph

198 commits

Author SHA1 Message Date
Unknown W. Brackets
4cd260a2fc Centralize the thread ready queue logic.
This makes it slower for now, but should make it easier to optimize correctly.
2013-04-07 03:09:23 -07:00
Unknown W. Brackets
65ac7389d7 Don't get stuck on idle when interrupts run.
This was happening when the dispatch thread was disabled.
2013-04-06 17:04:20 -07:00
Unknown W. Brackets
2367c17735 Don't suspend/resume dispatch while interrupts off. 2013-04-06 17:04:18 -07:00
Unknown W. Brackets
8f17cef95b Stop threadend timeout when the thread ends.
Fixes threads waking up early in tests.
2013-04-06 17:04:16 -07:00
Unknown W. Brackets
c57954a72e Implement sceGeDrawSync(). 2013-04-06 02:30:37 -07:00
Unknown W. Brackets
72921e0a3c If the mipscall id doesn't match, don't create.
Fixes a crash when savestating.
2013-03-31 12:09:59 -07:00
Unknown W. Brackets
2a9c640739 When starting a thread, put old thread at end.
This matters so the right thread is run later when scheduling switches
back.
2013-03-31 09:45:41 -07:00
Unknown W. Brackets
fe60677f75 Make mutexes handle callbacks better + before.
Mutex and semaphores (but NOT lwmutexes) call callbacks before attempting
the lock, but only if it would not generate errors.

Have not yet tested other wait types.
2013-03-30 16:12:38 -07:00
Unknown W. Brackets
eace0e75c1 sceKernelWaitSemaCB() should run callbacks first.
Patapon 2 gets back to the menu with this.
2013-03-30 16:12:38 -07:00
Unknown W. Brackets
d2abdf17be Add a waittype registry to handle callbacks right. 2013-03-30 16:12:37 -07:00
Unknown W. Brackets
e4223dbcb0 Simplify adding report messages, add a bunch more. 2013-03-26 00:54:00 -07:00
Unknown W. Brackets
f89358d6ff Add some reporting in other thread functions. 2013-03-26 00:39:18 -07:00
Unknown W. Brackets
480c5c3e31 Add some reporting for broken callback situations. 2013-03-26 00:36:46 -07:00
Unknown W. Brackets
276037675f Prevent waiting on semas while dispatch disabled.
Does relatively well on tests this way.
2013-03-24 23:30:32 -07:00
Unknown W. Brackets
783df9f0c3 sceKernelResumeDispatchThread() always returns 0. 2013-03-24 20:53:51 -07:00
Unknown W. Brackets
64445e0c8d Resume dispatch on thread start. 2013-03-24 20:52:18 -07:00
Unknown W. Brackets
c9e1b01545 Don't reschedule while interrupts are disabled. 2013-03-24 19:43:56 -07:00
Unknown W. Brackets
b2fd023038 Fix return value of sceKernelSuspendDispatchThread. 2013-03-24 19:30:17 -07:00
Henrik Rydgard
84d292010a Oops, sceKernelCheckThreadStack was already implemented. Let's hope both copies are the same. 2013-03-23 14:41:13 +01:00
Henrik Rydgard
6a4ae5bb51 Implement sceKernelCheckThreadStack 2013-03-23 14:26:54 +01:00
Unknown W. Brackets
2500910d72 Fix dumb typo in sceKernelRotateThreadReadyQueue(). 2013-03-20 14:11:13 -07:00
Unknown W. Brackets
96f2d860e4 Revert thread optimization, appears to have broken things.
Fixes #1033.

This reverts commit ea91632ff5 and
commit 543dfcd4d8.
2013-03-20 14:10:20 -07:00
Unknown W. Brackets
ea91632ff5 Allow the thread ready queue to shrink, simplify. 2013-03-20 08:11:24 -07:00
Unknown W. Brackets
cd8e0e675c Small optimization to sceKernelRotateThreadReadyQueue(). 2013-03-20 00:06:19 -07:00
Unknown W. Brackets
543dfcd4d8 Optimize thread ready queue pop_front(). 2013-03-19 23:51:40 -07:00
Unknown W. Brackets
14e065cbb2 Avoid dynamic_cast() for threads where possible.
It's reasonable to trust currentThread and threadReadyQueue, and these eat
a few percentage points of time.
2013-03-16 11:17:44 -07:00
Unknown W. Brackets
d8dd889bfd Couple more minor warning fixes. 2013-03-15 08:19:02 -07:00
Unknown W. Brackets
6e54ce5551 Fix some minor warnings. 2013-03-15 00:45:47 -07:00
Unknown W. Brackets
acd7e1b6af Handle dispatch suspend/resume slightly better. 2013-03-13 23:49:39 -07:00
Unknown W. Brackets
0b9c248856 Reschedule in sceIoLseek() etc.
Also make it so we can return u64s easily in places...
2013-03-11 02:50:32 -07:00
Unknown W. Brackets
913dca69ef Turn down logging for things that can be inferred.
If you see a thread switch for a vblank wait, you know what happened.
2013-03-10 22:56:24 -07:00
Unknown W. Brackets
118050485f Show the current thread name in the log file.
This is very useful, although it kinda entwines the logging a bit
more than might be desired.
2013-03-10 22:25:03 -07:00
Unknown W. Brackets
6b7ff47617 Improve perf of __KernelExecutePendingMipsCalls().
This was using ~3% in many games with fast forward.  It was all
the RTL type lookup, so avoiding it is an easy win.
2013-03-09 14:21:21 -08:00
Unknown W. Brackets
f9fc1af5c8 Improve perf of sceKernelCheckCallback().
Some games seem to call this a lot.
2013-03-09 14:11:53 -08:00
Unknown W. Brackets
db52d3d43c Quick and dirty attempt to delay loadmodule. 2013-03-07 22:45:58 -08:00
Unknown W. Brackets
62ab4b7f51 More signed compare warnings. 2013-03-02 15:34:16 -08:00
Unknown W. Brackets
de7ada1982 Fix some x64 type warnings. 2013-02-24 10:39:06 -08:00
Unknown W. Brackets
64c42ffaf2 Fix some warnings generated by clang. 2013-02-24 10:23:31 -08:00
Unknown W. Brackets
31ada1ea07 Don't process threadsafe events from HLE.
Only from the runloop where blowing the jit cache is safe.
2013-02-22 00:40:36 -08:00
Unknown W. Brackets
2bdc9dc491 Reset llBit on thread switch.
Never actually seen ll used, though... but this way it should
work as advertized, as long as a syscall doesn't happen in between...
2013-02-20 12:09:13 -08:00
Xele02
6339c2fc9a Correct crash when texture too small loaded in memory tex viewer
Correct current thread PC in the list.
2013-02-17 21:43:44 +01:00
Unknown W. Brackets
537fbe4d7d Minor perf gain in __KernelNextThread.
Just like .1% but was hoping Mr. Optimizer would do this for me.
2013-02-11 01:27:08 -08:00
Unknown W. Brackets
6ca1cad28c Add a std::vector wrapper to do remove/pop/push.
It showed up in a profile after all.  Cut down more than 1%.
2013-02-11 01:27:07 -08:00
Unknown W. Brackets
f552cb3370 Wake delayed threads directly, rather than looping.
This saves ~1% during fast forward on a release build.
2013-02-11 01:27:07 -08:00
Unknown W. Brackets
9a5589a180 Move running thread resched to __KernelNextThread.
Pretty sure this is needed, but apparently it breaks Sol Trigger.
2013-02-11 01:27:07 -08:00
Unknown W. Brackets
fd1c686edf Move currentThread init to a better place. 2013-02-11 01:27:06 -08:00
Xele02
69b837f18b Add debug dialogs (DisAsm, Memory, VFPU).
New features : Breakpoint display, thread status, display list status
Update translation and start french translation
2013-02-10 17:33:34 +01:00
Unknown W. Brackets
a5ba6821b7 Only switch to a started thread if better priority. 2013-02-09 19:02:38 -08:00
Unknown W. Brackets
0ff0b3f57d Return an error for invalid priority. 2013-02-09 19:01:25 -08:00
Unknown W. Brackets
161f2d712e sceKernelRotateThreadReadyQueue(0) means current. 2013-02-09 16:04:35 -08:00