Commit Graph

650 Commits

Author SHA1 Message Date
Unknown W. Brackets 984bb31709 Fix another race condition with multithreading.
It's possible that after it's marked completed, the CPU will grab it to
enqueue.  This actually happened to mean with decent reproducibility.
2014-05-03 18:40:27 -07:00
Unknown W. Brackets 99e4300f95 Eat a few more cycles on END cmds.
Fixes #3049, which apparently expects an END/FINISH to not immediately
trigger (it drawsyncs soon after, and completely expects that to
reschedule.)

Either way, it seems plausible an END would take a few more cycles than
most instructions, since it generates an interrupt.
2014-04-29 00:08:43 -07:00
Unknown W. Brackets 97c18e7f0e Comment out a few unsafe replacement funcs. 2014-04-22 08:07:10 -07:00
Unknown W. Brackets 256e98b841 Add the common funcs to the direct exec calls. 2014-04-17 01:18:52 -07:00
Unknown W. Brackets b2f12daba9 Don't reset OFFSETADDR, changes offsetAddr. 2014-04-17 01:18:51 -07:00
Unknown W. Brackets 4c1c694d4b Use flags to avoid hashing textures when unchanged.
If only parameters change (like wrapping or clut, etc.) we don't need to
rehash the data - we know it hasn't changed.

Should reduce the distance between lazy texture hashing on and off.
2014-04-13 14:22:39 -07:00
Unknown W. Brackets e93407f33e Oops, downgrade from ERROR to DEBUG, and -report. 2014-04-12 00:04:02 -07:00
Unknown W. Brackets 26933384a7 Don't mark a list complete too early.
This would matter probably mostly if we implemented CONTINUE properly.
2014-04-11 23:50:20 -07:00
Unknown W. Brackets 4561440df7 Handle GE pause signals per tests.
They really should pause, but we were resetting them incorrectly.
And most importantly, sceGeContinue() inside the signal handler absolutely
must work.  Games use this a lot.
2014-04-11 23:50:20 -07:00
Unknown W. Brackets 702294fe60 Don't trigger pause GE signals either, comments.
This better explains what each signal does.
2014-04-10 00:23:36 -07:00
Unknown W. Brackets 9c75c1e6fd Avoid triggering SYNC ge signals.
Fixes #5806, bcause it avoids rescheduling at the signal, which it should
not do.  Possibly this is incorrect for all GE signals, but we don't need
to trigger any behavior on a sync anyway.
2014-04-08 22:20:33 -07:00
Unknown W. Brackets 8a440f93b1 Super stupid typo. 2014-04-05 14:08:44 -07:00
Unknown W. Brackets 82df1b1fa8 Simplify UpdatePC() a bit more. 2014-04-05 12:04:10 -07:00
Unknown W. Brackets cbb6c01d4c Avoid some debug stats when disabled.
This function can get called a lot sometimes, and an if helps on ARM a
little.
2014-04-05 01:41:54 -07:00
Unknown W. Brackets 7cde2311e0 Include sceKernelThread.h in less headers. 2014-03-29 17:02:41 -07:00
Unknown W. Brackets a4327702f1 Reduce some includes under GPU/. 2014-03-29 16:51:38 -07:00
Unknown W. Brackets 4fbb245382 Avoid leaving the fast runloop on jumps.
Jumps are actually very common in some games, like FF4 and Crisis Core,
and tons more.  They are used to jump around vertex data.

Improves performance by a few percent in FF4.
2014-03-05 23:24:18 -08:00
Henrik Rydgard e11e4cfff2 GCC buildfix 2014-03-04 11:38:33 +01:00
Unknown W. Brackets 0a880b09ad Allow fast bone mtx loads w/o software skinning. 2014-03-02 18:12:40 -08:00
Henrik Rydgård db59559a92 Reduce the "Ret: Stack Empty" log level to DEBUG.
Still reporting. Avoids logspam in buggy games.
2014-02-25 21:23:21 +07:00
Unknown W. Brackets 183b4cb45c Add a static method for creating PSPPointers.
This is still kinda ugly, but the assignment thing was just too ugly, I
couldn't do it anymore.
2013-12-16 23:50:52 -08:00
Unknown W. Brackets 435115441d Reinitialize the GE on sceKernelLoadExec().
Mostly, reset the lists and draw completion, etc.

May be required for Capcom Classic Collection Reloaded to work.
2013-11-28 15:35:12 -08:00
Henrik Rydgard dc03796ccb The bone matrix optimization is only safe when software skinning 2013-11-14 15:02:22 +01:00
Henrik Rydgard 8c562a615f Bone matrix loading speedup. Bit of a hack but seems reliable enough. 2013-11-14 14:02:31 +01:00
Unknown W. Brackets 1633aa689c Remove the extra process queues hack.
It seems like it's not helping anymore so it could be hurting.
2013-11-09 23:08:44 -08:00
Sacha 2c74693f6c VSync codepath only works on _WIN32 so only show it and check it there. 2013-10-27 23:09:46 +10:00
Sacha 4972e7b680 EnqueueList: Relocate code that depends on compatibility check to simplify the code 2013-10-27 03:49:46 +10:00
Unknown W. Brackets afb578a325 Use the newer interface for Qt's gpu debugging. 2013-10-20 00:14:39 -07:00
raven02 acb9c49ea2 Try to use a smaller value for cyclesExecuted 2013-10-12 16:20:27 +08:00
raven02 2cdb2d1e1f Extra cycles execute .Fix #3979 & #3883 2013-10-09 19:45:28 +08:00
Henrik Rydgard fc8aa7bd8f Crashfix dumping display lists that start at the start of VRAM (seems to hit this in GTA).
Add a couple of comments.
2013-10-07 22:58:46 +02:00
Henrik Rydgård 8f7a9656c8 Merge pull request #4062 from unknownbrackets/debugger
Show tabs for depth/stencil in ge debugger, other improvements
2013-10-06 23:59:54 -07:00
Unknown W. Brackets ff0e9cf32d Make it possible to flip flags in the ge debugger. 2013-10-06 22:17:56 -07:00
Unknown W. Brackets 0c03dc2dec Handle it better when viewing an invalid addr. 2013-10-06 22:17:52 -07:00
Unknown W. Brackets a09119ba04 Correct savestates when dls had context saving.
It was wrong, and also they were different between 64/32 bit.
2013-10-06 22:10:44 -07:00
Unknown W. Brackets 74908f6b38 Add errors and rescheduling to sceDmac*.
The functionality seems pretty straight-forward.
2013-09-29 16:51:49 -07:00
Henrik Rydgard 424b4cbd5f Move GE_CMD_BJUMP to GPUCommon. Add the flag. (no actual bbox impl yet) 2013-09-24 14:14:04 +02:00
Unknown W. Brackets bdfc8bf4b3 Mark texture as maybe changed when running lists. 2013-09-23 23:17:56 -07:00
Unknown W. Brackets 4c3b3484d7 Actually apply the restored gstate. 2013-09-23 23:17:36 -07:00
Unknown W. Brackets 3787471791 Add some initial methods to GPUDebugInterface. 2013-09-22 10:22:33 -07:00
Unknown W. Brackets eabd8b5302 Add GPU debugging hooks to Host, not yet in use. 2013-09-22 08:14:55 -07:00
Unknown W. Brackets 2e2fa53201 Preseve offsetAddr on stall, instead of reset to 0.
Only for new lists is it reset to 0, afaict.
2013-09-21 21:01:41 -07:00
Unknown W. Brackets 881cefbc83 A paused list will allow a context save.
Just not stall, drawing, etc.
2013-09-21 21:01:41 -07:00
Unknown W. Brackets e10ae1530b Error and reporting for sceGeBreak's second param. 2013-09-21 21:01:40 -07:00
Unknown W. Brackets e9db63f61d Refuse to dequeue a running/completed list. 2013-09-21 15:03:30 -07:00
Unknown W. Brackets c5a709d039 Don't update stall address on completed lists. 2013-09-21 15:03:30 -07:00
Unknown W. Brackets e7bd716c71 Allocate ge list ids using round robin.
Even if you enqueue and then dequeue 0, you don't get it again right away.
2013-09-21 15:03:29 -07:00
Unknown W. Brackets 863eb83e4c Add support for sceGeGetStack() for debugging. 2013-09-21 10:04:31 -07:00
Unknown W. Brackets 3c954ea0e4 Save the base address in signal calls.
It's not saved in regular calls but it is in signal ones.
2013-09-21 00:07:49 -07:00
Unknown W. Brackets 9116b879a4 Restore context even without an interrupt. 2013-09-20 21:03:39 -07:00