Jump to content

    

Основы PowerVr SGX 530

Возьмём за основу AM3358. Пишу на ассемблере. С кортексом всё ясно, натравил его на ассемблерный код, он и работает. Точно так же два параллельных ядра PRU. Тривиально.

 

Но с графическим ускорителем столкнулся впервые. Ни ассемблера, ни описания команд..

 

Думал может под NDA? Что в переводе на русский язык означает - Nикому не DAвать. Тогда я прямо и без запинки совести написал в imgtec с просьбой выдать мне пакет документов: PowerVR SGX Series5 Instruction Set и Technical Reference Manual. И что вы думаете? Они, видимо посчитав меня придурком, и решив что я издеваюсь, не ответили! :smile3046:

 

И тогда я понял, что всё гораздо проще. Нет там никакого ассемблера и референсного мануала. А есть интерфейс, который принимает стандартные машинные коды ОpenGL. Быстренько обрабатывает их и выкидывает в буфер. И всё. Что делать дальше, пока не знаю :laughing:

 

Подскажите, как нарисовать на экране свой первый треугольник? Что является Hello world! для графического сопроцессора. Скачал POWERVR SDK, там есть демки, содержат кучу файлов. Сишные коды, картинки.. Назначения не понял..

 

Графический ускоритель держу в руках впервые! Сильно не ругайте.

Share this post


Link to post
Share on other sites
И тогда я понял, что всё гораздо проще. Нет там никакого ассемблера и референсного мануала. А есть интерфейс, который принимает стандартные машинные коды ОpenGL. Быстренько обрабатывает их и выкидывает в буфер. И всё.

Ну вобщем вы описали похоже на правду, только там не коды OpenGL, а специальный процессор, который как процессор примитивизированный - у него нет многих команд типичных для CPU, а вместо этого у него свои команды, по сути таки ассемблерные но специализированные - типа скопировать из памяти строку на видеовыход (по сути там у процессора акселератора встроенный DMA и часть команд как раз этим DMA управляет); плюс в акселераторе часто есть регистры откуда начинается видеопамять, то есть если вам нужно скроллить экран, то не копируется информация а просто меняется адрес и акселератор показывает картинку с другого места.

Называется набор команд графакселератора обычно displaylist или как-то похоже.

Если вы ассемблерщик, то лучше всего почитайте про работу графического акселератора древних atary вроде 65XE, а поэкспериментировать можно на эмуляторах.

http://en.wikipedia.org/wiki/ANTIC

 

В современных 3D акселераторах добавились новые модули и новые ступени обработки, но идеологически современные акселераторы являются развитием тех самых atary и именно управление акселератором из ассемблера работает практически также - пишется displaylist в определенную область памяти и дальше происходит магия.

SDK нужен потому что displaylist работает с специальными форматами картинок и прочих данных, и нужно их вначале в этот формат преобразовать а потом уже копировать в память акселератора. А если работа идет под какой-то ОС, то соответственно приложение должно эти все копирования делать не просто так а взаимодействуя с ОС.

Share this post


Link to post
Share on other sites

Читаю доки по OpenGL. Но меня терзает главный вопрос - где в нашем камне регистры и та самая заветная дырочка, в которую суются исполняемые коды? Или может указатель на начало кодов OpenGL в памяти и некий заветный флаг, запускающий исполнение этих кодов..

 

А то, есть акселератор и есть. Ну а где он? Всё равно что SPI на борт поставить и засекретить регистры..

 

 

Нашёл такое сообщение

http://www.opennet.ru/opennews/art.shtml?num=34149

 

Значит ли это, что на аппаратном уровне сопроцессор закрыт от посторонних? Ни регистров, ни флагов.. :wacko:

 

Что-то я прихожу к выводу, что графический сопроцессор - это тёмная лошадь за многими печатями.

 

Осталось только понять, как с ним работать из ассемблера.

Share this post


Link to post
Share on other sites

Если OpenGL независим от языка, значит он и независим от ассемблера? B)

Share this post


Link to post
Share on other sites
Возьмём за основу AM3358...

...Но с графическим ускорителем столкнулся впервые. Ни ассемблера, ни описания команд...

А не пробовали на сайте TI в строке поиска набрать "PowerVR SGX"?

AM35x-OMAP35x Graphics SDK Getting Started Guide - это не то, что Вы ищете?

 

Share this post


Link to post
Share on other sites

Там ни слова о железе. Только это страшное слово SDK!

Share this post


Link to post
Share on other sites

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

 

Единственный путь разобраться с регистрами и системой команд графпроцессора -- тщательно разобраться с этой библиотекой, дизассемблировать её и восстановить логику работы. Причём, замечу, с выходом следующего графпроцессора всё может кардинальным образом поменяться, т.е. никакой совместимости "снизу вверх" там может и не быть.

Share this post


Link to post
Share on other sites

В новом SAMA5D34 полностью документированный хороший контроллер жки. Производительность на уровне Pentium-4M. На мой взгляд, очень такой народный камушек, без дурацких перенаворотов. (хочется нечто большее, чем примитивные контроллеры ЖК в относительно медленных кортексах М3-М4).

 

