Commit Graph
475 Commits
Author SHA1 Message Date
Unknown W. Brackets e71cf2ec7e Don't queue Flush() etc. while on GPU thread.
Oops, that makes it not actually flush properly of course.

Also made a simpler guard wrapper to avoid extra braces in too many
places.  Reduced contention areas slightly.
2013-08-09 22:57:52 -07:00
Unknown W. Brackets 68fb78e203 Be more careful with the stall address.
In case it's moved while running the list.
2013-08-09 22:57:52 -07:00
Unknown W. Brackets 8c69020fa8 Use separate condition vars/locks for GPU sync. 2013-08-09 22:57:51 -07:00
Unknown W. Brackets b0e6967697 Rename UseCPUThread to SeparateCPUThread. 2013-08-09 22:41:33 -07:00
Unknown W. Brackets a56cac1eb3 Bail when CPU thread disabled to ensure good perf. 2013-08-09 22:41:32 -07:00
Unknown W. Brackets 3819886e2e Add a way to synchronize with the GPU thread. 2013-08-09 22:41:32 -07:00
Unknown W. Brackets 02e301e5fe Add a simple message event system to the GE.
With this, the CPU thread feature now mostly works.
2013-08-09 22:41:31 -07:00
Unknown W. Brackets 52ca93aab2 Add mutex locks around list management.
This way we can safely execute lists on a separate thread.
2013-08-09 22:41:31 -07:00
Unknown W. Brackets 00fc5ec40e Enable interrupts as a property of the list.
This way there's no behavior change when enqueue is async.
2013-08-07 00:32:30 -07:00
Unknown W. Brackets 3aa2db9a8e Simplify ProcessDLQueue() slightly. 2013-08-04 16:31:54 -07:00
Unknown W. Brackets f7a39d1b12 Move ReapplyGfxState() to GPUCommon.
This way it can be overridden, and simplifies some other things.
2013-08-04 15:15:50 -07:00
Henrik Rydgard a95daf4647 Reduce logspam for some GE signals. doesn't seem to be a problem (although that might change if we paralellize). 2013-06-27 17:49:29 +02:00
Unknown W. Brackets 9c85bd92e4 Show statistics for GPU cycles executed per frame. 2013-05-31 10:40:16 -07:00
Unknown W. Brackets 46e5b84242 Small opt. for common immediately stalled list. 2013-04-28 14:56:38 -07:00
Unknown W. Brackets 597cdbca3f Simplify, don't let InterpretList do downcount. 2013-04-28 14:30:28 -07:00
Unknown W. Brackets 1edbfa3212 Use a downcount and fast run loop in the GE. 2013-04-28 14:23:30 -07:00
Unknown W. Brackets 5a03888b56 Centralize state and pc changes in the GE.
To make later things easier.
2013-04-28 13:34:29 -07:00
Unknown W. Brackets 9208f6389d Avoid calling time_update in GE w/o debug stats.
Just wastes time, especially if the game hammers sceGeListUpdateStallAddr,
which many games do.
2013-04-22 22:04:27 -07:00
Henrik Rydgard 628c223234 GPUCommon: Get rid of prev variable. 2013-04-21 19:32:56 +02:00
Unknown W. Brackets b54eb41041 Don't signal again if a PAUSE handler unstalls.
Basically, if the handler calls sceGeListUpdateStallAddr(), and it hits
a finish (which it might), before we were triggering another PAUSE.

