I tried Application.targetFrameRate = 120; but my framerate seems to stuck at 60 fps. (Yes, of course I disabled the "Limit framerate" toggle on the device) Also see: http://answers.unity3d.com/questions/1367376/is-it-possible-to-utilise-ipad-pros-120hz-display.html Any solution?
I was suppose to post the same topic, but I'm glad that I scrolled down a bit... It turns out that in the current iOS controller of Unity, the frame rate is being locked to 60FPS. This is due to the API limitation as before iPad Pro 10.5" there were only 60Hz-max fixed refresh rate. Per documentation of CADisplayLink, setting "frameInterval" to anything below 1 would result in undefined behavior. "frameInterval", however, is deprecated in iOS 11, so onwards iOS programs have to set "preferredFramesPerSecond". This API is available sine iOS 10 so you can change the iOS layer by yourself to enable this feature. But do test thoroughly because higher frame rate may cause time-critical unexpected behaviors. This is my attempt of doing selective API usage based off 2017.1f3. I don't have a new iPad Pro so I don't know if it works: Objective-C code (not C#...) Code (csharp): // UnityAppController+Rendering.mm : 117 - (void)callbackFramerateChange:(int)targetFPS { if (targetFPS <= 0) targetFPS = 60; int animationFrameInterval = (60.0f / targetFPS); if (animationFrameInterval < 1) animationFrameInterval = 1; _enableRunLoopAcceptInput = (animationFrameInterval == 1 && UnityDeviceCPUCount() > 1); //---------MODIFIED--------- if ([_displayLink respondsToSelector:@selector(setPreferredFramesPerSecond:)]) { [_displayLink setPreferredFramesPerSecond:targetFPS]; } else { [_displayLink setFrameInterval: animationFrameInterval]; } //-------------------------- } After changing the code, don't forget to add a Boolean key "CADisableMinimumFrameDuration" to the Info list of Unity-iPhone target (info.plist) and set it to "YES". Hope this helps.
The correct answer is "file a bug report and leave the case number here." This has been the correct course of action for getting replies from Unity staff since forever. Also I am not Unity staff, just a long term Unity user and I hope, help people for free. If you're not interested in staff replies for bug reports you will need to wait until a member of staff visits the forum who works on this part, which usually takes a lot longer for non-beta. It should work. It's core device functionality. If it doesn't work then the best way to pester Unity is to bug report it, drop case numbers and use the feedback site. Hopefully someone will add it if there is demand. But as the device supports a higher refresh, it seems more like a bug to me. Good luck in finding a resolution, and sorry I couldn't help more.
The correct answer is "no, Unity haven't gotten around to it, despite 60 requests for it, and iPad Pros having sold quite well." https://feedback.unity3d.com/suggestions/support-apples-promotion
Yes. At lease since 2017.4 the new API has been implemented. Not sure about the key as I already automated it through post build processing.
Your findings are very helpful! I am using Unity 2018.4.18f1 Personal and the callbackFramerateChange function is already using preferredFramesPerSecond API but the iPad Pro is still not responding to the refresh rate changes. If turns out that my info.plist has CADisableMinimumFrameDuration set to NO. After I change it to YES, the iPad is finally running at 120Hz! Thanks again.