Bevy's fps is half of `Max Frame Rate` with `Low Latency Mode` set to `Ultra`
- 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
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