raven02
e68ddf671c
Temporary fix issue #3167 in non-multithread mode #2
2013-08-15 03:44:20 +08:00
Unknown W. Brackets
49ab98c7fd
Use atomic operations on Android + warning fixes.
2013-08-12 08:51:49 -07:00
Unknown W. Brackets
cf7c718706
Use a timer to keep gpu/cpu in sync periodically.
...
Fixes Diva Extend demo, at least, losing FPS.
2013-08-11 13:41:42 -07:00
Unknown W. Brackets
e0f699fd5f
Use a possibly harmless hack to prevent hangs.
...
Not sure where the problem is, but this fixes it pretty consistently for
me... seems like lists are somehow not being processed after becoming
processable?
2013-08-10 20:03:43 -07:00
Unknown W. Brackets
26c072df51
Don't wait directly from GPUCommon, do it in sceGe.
...
Makes debugging a bit easier.
2013-08-10 18:24:40 -07:00
Unknown W. Brackets
55c07bdc73
Avoid a possible thread sync issue.
...
Could be that it's about to wake listsync, does, and then we wait.
2013-08-10 17:18:31 -07:00
Unknown W. Brackets
abc396cbe1
Sync the GPU thread on list/draw sync.
...
Otherwise, the CPU gets ahead (inside the frame) and games get confused.
I don't think there's any good workaround to avoid this.
2013-08-10 15:16:49 -07:00
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