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
SPU: Lock-line reservation optimizations + Savestates bugfix #12523
Conversation
8f59609
to
53fa746
Compare
Added experimental SPU setting called "SPU Inaccurate Reservations" which may benefit non-TSX users. Game config file only atm. |
generally it seems to keep 30 fps better and more fluidity on xeon e5450 quadcore 3 ghz, without changing the optimizations I have on at the moment, 3 spurs threads and 60fps patch with 30 vblank ... |
@Nerboruto Tested with inaccurate SPU reservations? |
I have not tried to change anything in config, now I'm going to try again .. |
This comment was marked as off-topic.
This comment was marked as off-topic.
64445ea
to
47110ac
Compare
Fixed a bug which made the new setting randomly not optimize in different runs. |
i tried with spu inaccurate reservation false and true... |
Added another optimization, please test and report performance regressions. |
This comment was marked as off-topic.
This comment was marked as off-topic.
71ae3c7
to
8ccd92d
Compare
well first i attach my config to see if i'm wrong something, i set it to true.. |
0a79106
to
c25b5f5
Compare
* Make this setting guard all reservation waitings. (renamed) * Revert atomic list usage: it's more expensive and not needed because it has a timeout and is not optimized for the rest of the waitables.
@Hasster1 Thanks, seemingly fixed it and some performance miss-optimizations with it. |
Wonderful job, nothing is freezing/crashing anymore with the inaccurate SPU reservations. Thank you. |
Looks like Inaccurate SPU Reservations breaks InFamous. Freezes right after the intro without any errors. |
|
||
if (far_jump) | ||
{ | ||
// Replace the function with ppu_far_jump |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think it works as intended. Module-local jumps don't use the global mapping.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes but it updates its PPU hash and forces recompilation. That's how it was handled before.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's good but how forcing recompilation would handle local branches? Especially with PPUTranslator having far jump part removed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It uses the manually installed value because the function is removed from compilation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The code below is responsible for its compilation in llvm and that's skipped.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay, I see now.
Implement cellSpursRequestIdleSpu
Oh, i see that it's been reversed to avoid confusion. Sorry. |
This pull request is known to fix audio stutters and heavy framerate drops in Demon Souls for low threaded CPUs.
Fixes #12513