hle: service: nvflinger: Factor speed limit into frame time calculation.
- This allows the %-based "Limit Speed Percent" setting to work with MC emulation. - This is already supported for SC emulation.
This commit is contained in:
parent
7d66f8339e
commit
f8aaa59990
|
@ -289,7 +289,14 @@ s64 NVFlinger::GetNextTicks() const {
|
||||||
const auto& settings = Settings::values;
|
const auto& settings = Settings::values;
|
||||||
const bool unlocked_fps = settings.disable_fps_limit.GetValue();
|
const bool unlocked_fps = settings.disable_fps_limit.GetValue();
|
||||||
const s64 fps_cap = unlocked_fps ? static_cast<s64>(settings.fps_cap.GetValue()) : 1;
|
const s64 fps_cap = unlocked_fps ? static_cast<s64>(settings.fps_cap.GetValue()) : 1;
|
||||||
return (1000000000 * (1LL << swap_interval)) / (max_hertz * fps_cap);
|
auto speed_scale = 1.f;
|
||||||
|
if (settings.use_speed_limit.GetValue() && settings.use_multi_core.GetValue()) {
|
||||||
|
// Scales the speed based on speed_limit setting on MC. SC is handled by
|
||||||
|
// SpeedLimiter::DoSpeedLimiting.
|
||||||
|
speed_scale = 100.f / settings.speed_limit.GetValue();
|
||||||
|
}
|
||||||
|
return static_cast<s64>(((1000000000 * (1LL << swap_interval)) / (max_hertz * fps_cap)) *
|
||||||
|
speed_scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Service::NVFlinger
|
} // namespace Service::NVFlinger
|
||||||
|
|
Loading…
Reference in New Issue