LINUX.ORG.RU

Управление памятью в OpenGL ES


0

1

Интересует вопрос: в какую память загружает ресурсы android девайс при использовании opengl ?

Логично предположить что в VRAM, но на stackoverflow прочитал, что у некоторых девайсов VRAM и RAM - это одно и то же.

Если есть знатоки управления памятью в андроиде - то было интресно услышать полный ответ: те использование кучи, видео памяти итд.

★★

Последнее исправление: sacred (всего исправлений: 1)

сильно зависит от девайса.

Jetty ★★★★★
()

Ну какбы, ты об этом и не должен особо думать :) Это драйвер пусть разруливает.
Ну, я думаю там также как и на десктопе. У разных чипов разное количество памяти/текстурных/программных/вершинных/ещё каких блоков.
Инфу о доступной видеопамяти и других показателях по-идее должен быть какой-то способ узнать в рантайме.. Возможно, там даже для простоты, нету разделения на видео и остальную память, т.е. если в видео память не влезает — оно автоматом залезет в оперативку, хотя не, не знаю как оно там в андроиде. :)

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

проблема вот в чем: раньше на работе юзали AndEngine и проблем не было тк всетаки java и даже игры с 15 метрами графики юзали 20 метров оперативы.
теперь же перешли на marmalade sdk и по началу было шоком что при 20 метрах ресурсов оно хавало 100 (!) метров оперативы. сейчас вот пытаюсь разобраться что и куда грузится.

sacred ★★
() автор топика
Ответ на: комментарий от sacred

Ну может оказаться что там просто более громоздкие структуры данных, типа какой-нить там класс UberObject с кучей всякого хлама...

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

пока выяснил следующее:
у андроид приложения есть dalvik heap и native heap. Собственно память для bitmap выделяется в native heap. те как я понял это все части RAM, просто в одном случае есть GC, а в другом нет. Но остается вопрос насчет VRAM: она все-таки часть RAM или там сделано как-то хитрее.

Ну может оказаться что там просто более громоздкие структуры данных

на их сайте пишут что мармелад выделяет сразу выделяет себе большой кусок или несколько больших кусков памяти

sacred ★★
() автор топика
Ответ на: комментарий от sacred

VRAM (то, куда попадают данные, когда их отдаешь драйверу, типа glTexImage2d) - обычно кусок оперативной памяти, который целиком отдается железке, и в который менеджер памяти линупса не вмешивается

anonymous
()
Ответ на: комментарий от anonymous

черд. мир перевернулся. а в чем тогда профит от GPU ? я думал что у него отдельная память, а оказывается что это не так

sacred ★★
() автор топика
Ответ на: комментарий от sacred

я думал что у него отдельная память

Ну на десктопе так и есть, когда на карте гигабайты памяти уже, то оперативку можно и не трогать. Да и то посмотри, например, у встраиваемых в чипсет графических чипов обычно есть опция, чтобы юзать оперативку как дополнительную память, когда своей не хватает.

Bad_ptr ★★★★★
()

а зачем там vram? таже на портативных игровых консолях видеопамяти считаные мегабайты(ну кроме псп виты там уже 128мб), и ведь выдают на ура чудестнуюграфику.

Novell-ch ★★★★★
()
Ответ на: комментарий от Boy_from_Jungle

пока удалось выяснить следующее: что размер dalvik heap около 20-48mb (зависит от девайса) - тут в управлении памятью помогает GC. Как я понимаю эта память используется для каких-то java объектов( если версия android < 3.0 (В 3.0 и выше текстуры загружаются в dalvik heap и соответсвенно должны убираться GC)).
Размер native heap ограничен только размером свободной оперативной памяти:
я на своем huawei u8230 при 110 метрах свободной оперативной памяти(это так память которая отводится под dalvik heap ( а всего ее у меня около 200 метров)) смог загрузить 45 текстур рамером 1024х1024 - как можно посчитать (и как показать ddms (он умеет показывать native heap !)) - я использовал 192 метра оперативной памяти - те os поубивала почти все левые процессы но таки загрузила все в память. При чуть больше количестве тексур (50) памяти уже перестало хватать - в резататке чего убивался лаунчер, но тут os уже выгражала тестовую прогу: те никакого OutOfMemory не выдавалось(что вполне логично)

Отсюда можно сделать вывод - что VRAM и RAM - скорее всего одна и та же память

как-то так)

sacred ★★
() автор топика
Ответ на: комментарий от sacred

что размер dalvik heap около 20-48mb (зависит от девайса) - тут в управлении памятью помогает GC

от 12, 16 и выше зависит от прошивки еще. на 3.0 можно выделить 50мб

Boy_from_Jungle ★★★★
()
Ответ на: комментарий от sacred

и как показать ddms (он умеет показывать native heap !)

где, можешь скрин запостить

прикольно, а тестовый свой проект можешь куда-то выложить?

Boy_from_Jungle ★★★★
()
Ответ на: комментарий от Boy_from_Jungle

кароч с выделением памяти в андроиде я вроде как разобрался. осталось только понять как ее выделят marmalade sdk. у них своя какя-то хитрая система(

sacred ★★
() автор топика
Ответ на: комментарий от sacred

а в чем тогда профит от GPU ? я думал что у него отдельная память

Ну когда CPU и GPU на одном чипе и имеют одну память операции по загрузке данных «на видеокарту» могут быть быстрее.

note173 ★★★★★
()
Ответ на: комментарий от Boy_from_Jungle

я проделал все как там написно - и оно заработало. видом что она у меня была. на работе проверял на разных дейвасах - есть не везде - на наксусе первом нет(

sacred ★★
() автор топика
Ответ на: комментарий от Boy_from_Jungle

я ж говорю - у меня хуавей у8230 с цианоген модом. видимо поэтому у меня она уже была

sacred ★★
() автор топика
Ответ на: комментарий от Boy_from_Jungle

я нагугливал версию для зума (на работе хотел на нексус ее залить), но так и не решился)

sacred ★★
() автор топика
Ответ на: комментарий от sacred

видел ее тоже, но не пробывал пока, вообще на мороженке это все есть, но она пока бета для моего

Boy_from_Jungle ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.