This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Mali vs. Other GPU's / Performance Bottlenecks

Note: This was originally posted on 6th June 2013 at http://forums.arm.com

Hi,

our game runs fine on Tegra, Adreno, etc. but not on Mali powered devices.

On Mali we have like 5-10 FPS where other devices have ~30 FPS. Our game engine is multiplatform and all the devices use nearly the same GL code (except texture format handling and such).

This is really bad on Samsung devices that have other GPU's in different countries (Samsung S3 Northamerica is Adreno powered -> fine, Samsung S3 Europe have Mali GPU's -> problem). From a subjective view this is the same device, one is running the game fine and one not.

So my question is: Are there any Mali specific bottlenecks known that could cause such performance problems?

I know this is kind of a wide question, but maybe there are 'hidden' don't's which are vital to consider.


Thanks in advance,
Bodo
  • Note: This was originally posted on 7th June 2013 at http://forums.arm.com

    I just posted in a thread yesterday that I experienced something similar.
    For me it was the use of glTexSubImage2D or glTexImage2D. I'd check if you are calling those functions during run-time, and if you are, that might be the problem for you too.
    Other GPU's can handle updating textures, but on Mali it kills performance. I'm assuming it's a driver issue rather than a hardware issue.
  • Note: This was originally posted on 7th June 2013 at http://forums.arm.com

    Hi Bodo,

       Sorry to hear that you are having problems with Mali devices. It is very difficult to give you any advice without seeing a code snippet or having more information on how you use the GLES API.

    The Mali driver should perform optimally so long as the GLES API has been used properly.

    Some of the basic things I would suggest you to try are,

    1. Check if the application is CPU bound on the Mali platform (usually by using "top" command on the shell prompt)

    2. Check if your application is fragment bound by reducing the resolution.

    3. Check if the application is vertex bound by reducing the triangle passed.

    Could you please let us know what you find (along with some code snippet) and we can take it from there.

    Cheers
    Karthik
  • Note: This was originally posted on 7th June 2013 at http://forums.arm.com

    Thanks for the answer.

    We are using glTexImage2D and ~Sub only for uploading textures. Not per frame or some other interval, if that is what you meant with 'during run-time'.