Publish: Про спеки iPad

Одна из самых важных повседневных функций Кружочков – практические вопросы. Чат – очень быстрый и интерактивный медиум, прямо чувствуешь доступ к коллективному разуму.

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


People in this conversation:
Simon Kozlov Add
Engineer at ROBLOX (www.roblox.com), previously at Microsoft. And ClosedCircles was my idea.
Alexander Ivolgin Add
Gamekeepers, Unity3D C# Lead programmer (Graphics)
Sergey Makeev (Joker) Add
Mail.ru games – Technical Director (Client).
Previously: Akella, 1C.
Freelance: Gaijin, IceHill, DAT
Alexey Vlasov (_All) Add
Skyfallen, Mail Ru, Arktos Entertainment Art Director
Personal Site http://all.scan3d.ru/
CV
Roman Galashov (RomBinDaHouse) Add
Il-2 Sturmovik: Birds of Prey (Art Director);
Skyforge (TA)
Pavlo Gryb Add
Zeux Add
CREAT Studios, Saber3D, Sperasoft (EA Sports). Currently working on FIFA Street. http://zeuxcg.org/
Pavel Nakaznenko (Crio) Add
Programmer (Xbox 360, PS3, PC)
at Darkside Games Studio
http://dtf.ru/person/cv.php?id=835
Ilya Zaytsev (Sark7) Add
Graphics Software Engineer at ARM Norway
Ivan Kosenko Add
Game programmer.
Win, mac, iOS, PS3.

Simon Kozlov: @All
А вот снова про ipad1
Скажите, на сколько инструкций на пиксель можно рассчитывать?
Пусть в идеальном случае даже. Без всяких RT, тупо несколько текстурных стейджей
Википедия пишет – 14 M Triangles/s, 1Gpx/s@200 MHz, Max Memory Band 4.2GB/s
Это типа около 30 на пиксель экрана если 30 FPS

Alexander Ivolgin: reply @Simon Kozlov
У нас 146 мб максимум удается приложению на iPad1. После этого оно киляется сразу же. Поэтому рассчитываем на 90-110 максимум, с запасом.

Simon Kozlov: reply @Simon Kozlov
А память там shared с CPU и GPU? Т.е. 256 mb – это на все про все?

Joker: reply @Simon Kozlov
256! посмешил, да :)
тебя прибъет гораздо раньше операционка

Simon Kozlov: reply @Joker
Ну я слышал, что там около 50% реально можно сожрать
Как на практике?

Joker: reply @Joker
в общем случае сколько захочет, столько и даст
на практике вроде >40-50мб прибивает, в зависимости от того сколько запущено еще всякой хрени
но я давно под iOS ничо уже не делал
может в пятерке все лучше :)

Simon Kozlov: reply @Joker
40-50???? Они охерели все там?
А оно таки общее между CPU и GPU?

Joker: reply @Simon Kozlov
Observe Low-Memory Warnings

When the system dispatches a low-memory warning to your app, respond immediately. iOS notifies all running apps whenever the amount of free memory dips below a safe threshold. (It does not notify suspended apps.) If your app receives this warning, it must free up as much memory as possible. The best types of memory to release are caches and image objects that can be recreated later if needed.

Joker: reply @Simon Kozlov
общая или нет память, хз
я всегда делал как будто общая

Simon Kozlov: reply @Joker
Вроде упоминаний что отдельная нигде нет. И SoC как бы

_All: reply @Joker
неправда
практика где та в районе 100 но лучше 90.

RomBinDaHouse: reply @_All
на пс2 было 11 -16 Мб эффективных, так что есть где развернуться)

_All: reply @RomBinDaHouse
дык да. но на первом айпаде мы уже не видим стриминга и поддержки новых тридекарт для навигации.
ленивые сукины дети головой думать не хотят + маркетинг шоб трешку покупали и ставили шестой иос

Joker: reply @Joker
посмотрел старые тесты, но меня уже и поправили 40-50Мб это для iphone 3g
но их и не осталось наверное :)

_All: reply @Joker
+1

_All: reply @Simon Kozlov
97. придел 128 с изьебами

Simon Kozlov: reply @_All
А эти 97 и 128 – это shared с GPU или CPU?

_All: reply @Simon Kozlov
ну я через юнити делал. Лучше в канале юнити спросить. через профайлер ихний видно что срет в консольтак шаред.

