hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
11.11k stars 2.16k forks source link

PPSSPP: Preliminary report on games with Multithreaded enabled. (a.k.a the return of GE Timing issues with MT on) #3116

Closed solarmystic closed 10 years ago

solarmystic commented 11 years ago

I haven't seen a catch-all issue report opened yet to discuss the effects of enabling the brand new and experimental Multithreaded (MT) function implemented by @unknownbrackets, so I've decided to take the initiative and report my findings here.

This issue report can be used by others to share their own reports about their own games with MT enabled too.

All settings used are default, with the exception of enabling the Multithreading option, 3x Rendering Resolution and the Speed/VPS display (modified to display actual VPS numbers)

UPDATE:-

In case scrolling through raw data and screenshots are a hassle, here're the results tabulated without the fluff. (updated to reflect the latest [Unknown] fix https://github.com/hrydgard/ppsspp/issues/3127):-

capture

Raw data used to make table:-

Monhun Freedom Unite:-

Internal FPS during FMVs drops ridiculously.(to as low as 9-10FPS)

monhunmtfmv

Internal FPS during gameplay drops from 30 to 20

monhunmtgameplay

Monhun 3rd Portable HD:- just hangs after the CAPCOM title screen. Unplayable with MT on.

monhunmttitlescreen

Tekken 5 DR:- Internal FPS drops from 60 to 20 FPS during gameplay.

tekken5drmtgameplay

Tekken 6 :- Internal FPS drops from 60 to 20 during FMVs and gameplay.

tekken6mtfmv

tekken6mtgameplay

FF VII Crisis Core:-

Playable, and FMVs function at the right speed.. Seems to be one of the few without any issues with MT enabled. Turbo can be enabled without any issues.

Gundam v Gundam Next Plus:-

Internal FPS slowdown during FMVs and title screens from 60 to a ridiculous number (similar symptoms to MHFU)

gvgn mtfmv

Internal FPS drops from 60 to 20 FPS.

gvg mtgameplay

DO NOT turbo this game in MT mode, it will hang.

The 3rd Birthday:-

Playable as it was before. No regressions, FMVs and gameplay internal FPS are sustained at 30.

As an added bonus, the flickering elements of the HUD and dialog are now fixed(?) when MT is turned on, although there seems to be an added graphical filter applied to the image with MT on.

MT OFF:-

3rdbdaymtoff

MT ON:-

3rdbdaymton

Final Fantasy Type 0:- Playable just like before, but with a strange white filter at the extremities of the screen.

MT OFF:-

fft0mtoff

MT ON:-

fft0mton

(I seem to be noticing a trend here)

Danganronpa:-

Internal FPS at the main menu drops below 60 to a variable number (50-60)

danganmtmainmenu

Actual gameplay is unaffected, and using Read Framebuffers to Memory to enable object detection for Investigation mode works as expected. Internal FPS during gameplay remains steady at 30 FPS.

danganmtgameplay

Gods Eater Burst:-

Internal FPS during title screens plummets to below 30. Intro FMV Playback is also slowed down to 20 FPS at times.

gebmtonfmv

gebmtontitlescreen

Internal FPS during gameplay drops from 30 to 20 FPS.

gebmtongameplay

Legends of Heroes Trails in the Sky:-

Title Screen FPS drops from 30 FPS to 0 FPS (!)

titsmtontitlescreen

Game effectively hangs after, since you can't select any of the options.

If you're fast enough, you can skip the title screens and load your savegame, but then realise that the ingame internal FPS has dropped from 30 FPS to 17-20 FPS.

titsmtongameplay

Weirdest thing is that the music seems to be playing smoothly as usual with the lower internal FPS.

Ys Seven:- Title screen slowdown from 30 to 20 FPS. Internal FPS during Gameplay drops from 30 to 17-20 FPS.

ys7mtongameplay

Black Rock Shooter:- Title screen and gameplay FPS drops from 30 to 20 FPS.

brsmtongameplay

Hatsune Miku Project Diva 2nd:-

Severe internal FPS slowdown during the main menu featuring your character from 30 FPS to 13 FPS. Eventually drops to 0 VPS if left without input (or turboing), so the game effectively hangs after a short while.

