sal*_*tan 12 android opengl-es android-sdk-1.6
我想获得Android设备VRAM大小.
是否有从该计划中获取的方法?
ina*_*ruk 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内部进行一些搜索之后,我发现了这个文档:
... 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
Run Code Online (Sandbox Code Playgroud)
使用下一个技巧你可以获得实际大小fb0:
>adb pull /dev/graphics/fb0
1659 KB/s (4608000 bytes in 2.712s)
视频内存约为4mb(Nexus One).让我们检查这是否是Nexus屏幕尺寸的倍数:
4608000/1536000 = 3
它看起来像一个正确的价值.我们也可以说驱动程序使用三个屏幕缓冲区.
因此,作为结论,您可以使用adb检测视频内存大小,但由于文件访问限制,您无法在运行时从Android应用程序中使用此方法.
您通常在移动设备上没有专用的"VRAM".至少你没有PowerVR架构(它们的MBX和SGX核心完全占据市场主导地位).
也就是说,OpenGL驱动程序会分配正常的RAM,直到您用完为止,分配的越多,您为应用程序留下的就越少.
Tre*_*hns -2
我怀疑 android.os.StatFs 就是您正在寻找的:
http://developer.android.com/reference/android/os/StatFs.html
| 归档时间: |
|
| 查看次数: |
11344 次 |
| 最近记录: |