Pavlo Gryb: reply @Simon Kozlov
97 ( в моем случае это около 90) (iPad1)- эта та память которую жрет твой процесс (по интсрументам) – если она залазит за этот предел то система тебя выкидывает, во время дебага тебе прощают только 10 секунд на старт

Simon Kozlov: reply @Pavlo Gryb
Понял, спасибо!

Zeux: reply @Simon Kozlov
From a similar case of fragment shader tuning I asked about, I found that an 11-16 cycle fragment shader took 35-68 ms to render on an iPad 1 (15 – 29 FPS).

_All: reply @Simon Kozlov
неправда

Zeux: reply @Simon Kozlov
По спекам выглядит как будто 400 mcycles/sec, т.е. на 30 fps и 1024×768 получается скорее 13-15.
Что соответствует комменту выше там. Но это понятно надо всякие low precision и в общем чуток поработать!
По моей той внутренней классификации это Shader (0), aka “пиксельные шейдеры есть, но лучше бы не было”

Crio: reply @Simon Kozlov
расскажи как считал?

Simon Kozlov: reply @Crio
Ну типа, гигапиксель в секунду, экран порядка мегапикселя, значит 1000 пикселей в секунду на один пиксель экрана. Если тупо поделить на 30FPS получается около 30
Но там пишут, что скорее 10

Crio: reply @Simon Kozlov
Я просто считал так: 1000 000 000 / 1024 / 768 * 0.033. Получалось примерно 41. Слабо верится

Simon Kozlov: reply @Crio
Ну, 30, 41, порядок тот же. Верится слабо, да

Zeux: reply @Simon Kozlov
Ты не то считаешь.
Гигапиксель в секунду это скорее всего ROP, который с тайлингом понятно шустрый.
Надо умножать core clock на pixel pipeline count

Simon Kozlov: reply @Zeux
Ага. Pixel clock конечно может быть другой

Zeux: reply @Simon Kozlov
В случае NV умножать надо shader clock, ну и плюс еще иногда надо на что-нибудь делить, т.к. NV репортит “CUDA core count”, а ATi умножает свое число ядер на 5…

_All: reply @Simon Kozlov
типа того по моим тестам в юнити. а если с шейдерами так и того меньше.

Simon Kozlov: reply @Simon Kozlov
Продолжение вопроса – это про DIP count. Сколько у вас получается на ipad1 c вменяемым FPS?

Pavlo Gryb: reply @Simon Kozlov
280 – при 25 кадрах – fixed function, 3d, 1 источник света, пример сцены – в личку
смотреть с 1:30
софтовый скининг 2.5к вертексов на каждого

Sark7: reply @Pavlo Gryb
а какой смысл в использовании ffp?

Pavlo Gryb: reply @Sark7
по поводу ffp – пока ничего не произошло что требовало шейдеров и надеюсь в ближайшие несколько лет не произойдет

Zeux: reply @Pavlo Gryb
HW skinning медленнее?

Pavlo Gryb: reply @Zeux
Не сравнивал – у меня fixed function – а скининг на айжелезках только по 11 матриц за DP принимает

Zeux: reply @Pavlo Gryb
Ммм, а почему 11? (ты про hw skinning или vertex shaders?)

Pavlo Gryb: reply @Zeux
я про GL_MATRIX_PALETTE_OES (для fixed function)
тут еще бытует мнение что графический чип крутится на 350 а проц на 1000 – поэтому на cpu особенно с neon будет полюбому быстрее – сам не проверял

Zeux: reply @Pavlo Gryb
Оно в целом да, но на CPU по дипам влезть бы…

Pavlo Gryb: reply @Zeux
на cpu всегда это один дип (не надо бить на группы по 11 матриц)

Zeux: reply @Pavlo Gryb
Я в том плане что за CPU performance тоже есть опасения

Pavlo Gryb: reply @Zeux
по профалеру 10% всего – но это без неона с неоном не мерял
ну и +заливка (glSubData)
идея былоа проста – как только на первом айпаде добился 25 кадров то дальнейшую опитимизацию прекратил до релиза

Simon Kozlov: reply @Pavlo Gryb
Спасибо огромное! Такие данные нигде не нагуглить блин

Pavlo Gryb: reply @Simon Kozlov
На втором даже с включенным антиалиасингом даем 25+

Simon Kozlov: reply @Simon Kozlov
У меня кстати получилось, что OS убивает где-то на 130M
Так что все правда

Ivan Kosenko: reply @Simon Kozlov
у меня тоже на 120-130.
а на втором – примерно на 256

This happened on #gamedeff