beyond-all-reason / beyond-all-reason/RecoilEngine

Windows borderless fullscreen behaves like exclusive fullscreen on refresh rates above 240Hz

Open
#3,017 3 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.