-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
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/PPU reservations: Optimizations #8175
Conversation
elad335
commented
May 8, 2020
•
edited
Loading
edited
- Implement vm::reservation_trylock, optimized locking on reservation stores with no waiting. Always fail if reservation lock bits are set.
- Make SPU accurate GET transfers on non-TSX not modify reservation lock bits.
- Add some optimization regarding to unmodified data reservations writes.
- Use optimized PPU signaling to SPU on reservation pause.
- Improve SPU LLVM MFC transfers recompilation for non-TSX.
a577e84 to
d248c59
Compare
|
I do not know if it is related, but using your release on (already broken) Gran Turismo 6, I have got a semaphore timeout (appeared once, but not the second time). |
|
Got 1-2 more fps in Motorstorm Apoc. vs. today's master. I'm up to 22fps in my "test spot" now. :) |
|
I added a commit attempting to improve non-tsx performance, testers are welcome. |
|
Build failed, cannot test release. |
|
@lanesh4d0w fixed. |
|
The goal here is to improve performance both on non-TSX path and TSX path. |
|
Seems to have fixed Gran Turismo 6 When buying first vehicle : F {RSX [0x0bb6500]} SIG: Thread terminated due to fatal error: rsx::get_address(offset=0x346a100, location=0x1): RSXIO memory not mapped! Log file (also contains FW installation + config being changed to fit my processor and other things.) |
|
Gran Turismo 6 is still not fixed here. Are you using TSX? |
d2816b2 to
8d02d6d
Compare
|
@xddxd CPU not supported for TSX. The first launch (v 1.00 / no savedata) seemed to work. However, on second start, it doesn't, indeed. |
|
@xddxd Works if you don't have any savedata. I suppose it's a savedata issue. (since the save data is based on the Japanese game release, the European one might not like it.) |
|
Can confirm, it only works if there is no savedata. |
|
Added another optimization for non-TSX. |
|
No regressions so far when testing different games. No better results too. |
|
Actually wait a bit as I want to change a few lines. |
- Implement vm::reservation_trylock, optimized locking on reservation stores with no waiting. Always fail if reservation lock bitsa are set. - Make SPU accurate GET transfers on non-TSX not modify reservation lock bits. - Add some optimization regarding to unmodified data reservations writes.
|
Made the changes I wanted. |
|
Needs testing in a few games to ensure they didn't regress |
|
I tested them locally, I know what the changes are and what they affect. |
|
Update as per request.
|
||||||||||||||||||||||||||||||
|
Yakuza 0 Demo (OpenGL, Mesa, R9 280X) Master: 25-29 FPS RDR works better, didn't benchmark a single spot |
possible broken signaling in rare occusions.
possible broken signaling in rare occusions.
|
GOW 3 has improve a little bit performance , very good job developer |
|
@elad335 This PR also fixed Star Wars Force Unleashed 2 loading menus. However, it only works with TSX off. Can you look into fixing the TSX path too? |





