-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
crt-beam-simulator shader causes constant frame time spikes accompanied by severe flickering #17341
Comments
Have you tried turning off RTSS and using RetroArch's own vsync to see if that makes a difference? Also, have you tried any of the other BFI shaders to see if they have the same spikes? |
Yes, I've tried completely shutting down both MSI Afterburner and RTSS, while using RetroArch's own VSync (which cannot be disabled when selecting shader sub-frames - required for the subframe-bfi shaders). Of all the shaders in the subframe-bfi folder, the only one (aside from motionblur-test, which works for its intended testing purposes) that doesn't cause the issue (frame time spikes accompanied by severe screen flickering) is bfi-simple. But that one doesn't appear to be doing anything, either. It doesn't even reduce the overall brightness, like BFI tends to do. 120hz-safe-BFI, 120hz-smart-BFI and crt-beam-simulator all produce the unintended behavior described in my initial post. |
FWIW I tested this today on a fresh install of the latest nightly, have a similar setup with a 3080 12GB, 7700X, and LG C3 at 4K/120Hz with 2 subframes. Used the Vulkan renderer and didn't see anything like this in Mesen or bsnes cores, it seemed to work as expected besides some weird interactions with other shaders. |
Thanks for chiming in. I'd first tested on the 1.19.0 and then, before reporting this issue, again on the recently released 1.20.0 - both clean installs, both with the same issue. To expand on it, I've noticed that I can't get a proper flat frame time line in RetroArch even without the BFI shaders (those only seem to aggravate the issue and cause additional flickering). Enabling shader sub-frames by itself, without any shaders, already seem to cause the mess in frame times (with FPS constantly switching between 120 and 119) shown in one of the images in the OP. The closest I can get to a constant 120 and an almost perfectly flat frame time line is by either capping the FPS externally (using RTSS), to 120, and then enabling shader sub-frames; or by using RA's own VSync combined with its VRR solution ("sync to exact content framerate"). In both cases, as soon as I make the changes, the FPS is locked to 120 or 60, respectively, and the frame time line remains flat... for about four or five seconds. Then, a minuscule spike starts showing up every two and half seconds, on the dot. Plus, in the instance of 120Hz refresh (with shader sub-frames enabled and external 120 cap), the frame rate flips back and forth constantly between 119 and 120. Tl;dr: the main issue is getting proper locked frame rates and frame times, without any spikes (which can be tiny or massive, depending on the configuration, causing additional flickering) and the constant switching between the max refresh rate/fps and one frame below. If I solve this, I'm sure I'll be able to use the BFI shaders without the dreaded flickering, as it is definitely related to the frame time spikes. |
Is there an existing issue for this?
Description
Loading the crt-beam-simulator shader preset causes frame time spikes at a constant and frequent interval (every half second or so), and each spike is accompanied by severe screen flickering (not just regular BFI flicker, but a full-on black screen flash).
The result of these frame time spikes is that the frame rate, otherwise perfectly locked to 120 on my 7800X3D/4090 system, also dips by 1, to 119 fps, with every single spike.
This happens with shader sub-frames correctly set to 2, as my display's refresh rate is 120Hz (LG C9 OLED TV). And it only happens after the crt-beam-simulator shader is loaded.
Other shaders (like crt-royale, for scanlines) do not cause the issue, and it also doesn't occur until a few seconds after the crt-beam-simulator shader is loaded. Changing any settings via the menu seem to cause the issue to stop for a few seconds (three to four), until it starts happening again.
I've seen hardware BFI at 60Hz and 120Hz, and the level of flickering is nowhere near what's being shown by RetroArch with crt-beam-simulator. And, as mentioned, it only happens when the frame time spikes start occurring.
Here are two screen caps showing RTSS's frame rate and frame time graph:
This is with no frame rate cap via RTSS or other external, third-party software (hard to notice the spikes, as the frame time line is all over the place);
This is with the frame rate capped to 120 via RTSS (notice the perfect flat frame time line, with tiny bumps caused by crt-beam-simulator).
I've tried disabling all background apps and processes, but the issue still occurs. All RetroArch settings were left at default. I've tested with bsnes and Snes9X cores, same behavior in both. Also tested with Vulkan and D3D12 APIs - again, no change.
Expected behavior
No frame time spikes are expected and the frame rate should remain constant even after loading the crt-beam-simulator shader.
Steps to reproduce the bug
Version/Commit
1.20.0
Bisect Results
No response
Check in the nightly version
Yes, this is reproduced in the nightly build
Platform & operating system
Windows 11 23H2
Affected Cores
bsnes, Snes9X, likely others
Environment information
4090
7800X3D
64GB DDR5 6000
Relevant log output
No response
The text was updated successfully, but these errors were encountered: