-
Notifications
You must be signed in to change notification settings - Fork 505
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
Jit sparse continuation #250
Conversation
the 2 extra builds are up on the Discord server in the #testing-jitsparse channel. |
pushed 2 new commits 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 |
I have been unable to boot the giant block version by any means, clicking the emulator window just causes it to lock up. |
f137331
to
a5dca04
Compare
updated locales and rebased for Canary 1.2.42 |
a1ee5bf
to
4a44c74
Compare
Rebased for Canary 1.2.47 |
4a44c74
to
95935b7
Compare
Rebased for Canary 1.2.48 |
Updated the Branch to use TinyBlock by default. In the next commit GiantBlock will be default with TinyBlock being used instead of LowPowerPTC is enabled.
The Sparse Jit Function Table sizes now depend on the LowPowerPTC setting. This means lower power devices won't be impacted as hard by the higher ram speed requirement of GiantBlock. Also added functionality to the PPTC Initializer so it now supports different PPTC Profiles simultaneously, which makes switching between TinyBlock/LowPower and GiantBlock/HighPower seamless. This also opens the door for the potential of PPTC cache with exefs mods enabled in the future. Default (aka HighPower) currently has an Avalonia bug that causes a crash when starting a game, it can be bypassed be clicking the window multiple times durring loading until the window unfreezes.
When using GiantBlock the memory block used for filling SparseMemoryBlocks is now 4096 times bigger. Cuts function table mapping times by a factor of about 5000
This reverts commit a5dca04.
The emulator now always uses GiantBlock. TinyBlock has been left in, but is unused.
The PTC InternalVersion is now included and the default PPTC profile os now called "default"
it's unused and doesn't need to be here, so it's getting reverted
this doesn't affect how the emulator runs as sparse only has 2 levels, but it functionally already supports more levels so the limit can be removed.
4f58339
to
fd81089
Compare
is it possible to implement switching between the new and old jit compilation method? |
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. |
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. |
It wouldn't; Software memory mode is a massive performance hit. |
@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. |
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 see 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. --------- Co-authored-by: Evan Husted <gr33m11@gmail.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.