LINUX.ORG.RU

В продолжение темы про OpenGL в NVIDIA, Catalyst и Mesa

 


0

4

Дополнено: я разобрался. На протяжении всех нулевых годов драйвер NVIDIA устанавливал в систему не только свой OpenGL, но и свои header-ы. Пересборка Wine лично у меня давала кое-какой профит. Но в 2011 они прекратили такую практику, и хотя эти header-ы всё ещё можно установить, они не обновляются с 2011 года. Например там нет функций OpenGL 11. Также в самих хедерах написано: используйте официальные от Khronos Group, там наши NVIDIA-функции тоже есть.

В продолжение темы про OpenGL в NVIDIA, Catalyst и Mesa. Приведу несколько цитат:

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

бывали случаи, когда программист пишет и отлаживает код на NVIDIA, а когда на Catalyst не работает он думает что это баг драйвера, а потом выясняется что вот как раз тут драйвер сработал как надо

«NVIDIA сильна расширениями к OpenGL». И действительно, открываешь NVIDIA X Server Settings, открываешь вкладку информации про OpenGL, и видишь большой столбец расширений GL_NV_*. Вот header-файлы из драйвера NVIDIA и из Mesa, в Meld можно посмотреть насколько сильно они отличаются.

Собственно что хочу сказать. А что если сканпелять систему не с Mesa с её OpenGL, который даже 3.0 с недавних пор, а с libGL.so.1 -> libGL.so.331.67? И заголовочные файлы использовать не из Mesa, а эти? Сумеют ли KDE4, GNOME3, SDL, kdegames, Neverball, ioquake3, gens, fceux, wine:

  1. Успешно скомпилироваться?
  2. Задействовать те самые GL_NV_*, через которые «можно сделать лучше, а иногда гораздо лучше»? Есть ли вероятность что приложения для OpenGL 2.1 внезапно заработают через OpenGL 3/4?

И мне начихать что если я поменяю видеокарту, я не смогу пользоваться DE, ведь я цуко личность, у меня Gentoo уже скомпилирована для последней серии процессоров Intel. Вопрос в том будет ли работать и будет ли работать быстрее?

P.S. «История успеха» 2008 года с Ubuntu, libgl1-nvidia-glx-dev, и Wine из исходников. А ещё среди пользователей NVIDIA (на линуксе это большинство) популярно отключать GLSL в Wine в пользу GL_NV_vertex_program.

★★★★★

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

Каким образом они должны задействовать расширения, о которых им даже не известно?

Нет, не взлетит.

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

точно наркоман какое отношение имеют хедеры к версии опенгл в месе? меса испольхует хедеры от кронос груп и именно в тех хедерах сейчас 4.4 опегл и в них все эти GL_NV_* должны быть хотя бы описаны, иначе это будет не опенг а нвидевское нечто.
А вот те нвидевские в архиве какое то говно мамонта, и именно в них выше 3 гл ничего нет.

Novell-ch ★★★★★
()

Есть ли вероятность что приложения для OpenGL 2.1 внезапно заработают через OpenGL 3/4

facepalm.svgz

Полуркал бы хоть, чем отличается одна версия OpenGL от другой

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

> Полуркал

Чего-чего?

> чем отличается одна версия OpenGL от другой

Кстати да, ищу информацию про то, что именно серьёзно обновилось в третьей версии.

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

Полуркал

http://ru.urbandictionary.com/define.php?term=lurk

что именно серьёзно обновилось в третьей версии

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

wingear ★★★★
()

Задействовать те самые GL_NV_*

Приложение может их задействовать всегда. С помощью glXGetProcAddress() приложение во время исполнения может получить адрес любой поддерживаемой драйвером функции, вне зависимости от того, есть ли в gl.h/glext.h прототипы этих функций. Те самые GL_NV_* это «фичи» драйвера. По сути своей версии OpenGL это наборы фич, наличие которых гарантировано.

через которые «можно сделать лучше, а иногда гораздо лучше»

А переделывать софт автор той статьи будет, да? :) И перечитай статью. Автор точно не про 3D игрушки говорил? Причём здесь KDE и Gnome?

Это ты же проповедовал dlopen для всех библиотек вместо линкования? Вот, возрадуйся, в OpenGL приложения могут проверять (и проверяют) поддерживаемые фичи во время исполнения. Зачастую единственно для того чтобы вывести окошко с сообщением: «У вас нету GL_BLMR_developers_developers_developers_developers, запускаться не буду. LOL».

i-rinat ★★★★★
()

Как обычно. :)) Столько раз упомянута невидия, притом, что тс — амд-фанбой, к чему бы это. //ps советую взять пару уроков у мастера qulinxao

wakuwaku ★★★★
()
Последнее исправление: wakuwaku (всего исправлений: 2)
Ответ на: комментарий от i-rinat

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

И я радуюсь! Хоть где-то это сделано.

