LINUX.ORG.RU

Поддержка Direct3D 9 добавлена в Gallium3D

 , , ,


4

4

Представлена рабочая реализация трекера состояний Direct3D 9 для Linux, реализованная через Gallium3D, что даёт возможность прямого обращения к драйверам, без прослойки, транслирующей вызовы Direct3D в вызовы OpenGL. Благодаря этому удалось достигнуть боле чем двухкратного увеличения FPS в таких играх, как Skyrim, Civilization 5, Anno 1404 и Starcraft 2.

В отличие от ранее существовавших решений, данная реализация является полностью работоспособной и ориентированной на 9-ую версию API.

Для работы данного прототипа требуется изменённая версия Wine (инструкции можно найти здесь).

Разработчик верит, что эта реализация будет жизнеспособной, так как активно поддерживается, написана на языке C (а не C++). Также отмечается, что Gallium3D в его нынешнем состоянии гораздо более пригоден для реализации Direct3D 9, чем последующих версий.

>>> Подробности

★★★★★

Проверено: JB ()

Благодаря этому удалось достигнуть боле чем двухкратного увеличения FPS в таких играх, как Skyrim

Интересно, винду по FPS оно уже уделало?

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

Интересно, винду по FPS оно уже уделало?

Зависит от того, у тебя SSD или HDD.
В играх Bethesda безобразно реализован стриминг контента, из за чего в винде на заполненной NTFS игра работает значительно хуже. В Этом случае линукс уделывает винду по плавности легко.

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

ну, по скорости загрузки игры - ага, полный лол.
А может и не безобразно, может игра, как вменяемая игра, полагается на планировщик io ядра, которого в винде чуть более чем полностью нет. Но, не думаю, что это скажется на КВС, более, чем на 1-2.

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

стриминг может и в процессе игры идти для подрузки геометрии и текстур

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

стриминг может и в процессе игры идти для подрузки геометрии и текстур

Медленные загрузочные экраны по сути раздражают намного сильнее, чем более низкий FPS. Скайрим помещенный в оперативку загружает локации почти моментально, на винде тоже.

winddos ★★★ ()

Было бы хорошо, если бы кто-то запилил PPA под бубунту, или просто инструкцию написал. А то у меня при создании окружения для сборки на 64-битах все ломается.

winddos ★★★ ()

/me перешел в ожидание ебилда

punya ★★ ()

Про «существовавшие ранее решения» тоже много чего обещали

buddhist ★★★★★ ()

костыль через костыль для корректной работы костылей.

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

А у них всего 19фпс...

Вероятно у мишы в тестах включено сглаживание.

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

2. radeosi как можно попробовать на моей 7750?

Можно пробовать, но:
Игры на Source не работают т.к нет s3tc
Wine плохо работает. (точнее direct3d игры, opengl работает)
Ungine тоже не работает.
Если запускать более простые вещи то... жить можно.

Видеокарта после загрузки работает на пониженной частоте/напряжении надо переключить иначе будет очень медленно. Если ядро 3.11 то наверное само переключаться будет если что-то туда параметром передать.

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

нет s3tc

гонево

Wine плохо работает. (точнее direct3d игры, opengl работает)

Как ни странно, но таже дота в вине работает плавнее чем с блобом.

А в общем да, выглядит намного хуже r600g.

Behem0th ★★★★★ ()

