Very low FPS on Mali devices

Hello there!

I’m making a mobile game and almost done… But before beta testing I decided to test it on other devides. It was good on Nexus 4, 5 e.t.c, Good on Galaxy S4, Xiaomi Redmi 4, and some other 12-13 year devices. Even my old 2011 year phone with 3.5 inch display runs it smoothly (Xperia Mini Pro).

But once I opened my game on Galaxy S3 and my old Texet tablet a ran into a problem with very low FPS. Later I realized it’s all about Mali (especially Mali 400).

Did Epic test their games on old Mali devices?

And YES, I know Unreal is next-gen engine, and mostly for consoles… But it good for old devices, the thing is just about Mali.

About project setup:

  • Mobile HDR off.
  • No PBR (Unlit only)
  • No translucency
  • Around 40k polys per frame
  • No lights at all
  • Around 100 drawcalls per view.

With all of those I get 15 - 20 fps. Adreno GPU’s render with 60+ fps.

The problem is about Mali. Is there something I can do to optimize my game for old Mali devices?? Because many of mobiles uses Mali and I just do not want to get a lot of bad reviewes because of that.

That seems very low even on a Mali 400 device give how simple your scene sounds. Maybe it’s CPU bound and so the changes you’re making to reduce GPU overhead are not making any difference.

Can you run the STAT DUMPFRAME console command and then paste the relevant part of the adb logcat output here?

  • Jack

Hi. Can I do this on mobile? I’m trying, but do not see any Dumpframe profilings in log files…

Anything I should know?

You can enable Device Output Log in the editor. Editor Preferences → Experimental → Device Output Log. Then open it from Main Menu → Windows.
In the Device Output Log you can select target device and see filtered log output from it, also from there you can execute console commands. The application has to be packaged in Development configuration for stats to work.

Looks like my Mali phones unexpectedly started to give me 60 frames per second. I don’t know why and what I did.

I’ll try to find an answer and post it here.

It appears that problem is about Frame smoothing.

Disabling “Smooth Frame Rate” option in Project Settings > General Settings and set Use Fixed Framerate to 60, Mali400 (Tested on Galaxy S3 and Galaxy Ace2) will render the game with 60 fps.

I did not test it with other Mali devices yet, but I supose this method is the same for all… I set it to whole project, so most of devices work as fast as they can.

Thanks for the report. I’ve entered ticket UE-42916 to look at why Smooth Frame Rate behaves like this.

I’ve solved the problem. I post an answer below.

Here are some logs and profilings with Smooth framerate enabled on some old device.

I gave you the link with profiles above. Please, mark this answer as Answered if it’s up to you :slight_smile:

Looks like I was wrong. My testers was reporting 60 fps with Fixed framerate not because of real 60 frames per sec, but because my counter was showing so…

I draw FPS on HUD by using 1 / Delta World Seconds. Looks like when you set fixed framerate, GetDeltaWorldSeconds() returns fixed delta of the frame, even if fps is different. That’s why testers told me they had 60 fps.

They also told me that game became smoother, but slower (like slow motion). As soon as was able to get Galaxy S3 personally, I convinced that game actually gave me only 20 fps. So the problem with mali is not solved. Sorry I misguided you.

Could you check my profilings I post above again?

This is no longer valid answer. Could someone reopen the issue?

Would you be able to share your content so we can see if we can see anything unusual about it that would explain the performance? If you can upload your content to a cloud drive somewhere, you can send a mail to jack.porter at epicgames.com.

Thanks
Jack