-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix some more GPU thread sync issues #3120
Conversation
Could be that it's about to wake listsync, does, and then we wait.
Makes debugging a bit easier.
Fixes fps drops in yet other games with multithreading enabled.
Also fixes GE timing in the following games when MT is enabled (#3116 (comment)) :- Monster Hunter Freedom Unite |
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?
Got some strange crashes.
Added a bit of a hack to workaround the issue where somehow, display lists are being left unprocessed. For me it is rare, and processing lists on a sync doesn't even seem necessarily wrong. It's not really a fix, though, but it does make it recover. Let's see if I can find what I broke in God of War. Hmm... demo works... maybe/probably this helped it too. -[Unknown] |
I have to retract my previous statement about Project Diva 2nd being fixed by this series of commits, because apparently it still isn't, even after all the commits have been manually merged. Internal FPS is still abysmal at the character screen (9-15) and is pretty much unplayable with MT on, since it's very stuttery. Also, leaving it to idle at the said character screen leads to a frenzy of Speed/FPS changes and then, a crash. Results for the Monhun games and Gods eater burst still holds true. These commits are still good to go, it seems like Project Diva 2nd has its own class of issues with MT. #3116 (comment) |
My guess is that that game has an issue with never syncing lists/draws and not being happy with them essentially taking until the end of the frame. The best idea I have to fix it is:
This seems a bit complicated but maybe not horrible. X would be probably easy to tune, and Y could be 370,000 (1/10th a frame), but Z will probably be harder to tune properly. Or maybe Z would be 0. -[Unknown] |
Capped waits are usually a code smell, because you get a different "state" afterwards if it hits than if it doesn't, which may be hard to reason about. In this case I don't think it's that bad though.. |
I think your idea with exposing and looking at the tick offset sounds very reasonable. |
Fix some more GPU thread sync issues
I agree about capped waits, but since win32 xp doesn't do locking atomically on condition variables, it's definitely possible an event might slip through the cracks. It's also sorta safer in this case. -[Unknown] |
Do i need to be here for help? My dangan tonpa isn't working, crash on startup, ios 5S. Read through the steps but doesn't work |
Mostly I was trying to hunt for a very random and hard to repro hang I'm getting in Tales of Phantasia X. I'm not sure if I got it...
Anyway, this fixes a problem with the dirty FB check skipping way too many frames, since it didn't give the GE time to finish. Should not hurt performance, and fixes at least God Eater Burst.
Could maybe fix Virtua Tennis too.
-[Unknown]