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
BBA/HLE: Increase polling efficiency #12560
Conversation
Sorry for the late response here. Is the optimal way to test this with a Windows computer? Is there any need to test it on Linux/Android connectivity, which already worked fine for me. |
Not necessarily, Dolphin on Linux/Android were working fine for me as well. Whereas I had matchmaking/stability issues on Windows which seems less present on this build. Though, I wasn't able to confirm that's related.
It might be worth checking if there is a speed improvement compared to the current build. I was only able to confirm that by sleeping more often, it degrades the performance (FPS) significantly on Mario Kart: Double Dash and Kirby Air Ride. That's why I suppose that sleeping less often might improve the performance. Sadly my actual setup (Windows PC + Linux VM + Android phone) don't allow me to explore this further in a reliable way. I might be able to push the testing further by adding two of my Wii into the mix (using Nintendont) but it will have to wait 2 weeks or so as I don't have the time to do so currently. |
I was able to test the Universal MacOS binary on an M-series chip just now and had no issues with PSO. I also tested the ARM64 build as well without issue. It did feel like the network speed was faster, but I can also attribute that to a placebo effect, and I'm not sure one would really see much improvement for a game that was made for the days of dial up internet, though I swear it felt better. Who knows. Thank you for this. E: Tested on Windows X64 and also had no issues with online functionality. |
You can rebase this now. |
I did some extensive testing with this PR. When I increase the sleep period it does decrease performance, sleeping less often seem to improve performance to some extent. However, when comparing with latest master and this PR, I didn't notice a difference when playing. My testing environmentI tested this PR using Mario Kart: Double Dash! (60Hz mode) and in my testing environment (where I have a TV and my Nintendo Wiis). This room is different from where I usually use my Windows 10 laptop. All devices were connected to the same Wi-Fi network and my Windows machine has UPnP service disabled and Windows' network protection turned off. Devices
Matchmaking testsHere is the result of different matchmaking orders when using this PR :
Some takeaways
These tests aren't as rigorous/stable as proper hardware testing (especially since I don't have a BBA) so they should be taken as what they are, some (bruteforce) testing within an environment where I try to keep the same settings as a base for each test case. |
In my experience (prior to this PR) real BBA worked fine as long as it wasn't the first thing to connect. Kirby Air Ride was way more stringent than Mario Kart though. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JMC asked me to review this. Completely untested but the code changes look sane.
@JMC47 If you want to merge it you should test it.
I tested it on Linux a while back, but I can't test it on Windows because I don't run that OS anymore, and that's where the actual benefits supposedly show. |
Let's just get this in, people will yell if it breaks stuff anyway... |
This PR is based on #12559 and updates the way BBA/HLE polls data. It does so by sleeping less often and pulling data as soon as possible and as much as possible.
I suspect this PR has improved the matchmaking stability. My Windows build seems to match consistently my Android phone and the other way around. It might be a coincidence since I don't have a lot of device to test it.
This PR is ready to be tested.