Спасибо за ответ. Когда стартуют Quake III, Doom III, Team Fortress 2 и Unigine я вижу длинный список found и not found функций OpenGL. Но почему-то я не верю что если использовать Mesa при компиляции, то можно задействовать фирменные фичи NVIDIA или AMD. Мне кажется, в заголовочных файлах Mesa есть информация далеко не про все GL_NV_*, и если это так то как тогда?

И кроме того опыт 2008 года. TES 3: Morrowind в Wine не показывал шейдеры, если компилировать с Mesa, а если компилировать с nvidia-glx-dev то проблемы с Catalyst. К счастью, это в прошлом. Обязательно покажу: установлю на старый комп и сделаю скриншоты :-)

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

Но почему-то я не верю что если использовать Mesa при компиляции, то можно задействовать фирменные фичи NVIDIA или AMD.

Почитай tutorial'ы по OpenGL, что ли. Уверуешь.

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

Мы ничего не выкидывали с 1992 года (c) OpenGL

Даже OpenGL 1.0 будет работать на новый драйверах.

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

Вроде бы все функции OpenGL, а точнее указатели на них. Программа при каждом запуске запрашивают напрямую у драйвера там и можно отследить, что у драйвера есть, а чего нет. Часто это делает wrangler.

frozenix ★★★
()

А ещё среди пользователей NVIDIA (на линуксе это большинство) популярно отключать GLSL в Wine в пользу GL_NV_vertex_program.

Поподробнее можно? Где про это читать?

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

По ссылке не ищется слово «wine», «отключать GLSL» и «популярно». Давай я тебя тоже на все вопросы по настройке чего либо и практике применения буду отправлять сразу к учебнику по ассемблеру например? А чо, на вопрос не ответил, зато знания и пафос.

Ещё раз. По ключевым словам GLSL, wine, GL_NV_vertex_program ничего полезного не выгуглилось. Выгуглились ссылки на дискуссии к багам, где не ясно. При отключении GLSL в реестре wine GL_NV_vertex_program начинает использоваться автоматически? В дискуссиях однозначного ответа не нашёл. Одни говорят, «да». Другие говорят «нет».

Вот я и спрашиваю - где ты это прочитал? Как это сделать правильно? Чем это чревато? В каких случаях нужно? Ведь если «среди пользователей популярно», значит об этом должно быть широко известно и описано в HOWTO и так далее?

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

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

Мне кажется, в заголовочных файлах Mesa есть информация далеко не про все GL_NV_*

в месе их вообще может не быть. *_NV_* - это расширения (ВНЕЗАПНО) невидии, и для всех остальных опциональны

и если это так то как тогда?

то как что?

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

О чём вообще тема ?

А тема о том что в АTI поняли что стандарт есть стандарт и даже удалили свою версию аппаратной тесселляции для видеокарт Радеон 8000й и 9000й серии из драйвера в 2005 году.
А кое-кто продолжает лезть своими грязными зелёными ручками и всячески портить совместимость.
И тут надо понимать, что, в любом случае, эти прибитые костыли и грязные хаки не дадут такой производительности как MANTLE...

pony
()

мне не нравится, как зенитарчик преподносит инфу, у меня бомбит пукан. зенитарчик, why?

x0r ★★★★★
()
Ответ на: О чём вообще тема ? от pony

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

Надо понимать, что Mantle — до сих пор нечто смутное и концептуальное, тогда как самопальные расширения Nvidia — печальная реальность.

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

Ну так ясно же, что Нвидия давно и прочно засела со своими расширениями и ФызиКом где-то у разработчиков в разделе мозга, который отвечает за «СКАЧАТЬ БИСПЛАТНО БЕЗ СМС ПРАИВОЗДИТЕЛЬНОСТИ ДЛЯ ИГОР». И никто даже слышать не хочет про OpenCL, а ты на свежеиспечённый Mantle наезжаешь за это.

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

Нужно открыть консоль, набрать:

wine regedit

Для Crossover Wine набрать:

/opt/cxoffice/bin/wine --bottle Steam regedit

И открыть HKEY_CURRENT_USER->Software->Wine, создать папку Direct3D, создать ключ UseGLSL, значение disabled. После этого заметно ускорятся некоторые игры, такие как StarCraft II и игры на движке Source. Кроме того, в платный Wine включен патч на многопоточный Direct3D, который сильно ускоряет игры и которого пока нет в бесплатном.

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

> где ты это прочитал?

В Wine AppDB советуется это сделать в описании почти каждой игры, в которую я играю.

> Чем это чревато?

На не-NVIDIA пропадут шейдеры.

> В каких случаях нужно?

Если играешь в Direct3D-игры. Нужно включить и забыть.

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

В Wine AppDB советуется это сделать в описании почти каждой игры, в которую я играю.

Вот теперь понял. Да, GLSL я тоже отключал помнится по рекомендациям AppDB, но с каких то пор всё стало работать без этого танца с бубном. Значит ли что можно не отключать, типа оно само отключается на Nvidia by default? Или я просто тормозов не замечаю и если отключить всё ещё шустрее забегает? Надо попробовать взгромоздить Black Mesa и посмотреть...

Спасибо.

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

в платный Wine включен патч на многопоточный Direct3D

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