diva2ndmtontscreen

diva2ndmtontscreen0vps

If you somehow manage to get through and play a song, notice that the internal FPS during gameplay has also dropped from 30 to sub 20 FPS, rendering this highly timing sensitive game unplayable.

diva2ndmtongameplay

Tactics Ogre:- Fluctuating internal FPS in the title screens from 60 FPS to the 50s. Internal FPS at the world map drops from 60 FPS to 30 FPS. Internal FPS during gameplay drops from 60 FPS to 30 FPS.

tacticsogremtonmap

tacticsogremtongameplay

Soul Calibur:- Probably one of the few native 60 FPS game I tested which managed to retain almost 60 FPS in all aspects with MT ON; FMVs, title screens and gameplay. No regressions here.

soulcaliburmtongameplay

Persona 3 Portable:- Internal FPS slowdown during gameplay from 30 FPS to 20 FPS outside and inside Tartarus.

p3pmton

p3pmtoninsidetartarus

Untold Legends Brotherhood of the Blade:- Internal FPS during gameplay reduced from 60 FPS to 30 FPS.

MT ON:-

untoldmtongameplay

MT OFF:-

untoldmtoffgameplay

Kingdom Hearts BBS:- Another rarity. The internal FPS holds steady at 30 FPS during gameplay, title screens and the FMV cutscenes. Using the cheatcode to increase the internal FPS to 60 does not work anymore during gameplay however, and the FPS just holds steady at 30 FPS.

khbbsmton

FF 1:- The Opening FMV does not play back smoothly, and looks like its running in slow motion. Internal FPS has lowered from 60 to the 30s.

ff1mtonfmv

Internal FPS during gameplay has also dropped from 60 to the upper 40s/lower 50s. One thing to note is that BGM playback is unaffected by the internal FPS drops.

ff1mtongameplay

FF 2:- FMV playback is unaffected. Internal FPS during gameplay drops from 60 to 30 FPS however.

ff2mtongameplay

FF 3:- FMV playback is unaffected and holds steady at 30 internal FPS. Internal FPS during gameplay holds steady at 30 FPS, as it was before.

Conclusion:-

It seems to me that a vast majority of the 60 FPS games, and a big number the 30 FPS games I tested have GE Timing issues again once Mutlthreaded is enabled. A minority of them do not however, but those are the exceptions.

The only 60 FPS game that does not have GE Timing issues again from my list is Soul Calibur.

Feel free to add any other games which haven't been covered by this list.

VIRGINKLM commented 11 years ago

Android : HTC EVO 3D MSM8260 1.5GHz Adreno 220 320MHz - ICS 4.0.3

PPSSPP v0.8.1 r1283 Tekken 6 - MT ON: 12% - 60FPS MT OFF: 13% - 60FPS Tekken Dark Resurrection - MT ON: 28% - 60FPS MT OFF: 30% - 60FPS Where Is My Heart? - MT ON: 57% - 53FPS MT OFF: 37% - 53FPS Ultimate Ghosts n Goblins - MT ON: 102% - 52FPS MT OFF: 98% - 52FPS Patapon - MT ON: 189% - 52FPS MT OFF: 225% - 52FPS

All experienced some screen flashing and all seemed to not refresh the screen while you are on Turbo Mode (the last frame would remain onscreen). Also Ultimate Ghosts n Goblins has some graphical garbage here and there with MT ON.

vsub commented 11 years ago

Single code P4 2.8GHz with Hyper Treading:

0.8.1-1372 x86 Gods Eater Burst - 30fps everywhere with and without MT. Legends of Heroes Trails in the Sky - 30fps everywhere with and without MT and the game work fine YS 7 - Same as above Project Diva Extended - flickers on a lot more places with MT enabled in non buffered mode and the fps is between 20 - 25 and sometimes freeze...work fine with MT off Persona 3 - Work fine...30fps everywhere

I think all games are getting +30% to the Speed: percentage counter.

hrydgard commented 11 years ago

On a hyperthreaded P4, a 30% speed boost is pretty damn good actually.

I'm seeing bigger speed boosts in some games but I have an Ivy Bridge so it's a little different :)

solarmystic commented 11 years ago

