libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.34k stars 1.84k forks source link

Menu throttles when i load a game #15882

Closed Tasosgemah closed 10 months ago

Tasosgemah commented 1 year ago

Description

When i open the menu without a game loaded, it runs at 240hz, as it's my monitor's speed. It feels nice and smooth.

When i open any game though and then go to the menu, it runs at 60hz. Feels awful by comparison.

Expected behavior

Menu should always be smooth. I know the throttle menu option is removed, but it still exists in the config and it's OFF.

Actual behavior

In previous versions the menu was always silky smooth for me. Now it feels laggy when i have a game loaded. Hope it's not the intended behavior because It feels like a big regression for anyone with high refresh rate screens.

Tasosgemah commented 1 year ago

I fooled around a bit and noticed that the "Estimated Refresh Rate" in the Output options is now much lower than before.

It's now close to 60hz while in the previous version from a week ago (before the change) this number would reach close to 240hz. Basically, it seems like the newer version completely ignores the high-refresh rate monitor and just set itself at 60hz, even if i change other options like freesync ON?OFF, etc.

But this happens only when i load a game. Just opening RetroArch without anything loaded works like before.

sonninnos commented 1 year ago

The menu is now throttled according to the running core. So yes makes sense that the rate estimation is also not accurate when a core is running, and it shouldn't even be needed then.

And config rows are never removed if options are removed, so you need to do that manually. The config value simply does nothing anymore.

I'll try to change the frame limiting according to the set vertical refresh rate instead of core refresh rate, and if that won't work well enough, I'll simply disable the current frame limiting if vsync is enabled.

Tasosgemah commented 1 year ago

Thanks. If you don't have a high refresh rate monitor I can test any related change and give any information you need

KamiLordus commented 1 year ago

From my observations, I need to have 120 Hz enabled on the monitor (although RA menus and games run at 60 Hz). Otherwise, black frame insertion does not work, and without it, many games have a terrible ghost effect (for example, Golden Ax III Sega Genesis, or many vertical shooters on Mame).

sonninnos commented 1 year ago

Indeed I don't have a high refresh rate display, so please let me know how it goes now.

Tasosgemah commented 1 year ago

Indeed I don't have a high refresh rate display, so please let me know how it goes now.

Ok, do i have to download a version from somewhere else? Because i only ever update via buildbot

sonninnos commented 1 year ago

Well not yet if you can't build it yourself, since it isn't merged yet.

crashGG commented 1 year ago

Isn't the advantage of using a high refresh rate monitor to play libretro that its variable refresh rate can perfectly match the weird refresh rates of old arcade and home consoles in exchange for the lowest output latency? Why give up this advantage and choose to use a high refresh rate?

Tasosgemah commented 1 year ago

Isn't the advantage of using a high refresh rate monitor to play libretro that its variable refresh rate can perfectly match the weird refresh rates of old arcade and home consoles in exchange for the lowest output latency? Why give up this advantage and choose to use a high refresh rate?

I didn't have an issue playing those odd hz arcade games smoothly while also having a smooth interface at the same time. I assume the game itself and the menu are two different things. One can run at a different frame rate than the other and the transition was also smooth. That's the advantage of VRR.

With this recent change, the game is still smooth as before but the menu is slower. Feels more laggy. So there wasn't any gain, only a regression.

sonninnos commented 1 year ago

With this recent change, the game is still smooth as before but the menu is slower. Feels more laggy. So there wasn't any gain, only a regression.

Weird, let's adjust it a bit then.

Tasosgemah commented 1 year ago

Was there a reason why the menu needed to be throttled in the first place? Did it cause problems? It was optional before. I get it's good to have less options in an already options-heavy menu but this particular one made a lot of difference IMO.

sonninnos commented 1 year ago

Did the option actually do anything before? I added this limiting because with vsync disabled the menu would run at unlimited speed, as in fps in the thousands with certain cores, and the option did nothing to prevent it.

Tasosgemah commented 1 year ago

Yes, the option pretty much locks the menu to 60fps or something close to that. I am still using the 31/10 build, the last one before the change. With the limit off, the menu feels like it breaks the chains and feels incredibly smooth, as it should on a 240hz screen. The moment i turn throttle ON, it feels sluggish. Which is the current behavior of the later builds.

Keep in mind that a game needs to be loaded for this to have an effect. Otherwise the menu is always smooth for me no matter what, even if i turn throttle ON.

Not sure if there are certain cores that don't work this way though. But the ones i use work this way.

Tasosgemah commented 1 year ago

Also, when i say "sluggish" i mean compared to the 240fps i got used to. Running close to 60fps may feel smooth to someone who uses a 60hz screen.

sonninnos commented 1 year ago

Ok, and you have had VRR aka exact sync enabled the whole time, as in if you disable it, the removed option starts to do nothing?

crashGG commented 1 year ago

IMHO, it's not cost-effective to run to infinite speed in the game menu and consume a lot of computing resources. Maybe some people want to experience a slightly higher frame rate and smoothness in the menu, but more people just don't want the noise caused by the CPU and graphics card fans to affect the gaming experience.If the game menu can also lock 60fps after turning on vrr, it will be a balance between energy efficiency and quiet experience. These players will be grateful.

Tasosgemah commented 1 year ago

Ok, and you have had VRR aka exact sync enabled the whole time, as in if you disable it, the removed option starts to do nothing?

Correct, i just tested this scenario with the old version.

IMHO, it's not cost-effective to run to infinite speed in the game menu and consume a lot of computing resources. Maybe some people want to experience a slightly higher frame rate and smoothness in the menu, but more people just don't want the noise caused by the CPU and graphics card fans to affect the gaming experience.If the game menu can also lock 60fps after turning on vrr, it will be a balance between energy efficiency and quiet experience. These players will be grateful.

That's why it was good being an optional thing. I have a mid-range PC, the menu running at 240fps only increased the GPU/CPU usage slightly and i had no issues with fan noise or high temps. So for me, not throttling the menu was fine.

sonninnos commented 1 year ago

I guess I'll just bring the option back then since I now understand what it is supposed to be doing.

sonninnos commented 1 year ago

Ok, added the restoration back to the previous PR, and hopefully it still works as it should after I tried to make it easier to read, understand and use.

Tasosgemah commented 1 year ago

Seems like it's working fine now, like it did before. Will test more today after work.

Tasosgemah commented 1 year ago

yeah, it's working i have no issues so far. I think the issue can close now.

Tasosgemah commented 10 months ago

@sonninnos

I updated to the latest Nightly today and the issue is back. Menu throttles again when i load a game, even when i have the "throttle menu framerate" OFF.

sonninnos commented 10 months ago

Well there hasn't been any changes..

Tasosgemah commented 10 months ago

Dunno, some unrelated bug maybe causes this for some reason. I'll try to find the last nightly where this was still working as intended. Last good one i use is from Nov 15 atm.

Tasosgemah commented 10 months ago

Oldest nightly i can find is from 12-Dec. And it still throttles. So the issue appeared somewhere between the 15-Nov and 12-Dec build. Is there anywhere i can download older nightlies?

sonninnos commented 10 months ago

I located the reason. It was due to the circumvention of wasapi exclusive mode repeating the current buffer when in menu while menu pauses and menu sounds are off. Which is generating empty sound while in menu always. I'll have it reverted with some other changes soon.

sonninnos commented 10 months ago

Please try after this https://github.com/libretro/RetroArch/pull/16057

Tasosgemah commented 10 months ago

Please try after this #16057

Yeah, it works correctly now.