bevyengine / bevyengine/bevy

Bevy's fps is half of `Max Frame Rate` with `Low Latency Mode` set to `Ultra`

Open
#17,110 0 comments 0 reactions 0 assignees View on GitHub
A-Windowing C-Bug S-Needs-Investigation
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 16h
Merged PRs (30d)
171

Description

## Bevy version

`0.15.0`, `5a5ddb9e35655520d4fa13572535e5053274bbf3`

## \[Optional\] Relevant system information

```
PS U:\Rust3\fps_test> cargo --version
cargo 1.85.0-nightly (c86f4b3a1 2024-12-24)
```

```
2025-01-03T04:20:31.262580Z INFO bevy_diagnostic::system_information_diagnostics_plugin::internal: SystemInfo { os: "Windows 11 Enterprise", kernel: "22631", cpu: "AMD Ryzen 9 5900X 12-Core Processor", core_count: "12", memory: "63.9 GiB" }
```

```
2025-01-03T04:20:31.488195Z INFO bevy_render::renderer: AdapterInfo { name: "NVIDIA GeForce GTX 1080", vendor: 4318, device: 7040, device_type: DiscreteGpu, driver: "NVIDIA", driver_info: "566.36", backend: Vulkan }
```

## What you did

```toml
bevy = { version = "0.15.0", features = ["bevy_dev_tools"] }
```
```rust
use bevy::prelude::*;

fn main() -> AppExit {
let mut app = App::new();

app.add_plugins((
DefaultPlugins,
bevy::dev_tools::fps_overlay::FpsOverlayPlugin {
config: bevy::dev_tools::fps_overlay::FpsOverlayConfig {
text_config: TextFont {
font_size: 42.0,
..default()
},
text_color: bevy::color::palettes::css::WHITE.into(),
enabled: true,
},
},
));

app.add_systems(Startup, |mut commands: Commands| {
commands.spawn(Camera2d);
});

app.run()
}
```

## What went wrong

- what were you expecting?

141 fps in corner

- what actually happened?

70.5 fps in corner

## Additional information

I have nvidia gpu and in 3d settings of nvidia control panel I have set `Max Frame Rate` to `141` fps.
This works as expected. Games, if not capped from them, run at that max fps.

There's also another setting called `Low Latency Mode`. It has 3 modes: `Off`, `On`, `Ultra`.

If `Max Frame Rate` is set and `Low Latency Mode` is set in `Off` or `On` then it works as expected.
But If `Max Frame Rate` is set and `Low Latency Mode` is set to `Ultra` then bevy's fps halve.

So:
`Max Frame Rate` = `100`, `Low Latency Mode` = `Ultra`, `Bevy` fps: `50`
`Max Frame Rate` = `60`, `Low Latency Mode` = `Ultra`, `Bevy` fps: `30`
`Max Frame Rate` = `141`, `Low Latency Mode` = `Ultra`, `Bevy` fps: `70.5`
etc...

I am not sure why this is happening. I tried restoring official nvidia settings and then only setting this bad combination and it happened,
It doesn't happen in other games. It also doesn't happen if `Low Latency Mode` is set to `Ultra` and `Max Frame Rate` is `Off`.

Anyone else experiencing this ??

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the minimal Rust app using DefaultPlugins and FpsOverlayPlugin on the reported Windows/NVIDIA setup. Compare the frame rate with Max Frame Rate and Low Latency Mode set to the combinations described, then trace the frame-pacing or rendering entry points involved. Done means establishing whether the behavior is caused by Bevy and identifying a project-owned reproduction or actionable fix path.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
computer-graphics, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.