PS. Был уверен, что отключение GLSL просто вырубает 2.0 и выше шейдеры и графон превращается в говно, но без тормозов. А оно вона как...

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

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

В playonlinux лежит патченная этим патчем версия Wine, wine-1.7.8-d3d_doublebuffer. А можно и самому пропатчить.

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

В playonlinux лежит патченная этим патчем версия Wine, wine-1.7.8-d3d_doublebuffer. А можно и самому пропатчить.

Спасибо, нашёл, делюсь. Любопытным патч брать тут: https://github.com/stefand/wine/releases

Jameson ★★★★★
()
Ответ на: О чём вообще тема ? от pony

MANTLE

Это то, нестандартизированное, ускоспециализированное, закрытое, вендорлокинное API для графона от AMD? Назад в 90-е? Кто сказал Glide? Уж лучше D3D.

Kosyak ★★★★
()
12 сентября 2015 г.
Ответ на: комментарий от ZenitharChampion

Просто выкинули слишком уж DEPRECATED окаменелое гавно мамонтозавров, тем самым сломав совместимость. С тех пор и идёт отсчет с ОпенГЛа версии 3,0. Хоть теоретически и можно использовать устарелые штучки в режиме совместимости, но они более не обязательны.
Kosyak Все и так знают что Нвиидия лутше всево для игр, а АМДауны всё ждут обещанный свободный драйвер

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

А теперь и 4.5 выкинули, выпустив Vulcan :-) Кстати, мало кто знает что вместо OpenGL 5 вышел OpenGL 2015. Это аналог D3D12. Нужна NVIDIA GTX 6xx и новее, и драйвер 355.00.05.

ZenitharChampion ★★★★★
() автор топика

Народ, кто шарит в месе и в амд?

Есть коммит, в котором запилине поддержка фп64 для 3х (трёх) чипов с фразой «[other] don't do GL4 anyway». Я вот этот момент с «не может в 4» ННП. Что, всякие там NI правда не могут в OGL 4? Даже на каталисте? Даже на винде? 😱

cast Novell-ch

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

Ну вот я вижу в твоей табличке, что всё что на TeraScale2 умеет в OpenGL 4.4...

Меня что удивило – для GCN fp64 уже было запилено, в этом коммите запилили для Cypress/Cayman/Aruba обойдя стороной (например) Turks, который относится к тому же семейству...

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

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

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

Гентушник.
ZenitharChampion

Нуу. Если ты гентушник, то чур, тогда я сишник-лфсщик, со скиллами оракла.

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

Northern Islands смогут в OpenGL 4 в Линуксе, как только в Mesa r600 добавят 4 недостающих расширения (см. MesaMatrix).

Поправьте, если я ошибаюсь.

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

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

подешевле

Make sence. Спасибо, как-то не подумал...

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

Northern Islands смогут в OpenGL 4 в Линуксе, как только в Mesa r600 добавят 4 недостающих расширения (см. MesaMatrix).
Поправьте, если я ошибаюсь.

Да не, всё верно, вопрос был почему на одних картах NI одно из расширений запилено, а на других (тоже NI) — нет.

Stil ★★★★★
()
15 ноября 2015 г.
Ответ на: комментарий от Deleted

Это оказалось очень просто. Когда буду дома, я тебе кину ебилд-пустышку, в нём вместо месы - одни лишь файлы /usr/include/GL.

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

https://yadi.sk/d/4LgHGYl0kUC3k Файл headers.tar.gz.Положи его в /usr/portage/distfiles

Файл /usr/local/portage/media-libs/mesa/mesa-15.0.ebuild:

# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

DESCRIPTION="Steam client"
SRC_URI="http://zog.org/pukan/legacy/headers.tar.gz"

LICENSE="EULA"
SLOT="0"
KEYWORDS="x86 amd64"
IUSE="egl gles1 gles2 nptl"

src_install()
{
	tar -xvzf ${WORKDIR}/headers.tar.gz -C ${D}
}

Теперь eselect-opengl и eselect-mesa имеют выбор только из одной реализации OpenGL! И теперь симлинк ведёт не на Месу, а на NVIDIA. Проверь на всякий случай вручную, и header-ы тоже.

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

Как устанавливать систему с нуля?

xorg-server хочет Mesa, а NVIDIA хочет иксы. Как решить дилемму? Пропиши в /etc/portage/package.use x11-base/xorg-server minimal. Иксы установятся, драйввер NVIDIA тоже установится! Теперь удали USE-флаг minimal, но исправь ebuild, чтобы не было ошибки при сборке glx (драйвер NVIDIA устанавливает свой). Исправь строки configure, чтобы было так: $(use_disable nptl glx-tls) и --disable-glx. Ебилд сохрани в локальный оверлей и подпиши. Умеешь, я надеюсь?

Вроде больше ничто не надо править. VLC с header-ами NVIDIA не собирался без одной правки, но я тебе положил хедеры Khronos Group.

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

ok, попробую.
пересобрал Месу, что eselect-mesa удалилась.

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