Jit sparse continuation #250

Merged
LotP1 merged 13 commits from jit-sparse-continuation into master 2024-11-22 21:33:44 +00:00
LotP1 commented 2024-11-15 22:35:21 +00:00 (Migrated from github.com)

More up to date build of the JIT Sparse PR for continued development.
JIT Sparse Function Table was originally developed by riperiperi for the original Ryujinx project, and decreased the amount of layers in the Function Table structure, to decrease lookup times at the cost of slightly higher RAM usage.
This PR rebalances the JIT Sparse Function Table to be a bit more RAM intensive, but faster in workloads where the JIT Function Table is a bottleneck. Faster RAM will see a bigger impact and slower RAM (DDR3 and potentially slow DDR4) will se a slight performance decrease.
This PR also implements a base for a PPTC profile system that could allow for PPTC with ExeFS mods enabled in the future.
This PR also potentially fixes a strange issue where Avalonia would time out in some rare instances, e.g. when running ExeFS mods with TotK and a strange controller configuration.

More up to date build of the JIT Sparse PR for continued development. JIT Sparse Function Table was originally developed by riperiperi for the original Ryujinx project, and decreased the amount of layers in the Function Table structure, to decrease lookup times at the cost of slightly higher RAM usage. This PR rebalances the JIT Sparse Function Table to be a bit more RAM intensive, but faster in workloads where the JIT Function Table is a bottleneck. Faster RAM will see a bigger impact and slower RAM (DDR3 and potentially slow DDR4) will se a slight performance decrease. This PR also implements a base for a PPTC profile system that could allow for PPTC with ExeFS mods enabled in the future. This PR also potentially fixes a strange issue where Avalonia would time out in some rare instances, e.g. when running ExeFS mods with TotK and a strange controller configuration.
github-actions[bot] commented 2024-11-15 22:44:35 +00:00 (Migrated from github.com)
Download the artifacts for this pull request: * [ryujinx-Release-1.2.0+5f138e6-linux_arm64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226479510.zip) * [ryujinx-Release-1.2.0+5f138e6-linux_arm64-AppImage](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226479676.zip) * [ryujinx-Release-1.2.0+5f138e6-linux_x64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226484383.zip) * [ryujinx-Release-1.2.0+5f138e6-linux_x64-AppImage](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226484519.zip) * [ryujinx-Release-1.2.0+5f138e6-macos_universal](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226492364.zip) * [ryujinx-Release-1.2.0+5f138e6-win_x64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226495511.zip) <details><summary>GUI-less</summary> * [nogui-ryujinx-Release-1.2.0+5f138e6-linux_arm64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226479905.zip) * [nogui-ryujinx-Release-1.2.0+5f138e6-linux_x64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226484692.zip) * [nogui-ryujinx-Release-1.2.0+5f138e6-macos_universal](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226492491.zip) * [nogui-ryujinx-Release-1.2.0+5f138e6-win_x64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226495744.zip) </details> <details><summary>Only for Developers</summary> * [ryujinx-Debug-1.2.0+5f138e6-linux_arm64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226478566.zip) * [ryujinx-Debug-1.2.0+5f138e6-linux_arm64-AppImage](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226478643.zip) * [nogui-ryujinx-Debug-1.2.0+5f138e6-linux_arm64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226478748.zip) * [ryujinx-Debug-1.2.0+5f138e6-linux_x64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226489603.zip) * [ryujinx-Debug-1.2.0+5f138e6-linux_x64-AppImage](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226489806.zip) * [ryujinx-Debug-1.2.0+5f138e6-macos_universal](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226490080.zip) * [nogui-ryujinx-Debug-1.2.0+5f138e6-macos_universal](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226490199.zip) * [nogui-ryujinx-Debug-1.2.0+5f138e6-linux_x64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226490277.zip) * [ryujinx-Debug-1.2.0+5f138e6-win_x64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226497832.zip) * [nogui-ryujinx-Debug-1.2.0+5f138e6-win_x64](https://nightly.link/GreemDev/Ryujinx/actions/artifacts/2226498056.zip) </details>
LotP1 commented 2024-11-15 22:45:32 +00:00 (Migrated from github.com)

the 2 extra builds are up on the Discord server in the #testing-jitsparse channel.
the files were too big for github.

the 2 extra builds are up on the Discord server in the #testing-jitsparse channel. the files were too big for github.
LotP1 commented 2024-11-16 18:12:52 +00:00 (Migrated from github.com)

pushed 2 new commits
you can now choose between GiantBlock (better for high end) and TinyBlock (better for low end) by using the LowPowerPPTC option in settings

Default (aka GiantBlock) is a bit weird to launch, it causes a bug we haven't fixed yet, but if you spam click the emulator window while it's starting the game it should successfully boot

pushed 2 new commits you can now choose between GiantBlock (better for high end) and TinyBlock (better for low end) by using the LowPowerPPTC option in settings Default (aka GiantBlock) is a bit weird to launch, it causes a bug we haven't fixed yet, but if you spam click the emulator window while it's starting the game it should successfully boot
extherian commented 2024-11-17 10:27:16 +00:00 (Migrated from github.com)

I have been unable to boot the giant block version by any means, clicking the emulator window just causes it to lock up.

I have been unable to boot the giant block version by any means, clicking the emulator window just causes it to lock up.
LotP1 commented 2024-11-18 21:56:31 +00:00 (Migrated from github.com)

updated locales and rebased for Canary 1.2.42

updated locales and rebased for Canary 1.2.42
LotP1 commented 2024-11-20 14:53:23 +00:00 (Migrated from github.com)

Rebased for Canary 1.2.47

Rebased for Canary 1.2.47
LotP1 commented 2024-11-20 18:52:02 +00:00 (Migrated from github.com)

Rebased for Canary 1.2.48

Rebased for Canary 1.2.48
Goodfeat commented 2024-11-28 09:42:58 +00:00 (Migrated from github.com)

is it possible to implement switching between the new and old jit compilation method?

is it possible to implement switching between the new and old jit compilation method?
LotP1 commented 2024-11-28 09:49:09 +00:00 (Migrated from github.com)

is it possible to implement switching between the new and old jit compilation method?

No.
I am aware that some games are currently having issues with the new JIT Sparse feature, like SSBU, and i am actively looking into fixing those issues at the moment in #319.

> is it possible to implement switching between the new and old jit compilation method? No. I am aware that some games are currently having issues with the new JIT Sparse feature, like SSBU, and i am actively looking into fixing those issues at the moment in #319.
Goodfeat commented 2024-11-28 10:06:48 +00:00 (Migrated from github.com)

No.

Very sad, I'll try to come up with something then. Unfortunately, despite the fact that this update subjectively makes games more stable, the update hits the performance for older systems.

> No. Very sad, I'll try to come up with something then. Unfortunately, despite the fact that this update subjectively makes games more stable, the update hits the performance for older systems.
GreemDev commented 2024-11-28 10:26:14 +00:00 (Migrated from github.com)

No.

Very sad, I'll try to come up with something then. Unfortunately, despite the fact that this update subjectively makes games more stable, the update hits the performance for older systems.

Performance on older systems is not something we care about.

> > No. > > Very sad, I'll try to come up with something then. Unfortunately, despite the fact that this update subjectively makes games more stable, the update hits the performance for older systems. Performance on older systems is not something we care about.
LotP1 commented 2024-11-28 10:32:47 +00:00 (Migrated from github.com)

No.

Very sad, I'll try to come up with something then. Unfortunately, despite the fact that this update subjectively makes games more stable, the update hits the performance for older systems.

Yeah we know that, but the goal of Ryujinx is to work the best out of the box so we'd rather not make a million options, and this should only affect DDR3 and very slow DDR4 systems which aren't that common anymore.
You can still run with the old JIT Function Table by using the Software setting for memory management, but idk if that would give you a performance boost.

> > No. > > Very sad, I'll try to come up with something then. Unfortunately, despite the fact that this update subjectively makes games more stable, the update hits the performance for older systems. Yeah we know that, but the goal of Ryujinx is to work the best out of the box so we'd rather not make a million options, and this should only affect DDR3 and very slow DDR4 systems which aren't that common anymore. You can still run with the old JIT Function Table by using the Software setting for memory management, but idk if that would give you a performance boost.
GreemDev commented 2024-11-28 10:34:58 +00:00 (Migrated from github.com)

You can still run with the old JIT Function Table by using the Software setting for memory management, but idk if that would give you a performance boost.

It wouldn't; Software memory mode is a massive performance hit.

> You can still run with the old JIT Function Table by using the Software setting for memory management, but idk if that would give you a performance boost. It wouldn't; Software memory mode is a massive performance hit.
KeatonTheBot commented 2024-11-28 16:09:30 +00:00 (Migrated from github.com)

No.

Very sad, I'll try to come up with something then. Unfortunately, despite the fact that this update subjectively makes games more stable, the update hits the performance for older systems.

Performance on older systems is not something we care about.

@LotP1 @Goodfeat Primarily, no. Performance shouldn't be the focus of an accuracy-based emulator, but opportunities to increase performance shouldn't be frowned upon unless it sacrifices accuracy. IMO: Accuracy first, then performance improvements if possible. That's not always feasible, but they shouldn't be written off.

> > > No. > > > > > > Very sad, I'll try to come up with something then. Unfortunately, despite the fact that this update subjectively makes games more stable, the update hits the performance for older systems. > > Performance on older systems is not something we care about. @LotP1 @Goodfeat Primarily, no. Performance shouldn't be the focus of an accuracy-based emulator, but opportunities to increase performance shouldn't be frowned upon _unless_ it sacrifices accuracy. IMO: Accuracy first, then performance improvements if possible. That's not always feasible, but they shouldn't be written off.
Sign in to join this conversation.
No description provided.