mirror of
https://github.com/utmapp/UTM.git
synced 2026-10-12 02:24:01 +00:00
display: default FPS limit to 120Hz on supported devices
Except on iPhone where battery life is a concern.
This commit is contained in:
@@ -93,11 +93,6 @@ static const NSInteger kResizeTimeoutSecs = 5;
|
||||
return;
|
||||
}
|
||||
|
||||
// Initialize our renderer with the view size
|
||||
if ([self integerForSetting:@"QEMURendererFPSLimit"] > 0) {
|
||||
self.mtkView.preferredFramesPerSecond = [self integerForSetting:@"QEMURendererFPSLimit"];
|
||||
}
|
||||
|
||||
[self.renderer changeUpscaler:self.delegate.qemuDisplayUpscaler
|
||||
downscaler:self.delegate.qemuDisplayDownscaler];
|
||||
|
||||
@@ -142,6 +137,19 @@ static const NSInteger kResizeTimeoutSecs = 5;
|
||||
[super viewDidAppear:animated];
|
||||
self.delegate.displayViewSize = [self convertSizeToNative:self.view.bounds.size];
|
||||
[self addObserver:self forKeyPath:@"vmDisplay.displaySize" options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionInitial) context:nil];
|
||||
if ([self integerForSetting:@"QEMURendererFPSLimit"] > 0) {
|
||||
self.mtkView.preferredFramesPerSecond = [self integerForSetting:@"QEMURendererFPSLimit"];
|
||||
}
|
||||
#if !TARGET_OS_VISION
|
||||
else if (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) {
|
||||
// only apply ProMotion by default on iPad which has a larger battery
|
||||
// on iPhone, we depend on the user manually setting the FPS limit to 120
|
||||
NSInteger maxFps = self.view.window.screen.maximumFramesPerSecond;
|
||||
if (maxFps > 0) {
|
||||
self.mtkView.preferredFramesPerSecond = maxFps;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
|
||||
|
||||
@@ -142,5 +142,7 @@
|
||||
</array>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>CADisableMinimumFrameDurationOnPhone</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
|
||||
@@ -98,6 +98,8 @@ class VMDisplayQemuMetalWindowController: VMDisplayQemuWindowController {
|
||||
}
|
||||
if rendererFpsLimit > 0 {
|
||||
metalView.preferredFramesPerSecond = rendererFpsLimit
|
||||
} else if #available(macOS 12, *), let maxFps = self.window?.screen?.maximumFramesPerSecond {
|
||||
metalView.preferredFramesPerSecond = maxFps
|
||||
}
|
||||
renderer.changeUpscaler(displayConfig?.upscalingFilter.metalSamplerMinMagFilter ?? .linear, downscaler: displayConfig?.downscalingFilter.metalSamplerMinMagFilter ?? .linear)
|
||||
vmDisplay?.addRenderer(renderer) // can be nil if primary
|
||||
|
||||
Reference in New Issue
Block a user