2010-07-01 15 views
12

Quiero adquirir el tamaño de dispositivo VRAM de Android.¿Cómo medir el consumo de VRAM en Android?

¿Hay un método para la adquisición del programa?

+0

Me gustaría saber esto también. Si no hay forma de consultarlo desde el dispositivo, una lista de la cantidad de RAM de video en dispositivos comunes también lo haría. – Thomas

+0

Para ser claro, me refiero a la cantidad de RAM disponible para texturas, búfers, etcétera de OpenGL. ¿Tal vez esto no es "RAM de video", per se, sino "memoria de servidor OpenGL"? – Thomas

Respuesta

15

Hagamos un poco de cálculo utilizando Nexus One:

resolución de pantalla es de 480x800. tamaño, por lo mínimo de memoria de vídeo requerido sería:
400 * 800 * 4 bytes = 1536000 bytes

Suponiendo que el conductor puede (y normalmente debería) usar varios tampones, también debemos esperar valores como:

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

Sería extraño tener valores que no son múltiplos de 1536000 (o W x H x 4 en general).


Después de algunas búsquedas en Android internos he encontrado este documentation:

... Android hace dos requisitos del conductor: un espacio de direcciones lineal de la memoria asignable que puede escribir directamente a ... acceder al controlador llamando abierta en/dev/fb0 ...

Así que probé y tomo tamaño de archivo /dev/graphics/fb0 (en mi dispositivo no hay /dev/fb0).

Sin embargo, un enfoque directo no funciona:

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

utilizar en el siguiente truco que puede obtener el tamaño real de fb0:
>adb pull /dev/graphics/fb0
1659 KB/s (4608000 bytes in 2.712s)

de memoria de vídeo es ~ 4 Mb (Nexus One) . Vamos a ver si esto es múltiplo del tamaño de la pantalla de Nexus:

4608000/1536000 = 3

Parece un valor correcto. Y también podemos decir que el controlador usa tres buffers de pantalla.


Por lo tanto, como conclusión, se puede detectar el tamaño de la memoria de vídeo usando adb, pero no se puede utilizar este enfoque desde la aplicación Android en tiempo de ejecución debido al presentar restricciones de acceso.

+0

Una buena investigación, gracias, pero no es lo que estaba buscando. Probablemente no he sido del todo claro. Lo que quiero saber es el tamaño de la memoria del servidor OpenGL, en la cual almacenamos texturas, búferes de vértices, etc. De todos modos, si esa pregunta no recibe respuesta, la recompensa es suya. – Thomas

4

Las API/OpenGL Android no ofrecen métodos explícitos para leer el tamaño de VRAM de un dispositivo dado.

solución Pobre hombre:
Usted podría tratar de inferir el tamaño de VRAM de una manera empírica añadiendo textura de 1 MB hasta que obtenga un error de falta de memoria de gl.glGetError().

5

Normalmente no tiene un "VRAM" dedicado en dispositivos móviles. Al menos no lo tiene con las arquitecturas PowerVR (que dominan totalmente el mercado con sus núcleos MBX y SGX).

Es decir, el controlador OpenGL asigna memoria RAM normal hasta que se queda sin ella, y cuanto más asigna menos tiene para su aplicación.

2

Desde su salida "dmesg" u puede leer el VRAM, por lo que para mi tableta:

> [ 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 

o detalles en:

http://pastebin.com/jQSXQqHh

0

es simple simplemente contar el número de MB de RAM de la capacidad utilizable a real del ram, ejemplo para mi lenovo a369i tiene 512 RAM Module, pero en la aplicación de configuración solo muestra 471 Mb utilizable por lo que los 41Mb restantes están reservados para la GPU, así que la conclusión es mi a369i tiene 41Mb vram

Este método se basa en la memoria de gráficos compartida (wiki)

Cuestiones relacionadas