mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	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:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user