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: Fixes #3526

Merged
merged 4 commits into from
Oct 4, 2017
Merged

spu: Fixes #3526

merged 4 commits into from
Oct 4, 2017

Conversation

kd-11
Copy link
Contributor

@kd-11 kd-11 commented Oct 3, 2017

  • Implement FM for interpreter fast and asmjit
  • Fixes a bug in FMA/FMS/FNMS where cmpunord was used as an optimization but inadvertently broke some corner cases :p

kd-11 added 2 commits October 3, 2017 22:13
- Partially implement accurate FM
- Fix FMA/FMS/FNMS by removing an optimization that does not work for INF (cmpunord)
@ghost
Copy link

ghost commented Oct 3, 2017

Now Journey works on asmjit. Also need "Write Color Buffers" and "Strict Rendering Mode" or there will be a black screen.
Gameplay:
123
Gamepad required. SadFace.

@woj1993
Copy link

woj1993 commented Oct 4, 2017

@kd-11 What is missing in FM that it is "only" partially implemented?

- cmpunord does not catch all cases of an extended result/overflow
@kd-11
Copy link
Contributor Author

kd-11 commented Oct 4, 2017

@kd-11
Copy link
Contributor Author

kd-11 commented Oct 4, 2017

Actually I set the wrong value for FLT_MAX. Fixing it should significantly improve accuracy.

@SNK-Afridi
Copy link

Spider man Edge of time blus 30760 shows no more black screen when i punch venom.
but crashes with pink error. Saw performance improvement as well. LLVM,ASMJIT, liblv2 only. vulkan and opengl as well and strict mode on off both.
RPCS3.log.gz

F {SPU[0x2000004] Thread (GoliathInstCellSpursKernel4)} class std::runtime_error thrown: Branch-to-self (0x00eec)
(in file C:\rpcs3\rpcs3\Emu\Cell\SPUASMJITRecompiler.cpp:2297)
F {MFC Thread} MEM: Access violation reading location 0x0

hmm should i post anything else?

- Still does not handle corner cases well (e.g inf * 1.2 because SPU does not have concept of inf)
@kd-11
Copy link
Contributor Author

kd-11 commented Oct 4, 2017

Tweaked to handle all corner cases except for INF. SPUs just process INF like a general value which breaks FM with INF. Auto-test only fails INF case for now, but I think it should be good enough.
@SNK-Afridi Does it work without crashing without this PR? What happens when the same happens on master?

@SNK-Afridi
Copy link

SNK-Afridi commented Oct 4, 2017

this is the build i used to give you the log in my above comment.
tested this master build from rpcs3 download and it give same error but the screen is black, used the same settings as above.
i have been testing this paste 1 hour and found out that not attacking venom i did not get crash. but after two or three attacks again same error.
i used SPU interpreter fast which was too slow but moved paste that stage without error. Now in next stage i took some screen shot in same location using your build and master build..
kd-11 build
desktop screenshot 2017 10 04 - 20 40 35 52
desktop screenshot 2017 10 04 - 20 41 21 48

master build.
desktop screenshot 2017 10 04 - 20 45 42 61
desktop screenshot 2017 10 04 - 20 46 25 94

it is sad to say this. but i tested a july build and it gave me same error as well :(

i forgot to mention. after using interpreter fast to move paste venom stage. i again used ASMJIT. and then i took the screen shots above. i hope i am not confusing you :(

edit... is it okay if i post stuff here?

@kd-11 kd-11 merged commit b338c81 into RPCS3:master Oct 4, 2017
@kd-11 kd-11 deleted the spu-stuff branch October 13, 2017 12:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants