Skip to content
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: improve analyser [WIP] #4750

Merged
merged 2 commits into from
Jun 22, 2018
Merged

SPU: improve analyser [WIP] #4750

merged 2 commits into from
Jun 22, 2018

Conversation

Nekotekina
Copy link
Member

Detailed description is under construction.

@Nekotekina
Copy link
Member Author

Potential fixes are applied to solve the problem of crashing on the first run with SPU LLVM.

@alex88510
Copy link

alex88510 commented Jun 20, 2018

ToCS previously will hang on SPU LLVM.
With this PR, it is able to load and play intro video but later crash the emulator.

I saw it generating a lot of SPU LLVM cache (first run)
RPCS3.log.gz

EDIT: after last changes of this PR merged, ToCS is able to run with SPU LLVM. (only tested a little)
First run will cause a lot of stuttering as it is generating the SPU cache.

@isshininu
Copy link
Contributor

isshininu commented Jun 21, 2018

With this PR I can test games, if they are SPU LLVM-compatible?
I also mean - if game crashes on SPU ASMJIT, perhaps it can work on SPU LLVM now?

@Nekotekina
Copy link
Member Author

Wait until next PR update though.

@isshininu
Copy link
Contributor

With this PR Silent Hill Downpour goes ingame in SPU LLVM for the first time.
No sound ingame, only in start menu.

RPCS3.log.gz

P.S.

F {PPU[0x1000000] Thread (main_thread)} class std::runtime_error thrown: Compilation failed

Same compilation error for Demon's Souls, though i am not sure if this game was even tested before.

RPCS3.log.gz

Build SPU cache after PPU, fix mixing progress
SPU ASMJIT: add support for Giga mode
SPU ASMJIT: use the same spu.log location as SPU LLVM
SPU: improve spu.log disasm
SPU: improve trampolines, unify with SPU ASMJIT
SPU: decode interrupt handler address from BR/BRA at 0x0
SPU LLVM: support Mega/Giga modes
SPU LLVM: implement function chunks
SPU LLVM: use PHI nodes, value visibility across basic blocks
SPU LLVM: implement function chunk table
New simple memory manager for LLVM (bugfix)
Simplify code by using root config location for /dev_flash/
Hide Emu.GetEmuDir() function due to the risk of misuse
@Nekotekina Nekotekina merged commit 81e5f3b into RPCS3:master Jun 22, 2018
@spyropt
Copy link

spyropt commented Jun 22, 2018

Persona 5 ASMJIT
F {SPU[0x2000001] Thread (gfdSpursCellSpursKernel1) [0x0b5b8]} MEM: Access violation writing location 0xffdead00
RPCS3.log.gz

@Hasster1
Copy link
Contributor

That's a really great idea - to merge the PR with giant [Work In Progress] words.

@spyropt
Copy link

spyropt commented Jun 22, 2018

The last of us now locks before showing Naughty Dog logo
tryed with cpu blit/wcb and without on asmjit
RPCS3.log.gz

@AniLeo
Copy link
Member

AniLeo commented Jun 22, 2018

It's his PR, it's a great idea to merge whenever he feels like it

@Emulator-Team-2
Copy link

@spyropt
img_20180622_203658

@spyropt
Copy link

spyropt commented Jun 22, 2018

@Emulator-Team-2 dont know why you directed that to me but ok, if its not to report regressions... i simple stop doing it.
The same applies to all the user writing in this github.
lets delete all the issues by the way since its an emulator and not some shitty game...

@AniLeo
Copy link
Member

AniLeo commented Jun 22, 2018

Persona 5 w/ SPU ASMJIT

image

@Nekotekina
Copy link
Member Author

@spyropt Maybe you need to delete SPU cache, if you tested this PR before merge. Or need more information to reproduce.

@spyropt
Copy link

spyropt commented Jun 22, 2018

@Nekotekina did a fresh install and the same thing happens, could be because my cpu does not support avx/tsx
spu llvm works fine
The master build before this pr got merged works with asmjit

@AniLeo
Copy link
Member

AniLeo commented Jun 22, 2018

My test was done on a non-TSX CPU, but has AVX, AVX2 and XOP

@spyropt
Copy link

spyropt commented Jun 22, 2018

@AniLeo Ijust tested on a 3770k avx cpu and it works fine on asmjit
on my other cpu x5675 just goes in infinite loading
image

with F {SPU[0x2000004] Thread (gfdSpursCellSpursKernel4) [0x0b5b8]} MEM: Access violation writing location 0xffdead00

usually i do all my tests on the x5675 since its an arcade machine just for emulation

@Nekotekina
Copy link
Member Author

Reproduced! AVX cpu are unaffected.

@psennermann
Copy link

I have an AVX+ cpu (i5 7400 - no TSX) and I think that this PR causes Demon's Soul (maybe other games as well?) to reliably hang/crash on my system…

Win10
Gtx 1060 3gb
i5 7400

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants