LINUX.ORG.RU
ФорумTalks

Вести с фронта разработки проекта Mesa.

 d3d1x, , , ,


0

3

За последние несколько дней произошло несколько значимых изменений в основной ветке проекта Mesa.

В основную ветку был добавлен первый драйвер с поддержкой ARM SoC GPU. Этот новый Gallium3D драйвер под названием Freedreno для Qualcomm Snapdragon/Adreno графических процессоров. Заявлена поддержка A220 чипа но как говорит разработчик все семейство a2xx очень похоже и не составит труда добавить поддержку в существующий драйвер.

Qualcomm Snapdragon с чипами APQ8060, MSM8260 и MSM8660 применяется в таких устройствах как HP TouchPad, Samsung Galaxy S II, Samasung Galaxy S Blaze 4G, ASUS Eee Pad Memo, HTC Sensation, Samsung Galaxy Note, and LG Optimus LTE.

Также планируется поддержка a3xx семейство устройств. Следующее поколение имеет отличия в архитектуре и разработчик пока еще не уверен стоит ли добавить поддержку в существующий драйвер или начать новый.

Разработка драйвера Freedreno началась в прошлом году человеком по имени Rob Clark и велась путем обратной разработки.

http://cgit.freedesktop.org/mesa/mesa/commit/?id=6173cc19c45d92ef0b7bc6aa008a...

Из основной ветки был удален код стейтрекера d3d1x, как неиспользуемый и не поддерживаемый. d3d1x стейтрекер был добавлен в основную ветку в сентябре 2010 года. d3d1x стейтрекер реализовывал Direct3D 10/11 API для Gallium3D драйверов, но не сыскал популярности среди разработчиков.

Коммит:

http://cgit.freedesktop.org/mesa/mesa/commit/?id=44a8e5135470fa51ae36b304f3c5...

В списке рассылке появился набор патчей с поддержкой OSMesa интерфейса для Gallium3D драйверов LLVMpipe и Softpipe.

http://lists.freedesktop.org/archives/mesa-dev/2013-March/036011.html

Если может кто нибудь объяснить что такое OSMesa буду благодарен.

★★★★★

OSMesa

offscreen rendering - http://www.mesa3d.org/osmesa.html
Если кратко, то выводит картинку не на экран, а в область памяти.

был удален код стейтрекера d3d1x, как неиспользуемый и не поддерживаемый.

Мне вот интересно, а на кой фиг его туда вкорячивали. Оно изначально было proof-of-concept без какой-либо перспективы, как и cell.

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

Мне вот интересно, а на кой фиг его туда вкорячивали. Оно изначально было proof-of-concept без какой-либо перспективы, как и cell.

Ну например затем, что в вайне нет поддержки d3d10/11, а реализация в gallium могла бы ускорить его появление и увеличить популярность свободных дров. Но т.к вайн во многом пилится для макинтошников, то популярности идея скрещивания его с Mesa не сыскала.

Вообще было бы интересно посмотреть, если бы кто нибудь бы собрал Wine который мог бы например запустить Battlefield 3 :)

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

без какой-либо перспективы

а что это вообще такое?

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

offscreen rendering

Я это читал но наверно слишком глуп чтобы понят где и зачем это может применяться.

d3d1x

Были амбициозные планы по поддержке его в wine, но разработчиков wine это не особо заинтересовало и все встало. Хотя сам разработчик говорил что у него получилось запустить unigine heaven и dragon age первый. Ну и согласись какие амбиции нативная поддержка вин апи.

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

Да вот это был бы фокус.

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

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

winddos ★★★
()
Последнее исправление: winddos (всего исправлений: 1)
Ответ на: комментарий от Behem0th

Я понял смысл твоего поста, но можен он запустил в режиме DX9?

А вообще амбициозный план, жаль что не взлетело.

Кстати, вопрос на засыпку: что мешает подобную хрень реализовать в блобах?

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

Я понял смысл твоего поста, но можен он запустил в режиме DX9?

Нет, он запускал не в DX9. :)

Кстати, вопрос на засыпку: что мешает подобную хрень реализовать в блобах?

Патенты, и не патенты на квадрат или 2+2, а вполне реальная настоящий патенты добытые M$ в процессе долгого ресерча.
К тому же в блобах на винде вообще нет реализации D3D, там более низкоуровневое API, а конкретно реализация идет от Microsoft :)

winddos ★★★
()
Последнее исправление: winddos (всего исправлений: 1)
Ответ на: комментарий от winddos

в долгосрочной перспективе

Тут я с тобой согласен в краткосрочной перспективе повышение популярности открытых дров и поддержка современных игр было бы хорошим достижением. Но в долгосрочной популяризация МС АПИ для линукс систем кажется ошибочным путем.

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

Из заглавного поста: «d3d1x стейтрекер был добавлен в основную ветку в сентябре 2010 года.» за 2,5 года до выхода стима. Если бы он получил распространение неизвестно еще какой АПИ рекомендовал бы валв.

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

После valve steam не имеет особого смысла уже, всё равно он вынудит всех переписывать рендеры на openGL.

Оно пока по нормальному не вышло, и тестовые девайсы будут только к лету. Поэтому идеи о том, что кого то будут «вынуждать» пока остаются гаданием на кофейной гуще.

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

winddos> вайн во многом пилится для макинтошников

С какой стати? Оно разве не для линукса в первую очередь пилится?

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

с другой стороны на стимбоксах это могло бы стать очень удачным решением..

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

нет оно пилится для всех в том числе для винды, и весьма существенный вклад идёт от тех кому игры на маках пускать...

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

К.О.

2% десктопов - линуксоиды

6% - маководы

Очевидно, что разработчики Wine ориентируются больше на последних.

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

Кстати, в классическом варианте не так было:

— Штурман, приборы?!!

— 700!

— Что 700?!

— А что «приборы»?!

Deleted
()
Ответ на: К.О. от Deleted

Капитан, зачем вы приводите рыночную долю ОС? Интересен процент пользователей Wine на макосе и Линукс.

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

Потому, что другой статистики нет, но при этом wine присутствует на большинстве маковых и линуксовых десктопов.

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

Потому, что другой статистики нет

Значит, статистики нет вообще.

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

но при этом wine присутствует на большинстве маковых

4.2

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

Это я и сам находил и читал, мне не понятны области и способы применения.

Первое, что приходит в голову - compiz и его потомки/конкуренты: можно спокойно поверх картинки накручивать разных видеоэффектов силами видяшки и уже потом это выдавать пользователю (привет оконным анимациям из MacOS).

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

Ну и все в том же духе, когда есть возможность картинку подготовить заранее и выдать её по запросу уже не дергая процессор.

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

Это я и сам находил и читал, мне не понятны области и способы применения.

Второе предложение по ссылке:

That is, the GL_FRONT colorbuffer is actually a buffer in main memory, rather than a window on your display.

Способ применения - выделяем память, создаём конткест, рендерим, результат сохраняется в памяти после SwapBuffers, удаляем контекст, делаем что угодно с полученным изображением в памяти, освобождаем память

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

frame

Спасибо за разъяснения вроде понял. Вопрос а нельзя было с помощью этого реализовать аналог оптимуса? Когда одна видюха рендерит в память а другая просто показывает результат обсчета? Хотя я так понимаю дма-прайм который был разработан на замену оптимуса работает более универсально.

Behem0th ★★★★★
() автор топика
Последнее исправление: Behem0th (всего исправлений: 1)

а ктонить самостоятельно mesa-9.1 компилировал? не могу осилить с питоном проблемы.

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

В арче вроде собирают и норм. Можешь вот посмотреть как:

https://projects.archlinux.org/svntogit/packages.git/tree/trunk/PKGBUILD?h=pa...

Но там собирают там со 2м питоном, может у тебя проблемы из-за 3го?

Behem0th ★★★★★
() автор топика
Последнее исправление: Behem0th (всего исправлений: 1)
Ответ на: комментарий от tides

Видеопамять1->сис.память-Видеопамять2 -> тормоза*9000

Ты не путай медленный рендеринг и быструю и нечастую (сколько там FPS?) переброску одного экрана.

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

Вопрос а нельзя было с помощью этого реализовать аналог оптимуса?

