I am using OpenGL ES 3 on a CADisplayLink. Everything is working, but I noticed that the frame rate degrades after a device has been used for a while (using my app or other apps). Rebooting the device restores the full performance.
I am aware that advising users to reboot is a violation of the Human Interface Guidelines so if performance drops below a threshold the app isn't suppose to prompt the user to restart.
Is there anything I can do to ensure the user is experiencing maximum performance? The difference between full performance and the degraded performance I am seeing is rather stark - somewhere around half the performance.
It seems this affect has been observed by others, please see: http://stackoverflow.com/questions/12239576/ios-opengl-es-1-1-jerky-animation-using-cadisplaylink-reboot-fixes-for-a-while
The referenced Stack Overflow was answered by the OP as to why their logged numbers didn't make sense, but nothing was done to address the lower performance other than rebooting the device as far as I can tell.
For the DisplayLink I am using:
self.displayLink!.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
Should I be using something else, perhaps mainRunLoop()?