The distinction has to be made between % Speed boosts from the Speed % indicator, or the actual % increase in the VPS numbers.

I'll give an example.

For Danganronpa, in build 0.8.1-1395 x64

MT OFF :- 390 VPS (650% Speed) MT ON :- 478 VPS (~797% Speed)

If you consider the VPS % increase from 390 to 478, that's only a 22.5% increase in actual terms.

However, if you consider the +% to the speed counter itself from 650% to 797% Speed, that's an increase of 147% Speed.

Thus, it is vital when reporting increase percentages to indicate whether you're considering actual VPS numbers or the Speed percentage increases.

vsub commented 11 years ago

What I mean was for example if I get 250% and I enable MT,I'll get 280%

...it's really better to have vps numbers than percentage,it's much more informative Currently(0.8.1-1397)to set a correct speed limit(for example +50% the normal speed),you have to divide the game internal speed by 2 so if the internal is 20,you must set the limiter to 30 to make it run at 150%

solarmystic commented 11 years ago

@vsub

Ah okay then.

About the the speed limiter issue, an issue report has already been opened on the github by @ShadowLady https://github.com/hrydgard/ppsspp/issues/3145

unknownbrackets commented 11 years ago

Ah, so that's a 12% boost. I also thought 30% was too good to be true on a hyperthreaded P4.

-[Unknown]

vsub commented 11 years ago

Can we consider this a bug? You can enable\disable MT while ingame from the screen menus which lead to weird FPS rates

Start a game with MT enabled and then disable it from the screen menus. On Fate Unlimited Codes,when I disable it like that,the FPS goes below 20 and is constantly changing to different number

hrydgard commented 11 years ago

Yeah I need to fix that. It shouldn't be possible.

thedax commented 11 years ago

Kingdom Hearts BBS: Final Mix seems to hang during one of the beginning in-game sequences where you wake up after having that dream when MT is on. While it's off, it has no issues, in -1686-g9e53f2a. I'm unsure at this very moment if it has worked thus far with MT. I'll check shortly.

Edit: I went back to -1269-g7ba54b5 and it doesn't work there, either. It's probably safe to say it's never worked correctly with MT on.

prateem commented 11 years ago

Can confirm that BBS: Final Mix shows hangs with MT on, and works perfectly fine with MT off. Several cutscenes in the game actually trigger the MT failing (the cutscene of the Mark of Mastery trials, for example, and also when Terra opens the glowing purple door in Enchanted Dominion, as another one).

unknownbrackets commented 10 years ago

Hmm, this happens right after a pause signal. So pause signals probably don't work right, and that's probably why this happens.

It looks very likely to have something to do with that.

-[Unknown]

unknownbrackets commented 10 years ago

So, if I understand correctly, this issue remains only in Outrun 2006 and Project Diva, right? Any other games with issues?

If no, I think we should close this and open an issue for that more narrow thing, since this is long and covers many other problems. I think Outrun already has an issue but it seems to not be very specific either.

-[Unknown]

unknownbrackets commented 10 years ago

Anyway, #5987 makes one of the Diva demos run at ~27 fps on my computer. At the expense of performance, it could be improved to 28-29. Not sure what it actually runs at on a PSP, maybe not exactly 30?

Anyway, the problem is that he cpu is getting too far ahead of the gpu, because the gpu is doing slow things. The problem is, this is the entire goal of multithreaded - to allow it to go ahead.

These lines will mostly "fix" it (~29):

const int geIntervalUs = 1000000 / (60 * 10);
const int geBehindThresholdUs = 1000000 / (60 * 10);

However, they will also reduce e.g. Gods Eater Burst's speed by ~30% (in fact it will barely if at all be faster than multithreaded off.)

Personally I think 27 is good enough.

-[Unknown]

hrydgard commented 10 years ago

There can visually be a big difference between 30fps and 27 fps - the former will have uniform motion while the latter may stutter slightly 3 times per second. But maybe that's happening on the real PSP.

Either way there's indeed no reason to keep this mega-issue open any more, we should open new issues as necessary.

dbz400 commented 10 years ago

@unknownbrackets , Yes , outrun 2006 still running abnormal FPS with multithread on .

ulus10064_00000