короче собрал, вроде все пашет, сошки подлменились
0 KB 0 KB 0 KB 4 KB 4 KB 4 KB 0 KB 0 KB 0 KB
7da02000-7da10000 r-xp 56 KB 8 KB 8 KB 0 KB 0 KB 8 KB 0 KB 8 KB 0 KB 0 KB 0 KB 0 KB /var/tmp/build-root/openSUSE_12.3-i586/tmp/wine-d3dadapter9-wip/wine-d3dadapter9-wip/dlls/d3d9/d3d9.dll.so
7da10000-7da11000 rw-p 4 KB 4 KB 4 KB 0 KB 0 KB 0 KB 4 KB 4 KB 4 KB 0 KB 0 KB 0 KB
7da11000-7da3f000 r-xp 184 KB 128 KB 128 KB 0 KB 0 KB 128 KB 0 KB 128 KB 0 KB 0 KB 0 KB 0 KB /var/tmp/build-root/openSUSE_12.3-i586/tmp/wine-d3dadapter9-wip/wine-d3dadapter9-wip/dlls/d3d9/d3d9.dll.so
7da3f000-7da40000 r--p 4 KB 4 KB 4 KB 0 KB 0 KB 0 KB 4 KB 4 KB 4 KB 0 KB 0 KB 0 KB /var/tmp/build-root/openSUSE_12.3-i586/tmp/wine-d3dadapter9-wip/wine-d3dadapter9-wip/dlls/d3d9/d3d9.dll.so
7da40000-7da41000 rwxp 4 KB 4 KB 4 KB 0 KB 0 KB 0 KB 4 KB 4 KB 4 KB 0 KB 0 KB 0 KB /var/tmp/build-root/openSUSE_12.3-i586/tmp/wine-d3dadapter9-wip/wine-d3dadapter9-wip/dlls/d3d9/d3d9.dll.so
7da41000-7da43000 rw-p 8 KB 8 KB 8 KB 0 KB 0 KB 4 KB 4 KB 8 KB 4 KB 0 KB 0 KB 0 KB /var/tmp/build-root/openSUSE_12.3-i586/tmp/wine-d3dadapter9-wip/wine-d3dadapter9-wip/dlls/d3d9/d3d9.dll.so

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

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

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

Т.е совсем-совсем никак?
Надо бы как то проверить использует ли вайн вообще этот стейт трекер.

winddos ★★★ ()

эта реализация будет жизнеспособной, так как ... написана на языке C (а не C++)

Очень толсто

annulen ★★★★★ ()

что даёт возможность прямого обращения к драйверам без прослойки, транслирующей вызовы Direct3D в вызовы OpenGL

Если я правильно распарсил эту фразу, имеются в виду драйвера, которые самостоятельно поддерживают Direct3D... виндовые, что ли?

Или я всё же что-то неправильно понял?

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

Теперь получается, что нативные дрова сами как бы поддерживают Direct3D.

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

Или я всё же что-то неправильно понял?

Постараюсь привести несколько простых примеров. Я не спец в том как работает винда, поэтому поправьте если я не где то не прав.

Как (упрощенно) работает игра использующая Direct3D в винде:
Игра -> Direct3D API (реализуется Microsoft) -> DDI (драйвер, реализуется вендором) -> Железо
Как она работает в вайне сейчас:
Игра -> Direct3D API (оригинальные плюс вайновские DLL) -> Direct3D to OpenGL translator (реализуется вайном) -> реализация OpenGL (Mesa) -> OpenGL Gallium3D state tracker (я понимаю что это называется иначе) -> Железо
Как она будет работать после сабжевой модификации:
Игра -> Direct3D API -> Direct3D Gallium3D state tracker -> железо.

Это конечно с технической точки зрения нифига не корректно (ибо дофига упущений), но суть должна быть ясна. Т.е Gallium не реализует API Direct3D (этим занимается микс вайновских DLL и оригинальной реализации Microsoft), а выполняет роль DDI на винде. При этом пилить с ноля почти ничего не надо, т.к почти весь нужный Direct3D функционал уже реализован для OpenGL.

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

Собственно решения насчет стоит принимать или нет в апстрим, еще нет.

Старая новость, но: http://www.phoronix.com/scan.php?page=news_item&px=ODYyNw

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

X-Pilot ★★★★★ ()
Ответ на: комментарий от Kompilainenn

АМД блоб 13.4 не умеет дружить с ядром 3.11?

Конечно нет, он же вышел полтора месяца назад, а первый релиз-кандидат 3.11 на этой неделе. Для беты 13.6 сторонние патчи для сборки на 3.11 есть.

RussianNeuroMancer ★★★★★ ()

Интересно кончено, но нужно ли это?

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

В PS3 была кучка маленьких огрызков из NetBSD

