libretro / beetle-psx-libretro

Standalone port/fork of Mednafen PSX to the Libretro API.
GNU General Public License v2.0
311 stars 131 forks source link

[Steam Deck] Major performance hit when using DualShock due to rumble #872

Open ds22x opened 1 year ago

ds22x commented 1 year ago

Description

When using the DualShock controller profile on the Steam Deck, performance takes a major hit (E.G. Crash Bandicoot Warped, using the interpreter, and OpenGL renderer at 2x, witnessing a drop from around 90fps to around 50fps when fastforwarding without the use of the Powertools plugin) due to apparently the rumble polling, as commenting out https://github.com/libretro/beetle-psx-libretro/blob/ecfaf995cc9b57443f9ca7fbcd9a785672e83a6a/input.cpp#L1044-L1045 gives me the same fps when not using the DualShock profile. Trying out the same situation on my Windows 11 PC, using the XInput controller driver vs the SDL2 controller driver used on the Steam Deck, shows no such performance hit.

Expected behavior

Be able to use the DualShock controller profile without having to incur a (major) performance penalty.

Actual behavior

As per the description, a major drop in fps occurs

Version/Commit

Core options

Environment information

LibretroAdmin commented 1 year ago

This might still be relevant to keep open. If there are severe performance issues like this associated with rumble, we definitely want to investigate it at some point.

hizzlekizzle commented 1 year ago

i've heard of it off and on with xinput, IIRC, unrelated to Steam.

ds22x commented 1 year ago

@LibretroAdmin I closed the issue initially because when I tried out the same situation with Swanstation, I encountered the same drop in performance (although due to its dynarec, nothing you'd ever notice without fast-forwarding), so I assumed it was a controller driver issue and wanted to create an issue for RetroArch instead. But when I tried other rumble capable cores like PCSX ReArmed with the DualShock, Mupen64Plus-Next with the rumble pack, and Flycast with the Jump pack, I didn't get any performance drop. Sorry if it caused any confusion.

hizzlekizzle commented 1 year ago

yeah, possibly beetle-psx-specific? I think that's the core I typically hear of it happening with.

ds22x commented 1 year ago

Could be, although it's still weird it also affects Swanstation as well.

ds22x commented 1 year ago

So the problem seems to be caused by specifically by Steam Input, as, when active, will allow for the Steam Deck's build-in rumble to work with the SDL2 driver, at the expense of the previously mentioned performance drop. When in desktop mode (and on a separate Linux PC I used for testing for that matter) with Steam closed, rumble will not work with either the build-in controls or any external controllers I tried (DS4, DS5, and Xbox One), with the only way to get any rumble working being by using Udev with a DS4 controller, which didn't produce any drop in performance between a rumble and non-rumble capable controller profile.

trotsky40 commented 1 year ago

I am seeing this issue with steam deck not using the dual shock controller profile. I get ~40fps on most games when using RetroArch in Steam Deck’s game mode. With no changes, I get 60bps when playing in desktop mode.