【问题标题】:GPU memory limit for saving textures on Android & iOS devices在 Android 和 iOS 设备上保存纹理的 GPU 内存限制
【发布时间】:2017-08-20 14:35:21
【问题描述】:

我正在创建一个基于 Open GL ES 3.0 的 Android 应用程序,它必须迎合各种设备。

由于我的应用程序的某些要求,我必须在我的应用程序运行时在 RAM 上保留大量图像数据。由于 android 手机对每个应用程序的 CPU 内存使用有限制或heap memory size 限制,我决定在我的应用程序运行时将所需的图像数据作为纹理保留在 GPU 内存上。

我的纹理大小是1024x1024。保存纹理并在需要时再次显示它们对于它的实现部分来说都很好。

但是,很快我发现 GPU 内存也有接近限制看起来)。我只能在 Sony XPeria Z5 上保存 1024x1024x50 近似数量的纹理。 1024x1024x70 另一个 Sony XPeria 系列的纹理。 Huawei P8 上的1024x1024x90 等等。

另外,我发现iOS 设备上的textures/GPU memory 也存在限制。我无法在 iPhone 6+ 上保存更多 1024x1024x90 纹理!!

这里的数字并不准确,但非常接近。我提出这个问题的目的是了解 Android 设备上的应用程序允许使用多少 GPU 内存

Android 应用程序是否允许 GPU 内存以某种方式与 CPU 内存相关,正如 link here 所指出的那样?

Android 应用可以通过 Manifest 中声明的属性请求 large heap。同样,我是否可以通过某种方式为我的应用请求更多 GPU 内存?

纹理是否真的存储在 GPU 内存中,或者其中的一部分也存储在 CPU 内存中?

任何与 iOS 设备和 android 设备上的 GPU 内存限制相关的信息都会有所帮助。

【问题讨论】:

    标签: android ios opengl-es gpu


    【解决方案1】:

    我认为您关心的所有设备都有统一的内存,这意味着您不必担心 GPU 和 CPU 内存之间的区别。从您的角度来看,最好将其视为同一个 RAM 池。

    Android 应用可以通过 Manifest 中声明的属性请求大堆。同样,我可以通过某种方式为我的应用请求更多 GPU 内存吗?

    大堆是指 Java 分配。如果您正在编写本机代码(许多针对 iOS 和 Android 的应用程序的大部分代码都使用 C++),那么这可能不会有太大区别。

    你可以看到不同的iOS设备有多少内存here

    对于 Android,您可以查看 here 以查看兼容性定义。例如,支持 Marshmallow 的非手表设备至少有 512MB。

    您可以计算出您的纹理需要多少内存,假设 32 位 8888 格式且没有 mipmap,每个纹理为 1024*1024*4bytes=4MB(如果这些假设错误,请更新问题!)。其中 50 个的 Sony XPeria Z5 的容量约为 200MB。华为 P8 和 iPhone6+ 的容量为 360MB。

    您不应该期望能够使用智能手机上所有 RAM 附近的任何地方。有一个操作系统和其他需要运行的应用程序,并且没有像您在桌面操作系统上看到的基于存储的虚拟内存。根据经验,在操作系统关闭您的应用程序之前,您可能会使用大约 30%-50% 的系统 RAM。 iOS 肯定会,我也相信 Android 会在您的内存使用量过高时向您的应用发送警告。

    粗略的计算在 iPhone6+(1GB RAM,你可以使用 360MB)上运行得差不多,但索尼 XPeria Z5 和华为 P8 都拥有 3GB 的巨大 RAM。 TBH,我不知道你为什么能用这么少。

    编辑:另外,在调试器中运行会增加显着的内存开销,但我认为这不能解释那些 Android 设备上缺少的 GB。

    【讨论】:

    • 某些设备是否有专用的 GPU 内存?如果有,那么我保存的纹理是否会进入 GPU 内存?
    • 我相信所有 iOS 和 Android 设备都有统一的内存(即在 CPU 和 GPU 之间共享)。
    猜你喜欢
    • 2012-06-30
    • 1970-01-01
    • 2012-05-08
    • 2012-11-04
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    相关资源
    最近更新 更多