libretro-mirrors / beetle-saturn-libretro

Standalone port of Mednafen Saturn to the libretro API.
GNU General Public License v2.0
61 stars 40 forks source link

[Bug/Vulkan]Beetle Saturn on 120hz screen #205

Closed Immersion95 closed 2 years ago

Immersion95 commented 3 years ago

Hi, I can't get this core to work well on a 120hz screen. It's the only core that does this in RA for me.

Example : SFA3 (while fighting) & XMVSF (when entering the char screen)

I tried BFI & Vsync interval to 2 but it's really slow at moments.

It's only in Fullscreen, Windowed is working great. I couldn't get related bug information in the logs moreover.

bslenul commented 3 years ago

Oh funny, I mentioned a similar issue on Discord today :D

But yeah, I read everywhere that it's recommended to have the vsync swap interval to "2" on a 120Hz and that's what I'm using for a while now, but for some reason it doesn't work well at all with this core.

Here's the video I've posted on Discord:

https://user-images.githubusercontent.com/33353403/124998042-fe62f800-e04b-11eb-87fe-0f870f705647.mp4

It goes from 60fps (interval set to "1") to 48fps (interval to "2")... :/ And it's not some kind of performance issue because if I fast-forward I can reach ~70fps on that exact same spot.

It's only in Fullscreen, Windowed is working great.

However in my case it's an issue in windowed too, in fact the video above was captured in windowed mode.

Immersion95 commented 3 years ago

Oh funny, I mentioned a similar issue on Discord today :D

But yeah, I read everywhere that it's recommended to have the vsync swap interval to "2" on a 120Hz and that's what I'm using for a while now, but for some reason it doesn't work well at all with this core.

Here's the video I've posted on Discord:

2021-07-06_12-16-11.mp4 It goes from 60fps (interval set to "1") to 48fps (interval to "2")... :/ And it's not some kind of performance issue because if I fast-forward I can reach ~70fps on that exact same spot.

It's only in Fullscreen, Windowed is working great.

However in my case it's an issue in windowed too, in fact the video above was captured in windowed mode.

Same ! Problem with interval 1 is the juddering so no solution found for me

TideGear commented 2 years ago

I'm just trying to play at 60hz but I'm having issues I didn't have before like this too. https://github.com/libretro/beetle-saturn-libretro/issues/206#issue-947293608

Do yall have Hard GPU Sync enabled?

TideGear commented 2 years ago

I fixed my issue (https://github.com/libretro/beetle-saturn-libretro/issues/206#issue-947293608) by changing my Nvidia power setting from the default of "Optimal power" to "Prefer maximum performance". "Adaptive" didn't seem to work. I'm back to 60 FPS!

Immersion95 commented 2 years ago

I'm closing this issue as there is a better solution for Retroarch : -Vsync swap interval back to 1 -Enable Vsync & Sync to exact content framerate

Benefits : -The framerate is the original one for all cores so games from Arcade, SNES, etc.... that have weird refresh rates are running at their intended pace -Best input lag

Cons : Small judder from time to time but not very noticeable - Why ? It's because games won't run at 60 fps as they don't need to be synced to that refresh rate. They are running at their original refresh rate "inside" our 120hz.

bslenul commented 2 years ago

Another con: this is only compatible with G/FreeSync :(

Immersion95 commented 2 years ago

Another con: this is only compatible with G/FreeSync :(

No it's not, you can try for yourself :). I don't have VRR neither.

bslenul commented 2 years ago

Doesn't seem to work great for me at least :/ Like at the same spot on Powerslave shown in my video above, I get ~56-57fps, which is better than interval set to "2", but I can still hear the sounds crackling because of these few missing fps.

So yeah, I'll just stick to "1" for that core.

edit: Just noticed the original issue seems to happen only with vulkan, if I switch to d3d11 or glcore it runs at 60 with interval set to "2" oO So instead I'll keep "2" and just make an override to switch video driver.