60 fps on Lumia 520, but 45 fps on Lumia 925

Hi,

I have a major performance problem, which drives me crazy. My game can run at 60 fps on Lumia 520, however it runs at around 45 fps on Lumia 920/925. . Is is normal? I have seen some benchmarks comparing those phones and Lumia 925 is clearly more powerful. How can this happen? I know Lumia 925 has a better resolution, but it’s not too much.

Note:

  • I have tried both Unity 4.3.2 and 4.3.3
  • There is no AA
  • I have run it with/without Application.targetFrameRate = 60 fps
  • There are around 20 draw calls and 15K tris on screen

Also I forgot to say that the profiler running Lumia 925 shows %80 (26 ms) Overhead and %10 (3.5 ms) Camera.Render. Why the overhead is so high?

I have also profiled with Lumia 520: Overhead is 10 ms and Camera.Render is 5.7 ms. So we can see that Lumia 925 renders faster as expected. However it has that huge overhead :frowning:

Hi,

is the game exact same on both devices (textures, other assets, w/e else you can think of)? What’s your memory usage like?

Yes, they are exact same game downloaded from the store. (submitted as beta) I can also invite you to beta if you wish. I didn’t check the memory lately but it should be very very low (it was like 30-40 mb on iOS). I will check it again.

@Tautvydas Zilys , I have examined this a bit more and I noticed that Lumia 920 responds very bad to every single draw call. I have disabled many things such ai, physics, ngui, etc. I have left with 9 draw calls and it gives 60fps. However if I add some models here and there to increase the draw call, it becomes very choppy when the draw call reaches around 15. Is that normal? Even iPhone 4 and Lumia 520 can run the same game at 60fps even with 25 draw calls.

Btw, I have tried dynamic batching both on and off. Nothing changes, because I have already reduced draw calls by merging models manually. So, I need to know why even a single draw call makes a noticeable fps drop on such a powerful device.

FWIW - I have both 520 and 920. My game has slightly better FPS on 920, but not much because of the higher resolution. You can test it on your two devices to see if there is perhaps something wrong with your 920 device. The game has an FPS counter you can enable in settings. Search “3D Toon Toss” in the store.

Sample scenes to try:
Level 1-4 (Has water)
520 - 38FPS
920 - 40FPS

Level 2-8 (Has some dynamic lights and stuff in the far background)
520 - 28FPS
920 - 28FPS

-Mark

@Sievlar , I have tried your game and it gives 38/40fps respectively. My game becomes choppy below 55fps because of the fast camera movement :frowning: Therefore 45 fps on Lumia 920/925 is not acceptable.

Btw, how many draw calls are there on the first Level?

For Level 1-4 it has 30 draw calls. For level 2-8 is has 82, hence the lower FPS. I could do more to optimize, however it works well enough for this type of game.

15 draw calls definitely should not be the limit. It’s quite strange that you’re getting such performance loss. At this current moment, the only possible scenario I can think of is that you’re using a GPU feature in a shader that is better supported on Lumia 520, which has Adreno 305, as opposed to Adreno 225 on Lumia 925. So, I suggest you investigate what shaders are used with those draw calls.

Those draw calls were using Mobile->Unlit (supports lightmap)
After some investigation I have noticed that something is wrong when those draw calls have lighmap baked and they are not checked as “static”. I have tried different combinations:

  1. No lightmap → no stutter
  2. Ligthmapped static object → no stutter
  3. Lightmapped non-static object → makes stutter on Lumia 925 only

You may be asking how do you bake non-static object. I just uncheck static after it’s baked.

Anyway, this was still not enough to make the game 60 fps, so I decided to limit fps at 40, so it’s as steady as possible and submitted the game.

I see. What’s the game called? I’ll check it out once it’s out :).

It’s Traffic Racer.