Я хочу приобрести размер устройства VRAM для Android.Как измерить потребление VRAM на Android?
Есть ли способ для приобретения из программы?
Я хочу приобрести размер устройства VRAM для Android.Как измерить потребление VRAM на Android?
Есть ли способ для приобретения из программы?
Я подозреваю, что android.os.StatFs является то, что вы ищете:
http://developer.android.com/reference/android/os/StatFs.html
Я бы сделал ставку на то, что стат имеет мало общего с размером видеопамяти. –
Давайте делать некоторые вычисления с помощью Nexus One:
Разрешение экрана 480x800. Так минимальный необходимый объем видеопамяти будет:
400 * 800 * 4 bytes = 1536000 bytes
Предполагая, что водитель может (и, как правило, должны) использовать несколько буферов, мы должны также ожидать такие ценности, как:
1536000 * 2 bytes = 3072000 bytes
1536000 * 3 bytes = 4608000 bytes
etc...
Было бы странно иметь значения, которые не кратные 1536000 (или вообще Ш х В х 4).
После некоторых поисков на Android внутренностей Нашли documentation:
... Android делает два требования водителя: линейное адресное пространство назначаемых памятей, что может писать напрямую ... доступ к водителю по телефону открыть на/DEV/fb0 ...
Так что я попробовал и взять размер /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, но вы не можете использовать этот подход с вашего андроида приложения во время выполнения из-за ограничения доступа к файлу.
Хорошее исследование, спасибо, но не то, что я искал. Наверное, я не был совершенно ясен. Я хочу знать размер памяти сервера OpenGL, в которой мы храним текстуры, буферы вершин и т. Д. В любом случае, если на этот вопрос не назовут ответа, щедрость будет вашей. – Thomas
API-интерфейс Android/OpenGL не предлагает явных методов для чтения размера VRAM с данного устройства.
Бедняга решение:
Вы могли бы попытаться вывести размер VRAM в эмпирическом пути добавления 1MB текстуры, пока вы не получите отказ от ошибки памяти от gl.glGetError()
.
Обычно у вас нет специального «VRAM» на мобильных устройствах. По крайней мере, у вас его нет с архитектурами PowerVR (которые полностью доминируют на рынке с их ядрами MBX и SGX).
То есть, драйвер OpenGL выделяет нормальную ОЗУ до тех пор, пока вы не закончите его, и чем больше вы выделите, тем меньше у вас осталось для вашего приложения.
С вашей "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
или детали на:
Прост просто посчитать, сколько Mb RAM что от полезной до реальной емкости бара, пример для моего lenovo a369i имеет 512 RAM Module, но в настройке приложения отображается только 471 Мб, поэтому для 416 бит зарезервировано для GPU, поэтому вывод у моего a369i есть 41Mb vram
Этот метод основан на общей графической памяти (wiki)
Мне также хотелось бы знать это. Если нет способа запросить его с устройства, то также будет отображаться список количества видеопамяти на обычных устройствах. – Thomas
Чтобы быть ясным, я имею в виду объем оперативной памяти, доступный для текстур, буферов OpenGL и т. Д. Может быть, это не «видео RAM», по сути, но «память сервера OpenGL»? – Thomas