А в остальных?

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

_все_ остальные на юниксообразных

и там не было линуска?

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

Шутки шутками, но всё серьёзно. :) Ибо dosbox эмулитрует не только процессор, но и игровое железо, включая звуковые карты, видеокарту. В том же svn есть эмулятор voodoo.

Годнота, походу, этот ваш dosbox, давно пощупать хочу. Он еще не научился перебрасывать досовскую печать на LPT-принтер на нормальный принтер под онтопиком?

Ну, у нас разные представления о старых. :)

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

pihter ★★★ ()

Шикарно, теперь можно будет нормально поигратьсо =)

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

Поставь уже либу libtxc-dxtn и прекрати вводить народ в заблуждение.

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

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

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

У тебя работают?
Какая видеокарта? Версия мезы, ядра, xorg-video-ati?
И параметры сборки мезы.

onon ★★★ ()
Ответ на: комментарий от X-Pilot

Не совсем понимаю тебя. Ты дал сылку на новость 3х летней давности о проекте который был добавлен в мастер ветку месы, просуществовал там больше 2х лет и был затем удален.

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

Ну чувак, для свободных дров не существует релизной месы. Только гит - только хардкор! У них релизы раз в пол года, как я уже не раз говорил - это пиздецки долго. Но вроде они одумались и обсуждали решение изменить цикл на 3х месячный.

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

Игры на Source не работают т.к нет s3tc

Возможно, вопрос дурацкий, но где можно почитать подробности про проблемы с S3TC в открытых/свободных драйверах?

ЕМНИП, там что-то связанное с запатентованностью этого алгоритма, но есть одно «но»: в рассчитанных на использование S3TC (DXTn) приложениях текстуры в 99.9% случаев хранятся уже пожатыми (обычно в контейнере DDS), сам формат заточен на декодирование средствами GPU непосредственно при семплинге текстур, так что драйверу надо только каким-либо способом перекинуть данные от приложения в видеопамять, ничего более с ними не делая. То есть, грубо говоря, вся работа драйвера сводится к определению, поддерживается ли S3TC видеокартой, и memcpy(). И вот я всё никак не могу понять, где именно тут мешает патент?

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

Нужно 3.10 ядро и меса из гита

behem0th@ArchLinux ~ $ glxinfo | grep Op
OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD TAHITI
OpenGL version string: 2.1 Mesa 9.2.0-devel (git-b616d01)
OpenGL shading language version string: 1.30
OpenGL extensions:
behem0th@ArchLinux ~ $ glxinfo | grep s3tc
    GL_EXT_texture_compression_s3tc, GL_EXT_texture_cube_map, 
    GL_OES_read_format, GL_S3_s3tc, GL_SGIS_generate_mipmap, 
behem0th@ArchLinux ~ $ glxinfo | grep s3
Behem0th ★★★★★ ()
Ответ на: комментарий от anonymous

А я еще помню те времена, когда словосочетание «директикс для линукса» могло считаться шуткой.

А оно было и не нужно. Тукс и так летал.

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

Он еще не научился перебрасывать досовскую печать на LPT-принтер на нормальный принтер под онтопиком?

В сборках svn поддержка принтерного порта есть, но куда он подключается за пределами dosbox я не смотрел.

я просто думал что в контексте сабжа будет понятно

Если честно, я просто забыл, что в топике direct3d 9 обсуждается. Понятно, что win9x не вписывается, там 8a максимум был.

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

Windows 98, Windows 98 Second Edition

Это ошибочно указано. У них такое бывает после обновлений сайта. На самом деле девятка устанавливалась минимум на Win2k.

atrus ★★★★★ ()

Нативные игры под линукс использующие direct3d

Когда ждать нативные игры под linux (не требующие wine для своей работы), что будут использовать direct3d? Т.е. когда возьмут исходники какой-то виндовой игры под direct3d и таким образом допилят её под linux без перевода под OpenGL? Ваши ставки...

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

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

на самом деле, много кто.

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

Я что-то пропустил, и интел работает через галлиум?

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