3

We have an OpenGL-based iOS app. We use a CADisplayLink to control our drawing updates.

I just got the new 10.5" iPad Pro and we are getting a maximum frame rate of 60 rather than the 120 we can theoretically get on the new hardware.

We set up the display link like this:

    self.caDisplayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkCalled:)];
    caDisplayLink.preferredFramesPerSecond = 120;
    NSLog(@"Maximum FPS = %ld", [UIScreen mainScreen].maximumFramesPerSecond);
    [caDisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];

The displayLinkCalled: method is called 60 times per second. The log statement does indicate the UIScreen's maximum frame rate is 120 FPS.

Is there anything else I need to do to update at higher than 60 FPS?

btschumy
  • 1,435
  • 1
  • 18
  • 35
  • It is not necessary that the display link is the one that is capped to 60FPS, it might be presenting the render buffer. Try to create another display link that does nothing but report the frame rate. If the frame rate of that one is still 60FPS then it seems the display link is still capped. If not then you are capped at 60 by presenting the buffer on the screen. To check the rendering cap you may replace the display link with a timer set to interval of 1/120 to see if you can push it to a higher frame rate. – Matic Oblak Jun 20 '17 at 09:09

1 Answers1

3

Did you opt-in? You need to add a key to your plist

<key>CADisableMinimumFrameDuration</key>
 <true/>
eug
  • 76
  • 3