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
[WIP] SPU PIC support #5944
[WIP] SPU PIC support #5944
Conversation
Nothing but fatals or freezes during SPU compile on my games. |
I had good experience with LLVM Mega in NHL 16, no segfault, no freeze |
Spider-Man Shattered Dimensions [BLES00946] now boots and see a huge improvement in terms of spu compilation. nearly all spu programs are reused now. in master 30 seconds of gameplay used to generate 11k spu programs, with 2k unique hashes. now it's 2113 programs and 2054 unique hashes from the same playtime. |
RDR now generates 7k SPU programs in the same playtime it used to generate about 100k. Stutter is virtually gone when using SPU LLVM, and I'm getting 16-23FPS where I used to get 1-16FPS (9900k @ 5.1GHz). TLOU has regressed (might be related to the previous LLVM PR though), and no longer gets past the loading screen. UC1 also no longer manages to get to menu. If I do not use Safe, all these games I mentioned seem to crash immediately at startup. |
Fist of the North Star: Ken's Rage - DEMO [NPEB90285] |
Metal Gear Rising Revengance got massive improvement with SPU LLVM safe, went from 100k+ SPU cache to 7k |
Splatterhouse is finally playable on the SPU LLVM! No more constant cache building! Nice work. I think this PR fixes this then: #5843 Unfortunately, Splatterhouse still gets PPU mem errors after a few mins I found out, just a lot less than ASMJIT. This is being tracked separately here: #5837 UPDATE 1: Issue 2: As a note, not sure if ASMJIT is supposed to be unaffected, but it at least crashes on Splatterhouse. |
Edit: Whatever issue I'm having seems to affect master as well, so it's unrelated to this PR. |
Whatever issue MSuih was having i had tried it out in RDR and couldn reproduce. Works from cold cache and after emulator restart with a primed cache of 3737 spu units compiled. LLVM block size Mega. |
Updated my post above with a quick pass through some titles, noting some that are broken now on this PR. I'll continue to update it with new commit pushes. |
Settings used: SPU LLVM in Safe mode.
|
no sound in twisted metal BCUS98106 with SPU LLVM |
RPCS3 auto closes when closing the game window: Eternal Sonata - the game window auto closes after loading the shaders |
@vsub Try new commit. ASMJIT is currently just unsupported — it needs more work. |
Whatever that RDR safe mode issue was, it's now fixed with latest commit and I can load the game even with existing SPU cache. Mega mode still has some issues but that's not caused by this PR. |
@Nekotekina Yes,all problems mentioned above are fixed and Eternal Sonata spu cache seems to be WAY better. And also the game runs a little fasted on this pr |
RDR started new game, did some random moves 7,5k On Safe never had it on safe before, but on Mega begining of the game was about 35-40k, while Mega cache from whole game is ~59k |
Yet Mega mode regression is a part of previous Giga PR |
On the latest build, closing emu window no longer crashes emu (on Master). Several broken games on Master with SPU LLVM work again (Ridge Racer 7, HOTD4, Razing, Xmen, etc). However, Wipeout and Motorstorm Apocolypse are still unstable (even with cleared cache). Both are fine on Master. Wipeout black screen upon entergameplay: MS Apoc freezes loading menus: |
ae1444e
to
d2b8097
Compare
This might fix j-star victory versus |
With recent fix of Mega mode |
@Nekotekina Musou Orochi 2 Ultimate is full speed ! Huge speed-up! Amazing!! Thank you very much!(spu ASMJIT+MEGA) SPU LLVM no longer <1 FPS , great work ! But still random freeze in game. |
Tested Trinity: Souls of Zill O'll. No improvement in performance. |
@tabnk Only report improvements/regressions from master. On latest build, GOW3 is still broken on safe/mega. GOWA though, seems more stable than Master (on mega only). |
Just tested spu giga with latest build. Persona 5 performs way worse than with mega. ~15fps in places with lots of npcs. Got the log in case it helps. My pc is ivy bridge. |
Don't bother with Giga, at least until I start working on it specifically. |
SPU ASMJIT not supported yet. Giga mode not supported properly.
Adjust restored stack pointer for the lack of tail call.
Use GHC calling convention directly for SPU object entry points. This may address performance degradation after RPCS3#5923.
Avoid returns from the recompiler gateway, favoring tail calls. This may address performance degradation after RPCS3#5923.
Renewed and adapted for PIC and all branch types. This may address performance degradation after RPCS3#5923.
Pauses SPURS threads beyond limit automatically if set.
Also move disasm to spu_recompiler_base::dump. Interleave disasm with block target info for convenience.
Also cleanup and adapt for GHC CC.
Don't scan before the entry point. Disable stack mirror in SPU LLVM. Improve analyser logic for holes.
regression for WipEout® HD Fury [BCES00664] textures pop in and out. stutter. audio is even more out of sync. |
Report regressions on the tracker #5965 |
strange.... . after i reboot pc now mega mode work. |
Settings: