RetroArch BFI Issue: Half Framerate On Windows

Alex Johnson
-
RetroArch BFI Issue: Half Framerate On Windows

Experiencing issues with RetroArch's Black Frame Insertion (BFI) and subframe insertion? You're not alone! Many users have reported a bug where these features operate at half the expected framerate, particularly on Windows systems. This article dives deep into this issue, exploring the reported problems, potential causes, and possible solutions. If you're struggling with screen blinking and suboptimal performance when using BFI and subframe insertion in RetroArch, read on to learn more and troubleshoot the problem.

Understanding the Issue

The core of the problem lies in the discrepancy between the set refresh rate and the actual operating framerate when BFI and subframe insertion are enabled. Users have observed that when setting refresh rates like 100Hz, 120Hz, or 140Hz, the features appear to function at half those rates – 50Hz, 60Hz, and 70Hz, respectively. This behavior results in the game running at the intended framerate (e.g., 60fps), but with black frames inserted at a lower frequency, causing noticeable screen blinking and a less-than-ideal visual experience. This is especially noticeable when using CRT shaders, which are designed to simulate the look of classic cathode-ray tube displays.

Key Symptoms of the Issue:

  • Half Framerate Operation: BFI and subframe insertion seem to work at half the set refresh rate.
  • Screen Blinking: A distinct blinking effect is visible due to the lower frequency of black frame insertion.
  • Shader Performance: Shaders, particularly CRT shaders, appear to run at a lower frame rate (e.g., 25, 30, or 35 frames per second).
  • Hardware Setup: This issue has been reported on systems with high refresh rate monitors (e.g., 165Hz) and AMD GPUs, but it may not be exclusive to these configurations.

Reported User Experience

One user described their experience on the latest stable version of RetroArch (1.22.1) on Windows: When setting the refresh rate to 100Hz, 120Hz, or 140Hz with subframe shaders enabled, the system appeared to operate at half the rate, effectively 50Hz, 60Hz, and 70Hz. This resulted in a blinking screen because the shader was working at a lower frame rate, such as 25, 30, or 35 frames per second. The user was using an AMD 5700XT GPU and a FreeSync Premium monitor at 165Hz.

The user expected BFI to function at the set refresh rate (100Hz, 120Hz, 140Hz) while inserting black frames at the game's native framerate (50Hz, 60Hz, 70Hz). This discrepancy between the expected and actual behavior is the core of the problem.

Steps to Reproduce the Bug

To replicate this issue, users can follow these steps:

  1. Enable Subframe Shader: Activate the subframe shader option within RetroArch's video settings.
  2. Enable Exact Framerate: Ensure the "Sync to Exact Content Framerate" option is enabled.
  3. Use CRT Beam Simulator Shader: Load and apply a CRT beam simulator shader, as this issue is particularly noticeable with these shaders.
  4. Run a Game: Start any game to observe the behavior.

By following these steps, you can determine if your system is affected by this half-framerate BFI issue.

Potential Causes and Technical Deep Dive

Several factors could contribute to this issue, and a comprehensive understanding requires delving into the technical aspects of RetroArch's video synchronization and BFI implementation.

1. Frame Pacing and Synchronization:

RetroArch relies on precise frame pacing and synchronization to deliver a smooth gaming experience. When BFI is enabled, the system needs to insert black frames between the actual game frames. This requires careful timing and coordination between the CPU, GPU, and display. If there are timing discrepancies or synchronization issues, the black frames might not be inserted at the correct frequency, leading to the half-framerate effect.

2. Refresh Rate Mismatch:

The issue might stem from a mismatch between the set refresh rate in RetroArch and the actual refresh rate of the monitor. While the user might set RetroArch to 120Hz, the monitor might not be operating at that exact frequency due to driver issues, display settings, or other factors. This discrepancy can cause BFI to miscalculate the timing for black frame insertion.

3. Driver Compatibility and GPU Behavior:

GPU drivers play a crucial role in managing display timings and frame presentation. Incompatibilities or bugs within the GPU drivers, particularly AMD drivers as reported by the user, could lead to incorrect BFI behavior. The drivers might not be correctly handling the insertion of black frames at the desired frequency, resulting in the observed half-framerate effect.

4. Shader Complexity and Performance:

CRT shaders, while visually appealing, are computationally intensive. If the shader is too demanding for the system, it might struggle to maintain the target framerate, especially when combined with BFI. This can lead to frame drops and an uneven presentation, exacerbating the blinking issue. However, the core issue seems to be the black frame insertion operating at half the intended rate, regardless of shader performance.

5. RetroArch's Implementation of BFI:

The way RetroArch implements BFI could also be a factor. There might be a bug or optimization issue within the BFI code that causes it to operate at half the framerate under certain conditions. This could be related to how RetroArch interacts with the GPU's display capabilities or how it manages frame timing.

Troubleshooting and Potential Solutions

While a definitive solution might require a fix within RetroArch or GPU drivers, there are several troubleshooting steps users can take to mitigate the issue:

1. Verify Monitor Refresh Rate:

Ensure that the monitor is indeed operating at the set refresh rate in RetroArch. Check the monitor's on-screen display (OSD) or use a utility like CRU (Custom Resolution Utility) to verify the active refresh rate. If there's a discrepancy, try adjusting the monitor settings or using CRU to create a custom resolution with the desired refresh rate.

2. Experiment with Different Refresh Rates:

Try different refresh rates within RetroArch to see if the issue persists. It's possible that the bug is specific to certain refresh rates. For example, try setting the refresh rate to 60Hz or 120Hz and see if BFI works correctly at those settings.

3. Update or Reinstall GPU Drivers:

Outdated or corrupted GPU drivers can cause various display issues. Try updating to the latest drivers or performing a clean reinstall of the current drivers. Use a driver uninstaller tool like DDU (Display Driver Uninstaller) to ensure a clean installation.

4. Adjust RetroArch Video Settings:

Experiment with different video settings in RetroArch. Try changing the video driver (e.g., from Vulkan to OpenGL or Direct3D) or disabling other potentially conflicting settings like threaded video. Also, ensure that "Sync to Exact Content Framerate" is enabled, as this can help with frame pacing.

5. Test with Different Shaders:

Try using less demanding shaders to see if shader performance is contributing to the issue. If the problem is less pronounced with simpler shaders, it might indicate that the system is struggling to maintain the target framerate with the more complex CRT shaders.

6. Check RetroArch Configuration File:

Manually review RetroArch's configuration file (retroarch.cfg) for any unusual settings that might be affecting BFI behavior. Look for settings related to video synchronization, refresh rate, and BFI itself.

7. Monitor System Performance:

Use a system monitoring tool (e.g., MSI Afterburner, HWiNFO) to check CPU and GPU usage while running RetroArch with BFI enabled. This can help identify potential performance bottlenecks that might be contributing to the issue.

8. Report the Issue to RetroArch Developers:

If none of the above steps resolve the problem, report the bug to the RetroArch developers on their GitHub repository or forums. Provide detailed information about your system configuration, the steps to reproduce the issue, and any troubleshooting steps you've already taken. This will help the developers diagnose and fix the bug.

Community Discussion and Further Research

This issue has been discussed in various online communities and forums dedicated to RetroArch and emulation. Users have shared their experiences, troubleshooting steps, and potential workarounds. Participating in these discussions can provide valuable insights and help identify common patterns or solutions.

Exploring RetroArch Forums:

  • Visit the RetroArch subreddit and search for topics related to BFI, subframe insertion, and refresh rate issues. Engage in discussions and share your experiences.
  • Check the Libretro forums, the official forum for RetroArch and related projects. Look for threads discussing BFI problems or create a new thread detailing your issue.

Investigating GPU Driver Issues:

  • Consult the AMD support forums or other relevant GPU forums to see if other users have reported similar issues with BFI or high refresh rate displays. Driver-specific problems can sometimes be identified through community discussions.

Conclusion

The RetroArch BFI half-framerate issue on Windows is a frustrating problem that can significantly impact the visual experience. By understanding the issue, exploring potential causes, and trying various troubleshooting steps, users can work towards mitigating the problem. While a definitive fix might require updates to RetroArch or GPU drivers, the troubleshooting steps outlined in this article can help narrow down the issue and potentially find a workaround. Remember to report the issue to the RetroArch developers and engage in community discussions to contribute to the solution.

For more information on RetroArch and its features, visit the official RetroArch website.

You may also like