如何衡量Android上的VRAM消费?

时间:2010-07-01 01:49:58

标签: android opengl-es android-sdk-1.6

我想获得Android设备VRAM大小。

是否有从该计划中获取的方法?

6 个答案:

答案 0 :(得分:15)

让我们使用Nexus One进行一些计算:

屏幕分辨率为480x800。因此,所需的最小视频内存大小为:
    400 * 800 * 4 bytes = 1536000 bytes

假设驱动程序可能(通常应该)使用多个缓冲区,我们也应该期望像:

这样的值

1536000 * 2 bytes = 3072000 bytes
1536000 * 3 bytes = 4608000 bytes
etc...

如果值不是1536000的倍数(或者通常为W x H x 4),那将会很奇怪。


在Android内部进行一些搜索后,我发现了documentation

  

... Android对驱动程序提出了两个要求:可以直接写入的可映射内存的线性地址空间...通过在/ dev / fb0上调用open来访问驱动程序...

所以我尝试了/dev/graphics/fb0文件的大小(在我的设备上没有/dev/fb0)。

但直接方法不起作用:

 File file = new File("/dev/graphics/fb0");
 file.length(); // ==0, doesn't work, no read access

使用下一个技巧,您可以获得fb0的实际大小:
    >adb pull /dev/graphics/fb0
    1659 KB/s (4608000 bytes in 2.712s)

视频内存约为4mb(Nexus One)。让我们检查这是否是Nexus屏幕尺寸的倍数:

4608000/1536000 = 3

它看起来像一个正确的价值。我们还可以说驱动程序使用三个屏幕缓冲区。


因此,作为结论,您可以使用adb检测视频内存大小,但由于文件访问限制,您无法在运行时从Android应用程序中使用此方法。

答案 1 :(得分:5)

您通常在移动设备上没有专用的“VRAM”。至少你没有PowerVR架构(用MBX和SGX核心完全统治市场)。

也就是说,OpenGL驱动程序会分配正常的RAM,直到你用完为止,分配的越多,你的应用程序就越少。

答案 2 :(得分:4)

Android / OpenGL API不提供从给定设备读取VRAM大小的显式方法。

穷人解决方案
您可以尝试以经验方式推断VRAM大小,添加1MB纹理,直到您从gl.glGetError()获得内存不足错误。

答案 3 :(得分:2)

从您的“dmesg”输出中,您可以读取VRAM,因此对于我的平板电脑:

> [    0.000000] Machine: TDM3730 [    0.000000] Reserving 12582912
> bytes SDRAM for VRAM
> 
> 7>[    3.929962] VRAM: checking region 9f400000 3072                  
> <4>[    3.929992] Failed. Allocating 4194304 bytes for fb 0           
> <7>[    3.935333] VRAM: alloc mem type 0 size 4194304 paddr dec2bd4c  
> <7>[    3.935485] VRAM: checking region 9f400000 3072                 
> <7>[    3.935485] VRAM: found 9f400000, end a0000000                  
> <6>[    3.936584] android_usb gadget: high speed config #1: android   
> <4>[    3.960113] allocating 4194304 bytes for fb 1

或详情:

http://pastebin.com/jQSXQqHh

答案 4 :(得分:0)

简单算一下有多少Mb ram从可用到ram的实际容量,例如我的lenovo a369i有512个RAM模块,但在设置应用程序时只显示471 Mb可用所以剩下的41Mb为GPU保留,所以结论是我的a369i有41Mb vram

此方法基于共享图形内存(wiki)

答案 5 :(得分:-2)

我怀疑你正在寻找android.os.StatFs:

http://developer.android.com/reference/android/os/StatFs.html