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

Savestates: Multi-threaded compression, use ZSTD #15587

Merged
merged 9 commits into from
May 14, 2024

Conversation

elad335
Copy link
Contributor

@elad335 elad335 commented May 13, 2024

  • Made saving extremely fast using multi-threaded compression, this was especially painful on AMD CPUs because their single thread performance vs multi thread performance difference is huge. But it also makes the life of Intel users much better too.
  • Use ZSTD to compress savestates, a modern compression API with focus on performance with great compression ratios. So now RPCS3 supports both .SAVESTAT.gz and .SAVESTAT.zst inputs, but would create only .SAVESTAT.zst.
  • Fix an SPU LLVM bug with savestates saving regarding access violations.
  • Minor text fix in progress dialog. (showing "00s" for example instead of something clearer like "done", or "01s" instead of simply "1s")
  • Fix sinking stores with GPR barriers in SPU LLVM, found when testing savestates with Demon's Souls with mr spaces.

Overall saving performance has been increased in more than 800%, reducing saving time from 30+ seconds to just 3 on Demon Souls gameplay which utilizes HDD1 cache so its savestates are heavy. And the savestate file size itself has been reduced in more than 100MB.

@elad335 elad335 added Enhancement Bugfix Optimization Optimizes existing code Savestates Anything that involves savestates labels May 13, 2024
.gitmodules Outdated Show resolved Hide resolved
rpcs3.sln Outdated Show resolved Hide resolved
@elad335 elad335 force-pushed the savestate1 branch 2 times, most recently from 9ba5c00 to 5be4a95 Compare May 13, 2024 14:48
@elad335 elad335 force-pushed the savestate1 branch 3 times, most recently from ccc74be to db3029d Compare May 14, 2024 14:48
Thanks to @RipleyTom

Co-Authored-By: RipleyTom <RipleyTom@users.noreply.github.com>
@elad335 elad335 merged commit 6bceebb into RPCS3:master May 14, 2024
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bugfix Enhancement Optimization Optimizes existing code Savestates Anything that involves savestates
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants