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

Minor (not really) update to waitable atomics API #9244

Merged
merged 9 commits into from Nov 12, 2020

Conversation

Nekotekina
Copy link
Member

No effect, but sorry if it breaks Accurate DMA. I hope it doesn't.

Instead of plain waiting while equal to some value,
it can be something like less, or greater, or even bitcount.
But it's a draft and untested. Hopefully doesn't break anything.
Restore batch notification with non-blocking attempts.
Check mask before locking the reference.
Can help to not bother non-eligible waiters.
It's not an optimization. It just allows some tricks safely.
Should fit into cache line perfectly.
Also makes ptr check more robust.
@Nekotekina
Copy link
Member Author

I fixed CPU overusage issue, also performance may improve a little bit. But could be my imagination.

Compress 16-bit ref counter and two 48+64 bit slot allocators.
This allowed to remove some weird unnecessary logic paths.
Adjust hashtable size to keep it the same.
Silly MSVC emits unnecessary initialize-on-first-use code guards.
Didn't check other compiler. But workaround just works anyway.
@Nekotekina Nekotekina changed the title Minor update to waitable atomics API Minor (not really) update to waitable atomics API Nov 12, 2020
Make sure forced notification ignores mask comparison.
Also fix masks provided by smaller types to correct ones.
@Nekotekina Nekotekina merged commit 3888b04 into RPCS3:master Nov 12, 2020
@Basmurd
Copy link

Basmurd commented Nov 12, 2020

Performance improved in "Wet" by an average of 30-50% depending on the arena. Previously, there were drawdowns of up to 13 frames, now the minimum is 24 FPS. You can move the game to the Playable category.

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

Successfully merging this pull request may close these issues.

None yet

2 participants