beyond-all-reason / beyond-all-reason/RecoilEngine
Windows borderless fullscreen behaves like exclusive fullscreen on refresh rates above 240Hz
- Dominant language
- C++
- Stars
- 679
- Forks
- 290
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 40
Description
Edit: Changing present method in NVIDIA settings to prefer layered on DXGI Swapchain gets rid of the flickering on focus change and behaves as expected.
On windows, borderless fullscreen behaves identically to exclusive fullscreen when monitor refresh rate is set above 240Hz (ie. changing window focus makes screen flash black). I was unable to reproduce on i3wm arch linux. This occurs with `WindowBorderless = 1` and `Fullscreen = 1`. Changing refresh rate to 240Hz or below at any point fixes this issue until switching back to higher refresh rate.
### Windows settings i have tried changing:
- Optimisations for windowed games
- Variable refresh rate
- Run this program in compatibility mode for Windows 8
- Disable full-screen optimisations
### Nvidia specific settings:
- smooth motion off
- Low Latency Mode: off / on
- Monitor Technology: G-SYNC Compatible / Fixed Refresh
- Vertical Sync: 3D app setting / off
Relevant code seems to be in `rts/Rendering/GlobalRendering.cpp`
[infolog.txt](https://github.com/user-attachments/files/29049910/infolog.txt)
Contributor guide
Research direction
Start in rts/Rendering/GlobalRendering.cpp and reproduce on Windows with WindowBorderless = 1 and Fullscreen = 1 at refresh rates above and below 240Hz. Compare focus changes with the reported NVIDIA layered present setting and trace the borderless/fullscreen presentation path. Done means borderless fullscreen no longer flashes black on focus changes above 240Hz.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-graphics, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100