И ещё, как мне показалось, в iMX536 то же открытый акселератор?? Но там такой огромный медиа-сопроцессор, напичкано до тошнотиков. А описание регистров я не нашёл, может они вынесены в другой документ.... Но это так, это ненародный камушек совсем....

 

Так что SGX снимается с повестки дня :smile3009:

Share this post


Link to post
Share on other sites
В новом SAMA5D34 полностью документированный хороший контроллер жки.

 

У атмела уже давно были сопроцессоры для обработки изображений, например в at91sam9m10 и все регистры их описаны в даташите (VDEC -> Postprocessing Features). Аналогичные ф-ции выполняют PxP(imx23/28)/ePxP(imx50,imx6lite) в упрощенных процессорах Freescale, в более мощных - IPU, у TI это помоему VPSS и все это имеет слабое отношение к графичеким процессорам 2D/3D с которых вы начали тему. Они тоже могут выполнять аналогичные ф-ции, но суть их - рендеринг а не преобразование растровых изображений.

 

Производительность на уровне Pentium-4M

 

ну разве что когда они оба выключены :)

Edited by sasamy

Share this post


Link to post
Share on other sites

Я просто и не знал, что бывают графические сопроцессоры. Получается как, из всяких тинок и мег я дорос до кортексов со встроенным ЖКИ. Оказалось, что он чуть живой и пригоден только чтоб проверить этот ЖКИ на работоспособность. А значит выше - только А8 с их дурацким sgx. Но тут оказалось что нет! Мне понравился свежий анонс у атмела. И пишу я только на ассемблере.

 

ну разве что когда они оба выключены

 

Почему, и во включенном состоянии они на равных. Оба дают порядка 800 MIPS. Ведь речь идёт о мобильной версии пентюха. А что, пень имеет оперативку с пропускной способностью 1.5 гигабайта в сек? Одноцикловое ядро? Интегрированный в кристалл гигабиный интернет? И прочие вкусняшки? Да, пень справляется с этими задачами при помощи обвеса, но на частоте 2 гигагерца. Вот и вся разница. Ну и жерёт примерно в 100-150 раз больше B)

 

Ну и Cortex-М4F спокойно делает Pentium III-M. Просто народ ещё по инерции не в силах этого осознать. Делают моргалки на сверх-процессорах..

 

Только не говорите, что в пнях есть нечто такое, что не объясняется простыми словами. А так же мощная математика - по большому счёту, она не шибко нужна. Достаточно той, что есть в кортексах. Всё равно, А5 уделывает мобильную P4.

Edited by LWW

Share this post


Link to post
Share on other sites
Мне понравился свежий анонс у атмела. И пишу я только на ассемблере.

 

Это многое объясняет в ваших заблуждениях :)

 

Оба дают порядка 800 MIPS.

 

В реальной жизни сферические мипсы мало кого инересуют, даже синтетические тесты полной картины не дают.

 

Share this post


Link to post
Share on other sites

Ну понятно, чё. Ассемблер. Многие сразу падают со стула :)

Share this post


Link to post
Share on other sites

Я весь "низкоуровневый" код тоже на ассемблере пишу, "высокоуровневый" -- на Аде (для АРМов) или на Паскале (Дельфях) либо опять-таки Аде (на ПК).

 

Если интересует, как работают графические процессоры (а не простые контроллеры, обеспечивающие вывод растровых изображений, т.е. уже заполненного видеобуфера, на экран, подключенный по тому или иному стандартному интерфейсу), почитайте описания принципов работы видюх для ПК -- например, на iXBT. Что же касается технической документации, то, насколько мне известно, её выкладывает только Интел на свою встроенную графику; выложила также АМД на первые графические процессоры, поддерживающие ДиректХ 10 (те, что разработала ещё АТИ перед тем, как АМД её купила). Там есть в том числе и описание ассемблера тех процессоров.

 

Но насчёт производительности Вы заблуждаетесь. Самые мощные Кортехы-М по ней примерно соответствуют ранним Пентиумам, но не более. Самые мощные Кортехы-А уже могут тягаться с самыми слабыми современными процессорами Интел и АМД. Но в тех случаях, когда нужна в первую очередь высокая производительность, ИА-32 пока что сильно обгоняет АРМ.

Edited by SII

Share this post


Link to post
Share on other sites

> Если интересует, как работают графические процессоры, почитайте описания принципов работы видюх для ПК

 

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

 

Касательно работы SGXа: надо четко понимать разницу между "видеокартой" и "графическим ускорителем". Так вот SGX это второе. Он может очень быстро превратить кучу OpenGL примитивов в конечную сцену (битмапу фактически). А уже эту битмапу можно выводить(например положить в линуксячий фреймбуфер или сохранить в растровый файл). Я вам не скажу за чистое MCU програмирование, но в линуксе дело обстоит примерно следующим образом: разработчики борды получают под НДА некий частично прекомпилированный СДК(а иногда и полностью прекомпилированный) и затем собирают и линкуют с нужным ядром получая модули для этого ядра.

Share this post


Link to post
Share on other sites

Но вот именно рендеринг и не нужен. Зачем он вообще? Для ерунды всякой..

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this