Можно, наверное, но только если на 100% корректно оценить ресурсоёмкость рендеринга и сравнить с доступными системными мощностями в самой программе - что уже ни разу не app-прозрачно, т.е. костыль в чистом виде

frame ★★★
()
23 апреля 2013 г.

Теме ап.

Господа, подскажите а у вас Mesa-9.1.1 жирная? а то скомпилировал тут, так dri драйвер под R600 под 40 мегов, и остальные не отстают.

пока подозревю что не включил --enable-llvm-shared....

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

Неужели никто не знает?

кастую всех пользователей Gentoo, подскажите.

Самое интересное что собранная мной Mesa работает.

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

Да ты прав.

--enable-shared-glapi --with-llvm-shared-libs и размер уменьшится. В основном бинарник раздувает изза llvm.

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

увы видимо не прав я, собрал --with-llvm-shared-libs нету уменьшения, strip при упаковке в пакет куда больше уменьшил :)

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

а llvm собран тоже с shared-libs? у меня так

ldd /usr/lib/dri/radeonsi_dri.so 
        linux-gate.so.1 (0xb76f6000)
        libllvmradeon9.2.0.so => /usr/lib/libllvmradeon9.2.0.so (0xb6bd7000)
        libdrm.so.2 => /usr/lib/libdrm.so.2 (0xb6bc9000)
        libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb6ba0000)
        libpthread.so.0 => /lib/libpthread.so.0 (0xb6b85000)
        libdl.so.2 => /lib/libdl.so.2 (0xb6b7f000)
        libdrm_radeon.so.1 => /usr/lib/libdrm_radeon.so.1 (0xb6b71000)                                                                                                                                                                                                        
        libLLVM-3.3svn.so => /usr/lib/libLLVM-3.3svn.so (0xb5a4b000)                                                                                                                                                                                                          
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb595f000)                                                                                                                                                                                                                
        libm.so.6 => /lib/libm.so.6 (0xb591d000)                                                                                                                                                                                                                              
        libc.so.6 => /lib/libc.so.6 (0xb57a3000)                                                                                                                                                                                                                              
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb5784000)                                                                                                                                                                                                                      
        libelf.so.1 => /usr/lib/libelf.so.1 (0xb576c000)                                                                                                                                                                                                                      
        /lib/ld-linux.so.2 (0xb76f7000)                                                                                                                                                                                                                                       
        libz.so.1 => /lib/libz.so.1 (0xb5755000)                               
radeonsi_dri.so - 5.5M libLLVM-3.3svn.so - 17M libllvmradeon9.2.0.so - 1.9M

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

спасибо за цифры, проверю и сравню.

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

всем спасибо, пересобрал llvm с опцией --enable-shared

пересобрал mesa-9.1.1 с опцией --enable-llvm-shared-libs

получил годные пакеты, заодно и llvm уменьшился.

irton ★★★★★
()

а адрено который на galaxy s plus монет? ведроид ведь мемуары юзает? не? а то блобы токо под печень

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

А если отмаппить часть Видеопамяти2 в оперативку?

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

СоК'и пилят реверс инженерингом причем как говорят удачно даже. На тегру например по заказу нвидии пилят открытый драйвер. За ними я не слежу и тебе придется самому разбираться.

http://blog.emmanueldeloget.com/index.php?post/2013/01/12/Open-source-drivers...

http://blog.emmanueldeloget.com/index.php?post/2013/03/08/The-SoC-GPU-driver-...

а адрено который на galaxy s plus монет

Я не знаю какой конкретно там чип, но в ядре, в либдрм и месе есть открытый драйвер для нескольких моделей. Называется он reedreno.

http://cgit.freedesktop.org/mesa/mesa/commit/?id=6173cc19c45d92ef0b7bc6aa008a...

freedreno: gallium driver for adreno
Currently works on a220. Others in the a2xx family look
pretty similar and should be pretty straightforward to
support with the same driver. The a3xx has a new shader ISA,
and while many registers appear similar, the register
addresses have been completely shuffled around. I am not sure
yet whether it is best to support with the same driver, but
different compiler, or whether it should be split into a
different driver.

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

Бладж уже забыл что это за тема и тоже самое что в топике написал. Короче ищи как каком чипе у тебя мобила и смотри по ссылкам что я привел выше.

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