Massive performance decrease in 3.4 / Device.Present taking large amounts of time

We have been working on a game over the past few months in unity 3.3 Recently we updated to 3.4, and XCode4, to take advantage of the updates to Unity 3.4. Fortunately, the game runs the same as it did before in terms of functionality, so nothing appears to have broken there. Unfortunately, our performance on the iPhone 4 has gone from around 30fps to around 3fps.

When running the profilers, the best result we can come up with is that Device.Present looks a little odd. Here are its stats:

Device.Present
Total: 82.1%
Self: 82.1%
Calls: 1
Memory: 0B
Time ms: 37.94
Self ms: 37.94

Reading through other profilers and reviewing code, everything else looks good. Since we’ve made no code changes - outside of updating the Prime31 plugins we use, SocialNetworking and GameCenter, to their latest versions, we’re rather stumped on what could have broken in the product. We have reviewed things like the Quality and made sure its settings were the same as before. We are willing to bet a property or setting somewhere is new or changed from what we had it set to in 3.3 which is now causing this huge performance drop, we’re just a bit stumped now on where to look.

Any suggestions, recommendations or support we could get on this matter would be wonderful. :o

Thank you for your time!

  • Dave Calabrese
    Cerulean Games

Did you figure this out? I’m seeing a high % for Device.Present as well but am not seeing a big impact on performance.

On Android loading time jumped from 5 seconds to 30 seconds simply switching to 3.4… something is totally wrong :frowning:

Unfortunately no, we have not yet been able to figure this out. We’re starting to devote more programmer resources to it as well because it could delay a product release. The only thing we’ve found is the Device.Present thing, and the high amount of calls and time it takes to complete a single call.

To my understanding, Device.Present is a nicely named version what you otherwise often see as “flip”, the request to the graphics driver to render the frame and swap the buffers.
Having it running at a high time would to me normally imply a fillrate hit that struck you down, you could use the in-application profiler controlled through its define in the profiler.h file in the xcode project and see what those stats give you as they allow you to get some data otherwise not available.

Question is why it changed that drastically for you that it killed 27 FPS. Potentially it has to do something with something present in the game that before didn’t work and got enabled for mobiles on 3.4 or something that changed considerably