Unknown W. Brackets
450e4c7fea
Factor out event queue logic to a template mixin.
2013-08-10 03:33:09 -07:00
Unknown W. Brackets
a80a7690c8
Fix SyncThread() not syncing during last event.
2013-08-09 23:18:37 -07:00
Unknown W. Brackets
e82bae3708
Simplify easy_guard to avoid coding errors.
2013-08-09 22:57:53 -07:00
Unknown W. Brackets
1226c3dbd9
Try to prevent a deadlock if CPU doesn't NEXTFRAME.
2013-08-09 22:57:53 -07:00
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