簡體   English   中英

如何衡量Android上的VRAM消費?

[英]How to measure VRAM consumption on Android?

我想獲得Android設備VRAM大小。

是否有從該計划中獲取的方法?

讓我們用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

使用下一個技巧你可以獲得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,直到您用完為止,分配的越多,您為應用程序留下的就越少。

Android / OpenGL API不提供從給定設備讀取VRAM大小的顯式方法。

窮人解決方案
您可以嘗試以經驗的方式推斷VRAM大小,添加1MB紋理,直到gl.glGetError()出現內存不足錯誤。

從你的“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

簡單算一下從可用到ram的實際容量有多少Mb ram,例如我的lenovo a369i有512個RAM模塊,但在設置應用程序時只顯示471 Mb可用所以剩下的41Mb為GPU保留,所以結論是我的a369i有41Mb的vram

此方法基於共享圖形內存(wiki)

我懷疑android.os.StatFs是你正在尋找的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM