I am creating an Android app based on Open GL ES 3.0
which has to cater to wide range of devices.
Due to certain requirement in my app, I have to retain lot of image data on the RAM while my app is running. Since, android phones have a limit to per application CPU memory usage or heap memory size
limit, I decided to retain my required image data as textures on GPU memory while my app runs.
My texture size is 1024x1024
. Saving textures & displaying them back again when required all works fine for the implementation part of it.
But, soon I figured that the GPU memory has close limits as well (as it seems). I am able save only 1024x1024x50
approximate number of textures on a Sony XPeria Z5. 1024x1024x70
textures on another Sony XPeria series. 1024x1024x90
on a Huawei P8 and so on.
Also, I found that there is a limit to textures
/GPU memory
on iOS
devices too. I am not able to save more that 1024x1024x90
textures on an iPhone 6+
!!
The numbers here are not accurate but quite close. My objective of putting up this question is to get an understanding of how much GPU memory is allowed to an application on android devices.
Does GPU memory allowed to an android app related to the CPU memory somehow as this link here indicates ?
Android apps can request for large heap
by a property declared in Manifest. Likewise, Is there some way I can request for more GPU memory for my app ?
Are textures really stored on GPU memory or a part of it also stored on CPU memory ?
Any information related to GPU memory limit on iOS devices along with android will be helpful.