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

[Feature Request] #6978-JIT-Sparse-function-table from test build fork #39

Closed
Maskworkr opened this issue Oct 22, 2024 · 12 comments
Closed
Labels
enhancement New feature or request

Comments

@Maskworkr
Copy link

Overview

Someone more able than me who could look up to this branch fork https://github.com/Ryujinx-NX/Ryujinx/tree/%236978-JIT-Sparse-function-table from peri peri work, could be a huge boost into performance since it was never merged due to no reviews, i guess its big work for someone else that could do, im leaving this here for the preminent future

Smaller details

build test: https://www.youtube.com/watch?v=zY8nP1iu5ls

Nature of request

hoping this could be helpful for someone that actually contributes

Why would this feature be useful?

Performance upgrade

@Maskworkr Maskworkr added the enhancement New feature or request label Oct 22, 2024
@extherian
Copy link
Contributor

I am trying to compile this branch for testing, but using git to clone branches of projects is a pain, I tried to run git clone https://github.com/Ryujinx-NX/Ryujinx/tree/%236978-JIT-Sparse-function-table but it just tells me repository not found. Has anyone else actually successfully compiled this version? Or at least could tell me what command to run to clone this specific branch and not the Ryujinx-NX master?

@GreemDev
Copy link
Member

You're supposed to clone the repository, and checkout branches or commits, not directly clone branches

@extherian
Copy link
Contributor

Thanks Greem, I compiled it successfully, now to test it.

@extherian
Copy link
Contributor

Here is a link to the build I compiled in case anyone else wants to test it, hopefully I didn't end up compiling a slow debug build or something like that https://drive.google.com/file/d/1cKXW0JKLZSqt3rQjF20k_g0FFQ38NYL7/view?usp=sharing

@Maskworkr
Copy link
Author

Here is a link to the build I compiled in case anyone else wants to test it, hopefully I didn't end up compiling a slow debug build or something like that https://drive.google.com/file/d/1cKXW0JKLZSqt3rQjF20k_g0FFQ38NYL7/view?usp=sharing

imagen_2024-10-26_113715690
wont let me download it because of said virus

@extherian

This comment was marked as outdated.

@extherian
Copy link
Contributor

OK, here is my own personal regression test with a game I know to be prone to crashing: Xenoblade Chronicles 2. There is a feature called the Events Theater, which allows users to rewatch cutscenes that they already saw playing through the game. One of these cutscenes, "After Bana!", in Chapter 4: Aegis, reliably causes the game to crash every time it is run on yuzu, unless CPU Accuracy is set to Paranoid (disables most optimisations). Notably, these same cutscene, when run from the Events Theater in Greem's Ryujinx, will never cause a crash, even when the Memory Manager Mode is set to Host Unchecked (fastest, unsafe). Nor does this issue occur in the Sparse JIT build, indicating that at least for this title, the performance benefits of using a sparse jit table do not come at the cost of accurate CPU recompilation.

@extherian
Copy link
Contributor

extherian commented Oct 27, 2024

By the way, I would also like to advise people to delete the PPTC cache for any games they plan on testing if they are using the same user folder as for Greem's build, it is possible that PPTC caches for the Greem build may not be fully compatible with the Sparse JIT build, so right click on the game you want to test, go to "Cache Management", "Open PPTC Directory", and delete all files and folders you find in the window that is opened.

@GreemDev
Copy link
Member

By the way, I would also like to advise people to delete the PPTC cache for any games they plan on testing if they are using the same user folder as for Greem's build, it is possible that PPTC caches for the Greem build may not be fully compatible with the Sparse JIT build, so right click on the game you want to test, go to "Cache Management", "Open PPTC Directory", and delete all files and folders you find in the window that is opened.

Seems like they aren't compatible, the JIT Sparse changes change a version constant in Ptc.cs

@extherian
Copy link
Contributor

Yes, it's likely that if this were to be merged upstream, people would have to delete their existing PPTC cache. Anyway, for the time being, I am switching to using the Sparse JIT build for playing through the three xenoblade games, I will report back if I can isolate any accuracy regressions to the Sparse JIT changes.

@extherian
Copy link
Contributor

New build from Greem, merging the Sparse JIT functions into this fork:

For Windows users
For macOS users
For Linux PC users
For Linux ARM users

Please use these instead of my links in the post above.

@GreemDev
Copy link
Member

Closing this issue as this is now an open PR. Please go there for testing discussion

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

No branches or pull requests

3 participants