THat's wrong, it should just be a FINISH as usual.
2013-04-20 20:15:47 -07:00
Henrik Rydgard 98daf18d56 Add skeleton code for Windows multitouch, to be filled in by someone who can test :P 2013-04-16 21:14:46 +02:00
Unknown W. Brackets f86e01707f Use a struct for the GE stack entries, cleaner. 2013-04-15 23:06:56 -07:00
Unknown W. Brackets 7b184602df Remember the GE offset in the stack on call/ret. 2013-04-15 22:20:49 -07:00
Henrik Rydgard ea11c36091 Fix a vshader id bit collision, avoid color test when set to 'ALWAYS', zeroinitialize dls. 2013-04-15 22:57:54 +02:00
Henrik Rydgard cbbc4e2c9e Reset gstate_c.offsetAddr on RET. Fixes some "CALL to illegal address"
(as seen in Flatout for example).
2013-04-15 22:24:30 +02:00
Unknown W. Brackets e45bd32c61 Fix incorrect GPU timing with signal jumps. 2013-04-12 08:57:30 -07:00
Unknown W. Brackets 6cbd1b5205 Fix typo, add back state to savestate. 2013-04-09 02:18:09 -07:00
Unknown W. Brackets 957394258c Block dlist execution while in virtual progress.
Fixes #1224.

Also, fix drawsync late by a GPU cycle, so interrupts line up.
It would break at least Ys Seven without that.
2013-04-09 00:56:50 -07:00
Unknown W. Brackets 210c7b1639 Slow down the GPU clock estimate.
This makes  Fat Princess for example much faster.
2013-04-07 17:05:12 -07:00
Unknown W. Brackets 5d017829ad Make sure lists aren't reused before they complete. 2013-04-07 17:05:11 -07:00
Unknown W. Brackets 57770dbd95 Delay GPU signals and waits to simulate cycles. 2013-04-07 17:05:11 -07:00
Unknown W. Brackets 0ca4e5f0a7 Implement the jump, call, and ret signals.
Still buggy, but more things show...
2013-04-06 11:03:43 -07:00
Unknown W. Brackets 376ad80d76 Implement sync signal in display lists.
Makes dialogs show up in 3rd Birthday.
2013-04-06 10:12:41 -07:00
Unknown W. Brackets dac448dfae Implement the pause signal a bit better. 2013-04-06 09:59:24 -07:00
Unknown W. Brackets 8302780e98 These signals seem to skip the next FINISH, report. 2013-04-06 08:40:24 -07:00
Unknown W. Brackets 77311a121d Don't listsync until after the signal handler. 2013-04-06 08:36:03 -07:00
Unknown W. Brackets fb26941a27 Implement sceGeListSync(). 2013-04-06 02:30:38 -07:00
Unknown W. Brackets c0f20c2fdd If the interrupt is not run, don't flip gpuState.
Technically this is a hack, hopefully can remove it soon.
2013-04-06 02:30:37 -07:00
Unknown W. Brackets c57954a72e Implement sceGeDrawSync(). 2013-04-06 02:30:37 -07:00
Unknown W. Brackets 832edb0a8f Fix some x64 type conversion warnings. 2013-04-05 20:29:20 -07:00
Unknown W. Brackets 028cdbea43 Add some GPU related reporting. 2013-04-05 01:17:18 -07:00
Unknown W. Brackets ef1086413c Correct wait signal handling. 2013-04-05 00:32:35 -07:00
Unknown W. Brackets 2913bc063a Implement sceGeListDeQueue().
Doesn't seem often used, though.
2013-04-05 00:32:34 -07:00
Unknown W. Brackets 339b444703 Switch to a fixed size displaylist queue. 2013-04-05 00:32:34 -07:00
Unknown W. Brackets c986228d12 Change the state in PSP_GE_SIGNAL_HANDLER_SUSPEND. 2013-04-05 00:32:33 -07:00
Unknown W. Brackets 942eadb031 Always trigger interrupts on signal.
It seems likely the hardware does this.
2013-04-05 00:32:33 -07:00
Unknown W. Brackets 7aa6112c24 Keep a flag to indicate display list bailout. 2013-04-05 00:32:32 -07:00
Unknown W. Brackets 7738b42b9c Implement sceGeBreak()/sceGeContinue(). 2013-04-04 00:36:43 -07:00
Unknown W. Brackets 566b88bd63 Don't actually run sceGeListEnqueueHead right away. 2013-04-04 00:11:15 -07:00
Unknown W. Brackets 5336ae814d Return more correct values in sceGeDrawSync(). 2013-04-03 23:31:01 -07:00