LINUX.ORG.RU

NVIDIA на пути к унификации подсистемы 3D-графики в GNU/Linux

 , ,


0

2

28 августа Brian Nguyen, инженер компании NVIDIA, представил в списке рассылки freedesktop.org libglvnd — средство для разделения различных реализаций OpenGL в среде GNU/Linux. Напомню, что в настоящий момент стандартным интерфейсом OpenGL является файл libGL.so.1, который, как правило, является ссылкой на ту или иную библиотеку, предоставляющую функции OpenGL, в зависимости от используемой реализации: Mesa, проприетарные драйверы NVIDIA и AMD и т.д.. Данный подход осложняет использование нескольких драйверов на одной машине,— в частности, на системах с гибридной графикой.

Опубликованный Brian Nguyen инструментарий представляет собой программный диспетчер, осуществляющий перенаправление команд от 3D-приложения к той или иной реализации OpenGL, тем самым позволяя нескольким видео-драйверам сосуществовать, не мешая работе друг друга.

страница на GitHub'е

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

★★★★★

Проверено: JB ()
Последнее исправление: shimon (всего исправлений: 4)
Ответ на: комментарий от Behem0th

А, ну да... Что это я не о том-то?..

Кстати, я не в курсе истории про r300 и r600. Они сразу на Gallium'е писались или изначально на классике, а потом их спортировали?

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

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

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

ати-проблемы

Не думаю что это амд-проблемы. Ати давно не выпускаются.

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

какие-то невидие-проблемы. у радеонов 100 лет как AMD_pinned_memory есть, им эти танцы не нужны

ckotinko ☆☆☆
()
Ответ на: комментарий от CYB3R

Чтобы картинка десктопа обрабатывалась Intel'ом, а содержимое окна с игрой — Nvidia'ей, и чтобы при этом весь вывод шёл через Intel.

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

carasin> Нежелание использовать Mesa'у как раз понятно. У них единая кодовая база под все поддерживаемые платформы. Ну не за чем им использовать Mesa'у для драйверов именно под GNU/Linux (да и под остальные UNIX-like тоже).

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

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

Если АТИпроблемы, то пора выкинуть на помойку его Radeon 9600 и купить нормальную AMD Radeon HD 7870. На радеонах 4xxx и выше проблем нет в принципе. Вернее - их не больше, чем у невидии. Для остальных открытый драйвер уже хорош.

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

При наличии Mesa с Gallium 3D оно нафиг не нужно.

Quasar ★★★★★
()

можно будет вместо GLX API использовать libglvnd? значит ли это, что можно будет в xcb использовать gl_ без привязок к xlib?

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

Это очень интересно! Отличный комментарий. Ты есть на NVIDIA-форуме? Если есть, спроси лучше там, а потом расскажи.

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

RedEyedMan>> Возможно, но знакомый уж точно не лжет, у него постоянные ати-проблемы.

trueshell> Не думаю что это амд-проблемы. Ати давно не выпускаются.

Quasar> Если АТИпроблемы, то пора выкинуть на помойку его Radeon 9600 и купить нормальную AMD Radeon HD 7870. На радеонах 4xxx и выше проблем нет в принципе. Вернее - их не больше, чем у невидии. Для остальных открытый драйвер уже хорош.

4xxx и 5xxx это ещё ATi.

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

carasin> А как X'ы могут повлиять на выбор реализации OpenGL в системе? 0_o

Да ты даже не знаешь, что такое иксы, а такой бред пишешь.

carasin> Wayland — его можно назвать «переписанными X'ами».

Опять бред.

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

Direct X пока нет. Зато Direct 3D линуксовый уже есть.

Quasar ★★★★★
()

Поправьте меня, пожалуйста, но в чем отличие от того же альтарнативс?

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

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

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

ZenitharChampion> 4xxx и 5xxx это ещё ATi.

Вообще-то начиная с 2xxx - уже AMD. Именно во время X1800 AMD купила ATi, а потом уже поменяла бренд с Radeon на Radeon HD.

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

Polugnom> Очень смешная шутка.

Какая такая шутка? Официальных драйверов для ноутбучных видеокарт нет у невидии. Даже одно время официальный ответ был: «нет и не будет». А ноутбуки нынче - немаленькая часть рынка ПК. Итого выбирать необходимо между Intel и AMD в плане графики. В случае с невидией выходит так, что железо просто несовместимо и приходится пользоваться костылями, которые не дают стопроцентных гарантий работоспособности.

Quasar ★★★★★
()

NVIDIA на пути к уничтожению подсистемы 3D-графики в GNU/Linux

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

Нет официальных драйверов для ноутбуков только из-за того что их драйверы не разделяются на «для ноутбуков» и остальные. Вот посмотри: http://www.nvidia.com/Download/index.aspx?lang=en-us У остальных, кстати, тоже.

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

Что мешало сделать малюсенькую абстракцию, чтобы можно было драйвер на лету переключать?

«Вы тут самые умные? Это вам кто-нибудь сказал, или вы сами решили?»

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

В идеале у тебя должен быть патчсет, реализующий это «маленькое» изменение. Потом тебе придётся продумать, что случится, если не все проекты разом накатят твои изменения, продумать различные fallback'и. Потом придётся перекопать код, потому что выяснится, что с первого раза ты налажал. Потом ещё раз перекопать, потому что кое-чего не учёл. Потом ещё, и ещё, и ещё.

i-rinat ★★★★★
()
Ответ на: комментарий от daemonpnz

Так чего именно я по твоему не знаю то?

SjZ ★★★★★
()
Ответ на: комментарий от i-rinat

минимальным решением видится такой «патчсет»:

Библиотеки gl.so.1 все символы gl**** делают weak

using ту фичу, что большую часть функций gl выдергивают через glxGetProcAddress. Эта функция патчится так, чтоб определяла какой сейчас в моде контекст и наводила dlsym на соотв. библиотеку.

Плюс создаются структуры с адресами всех функций на каждую библиотеку+одна кидающая ошибки и зиги. Создаются заглушки на все функции с кодом

;entry point
mov eax,fs:current_gl_context+fixed_offset]
mov eax, [eax-TLS_INDEX]
jmp [eax+FUNC_INDEX]
делается скриптом.

но я уверен что эти корпоративные креаклы нафигачили ООПа внутрь

ckotinko ☆☆☆
()
Ответ на: комментарий от RedEyedMan

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

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

using ту фичу, что большую часть функций gl выдергивают через glxGetProcAddress

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

но я уверен что эти корпоративные креаклы нафигачили ООПа внутрь

Так ты слона не продашь.

Создаются заглушки на все функции с кодом

Незачем пихать грязные хаки туда, где без них можно обойтись. Пусть лучше это будет нелюбимый тобой ООП. В нём хотя бы разобраться можно.

i-rinat ★★★★★
()
Ответ на: комментарий от ckotinko

непонятно зачем это было предлагать, взяли бы и запилили

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

i-rinat ★★★★★
()
Ответ на: комментарий от RedEyedMan

Уж скорее в NVIDIA сидят адекватные чуваки. На AMD палец боюсь не окажет влияния. Драйверы как были говно (fglrx) так и остались

«На AMD палец боюсь не окажет влияния. Драйверы как были говно (fglrx) так и остались» - Сказал пользователь Нвидии... Единственная проблема с драйверами под Линукс у меня была когда использовал GT240 несколько лет назад.С тех пор использую онли АМД и проблем не имею(оговорюсь сразу - игры практически не играю, иногда детишкам включал SuperTuxkart, всё норм), OpenCL работает нормально. Всё работает как в Calculate Linux так и Ubuntu (Gnome 2.32/МАТЕ в обоих случаях)...

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

Вообще-то начиная с 2xxx - уже AMD. Именно во время X1800 AMD купила ATi, а потом уже поменяла бренд с Radeon на Radeon HD.

Какая разница когда именно произошла покупка ? Или в момент покупки все инженерные разработки АТИ были выброшены и срочно внедрены разработки АМД ?

PS: Владелец HD5650 на которой таки написано - ATI

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

Bumblebee делает это не через специально предназначенные для этого ядрёные интерфейсы, а в юзер-спейсе.

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

Проблема с OpenGL со стороны правок от невидии в их же драйвере решилась бы.

Если бы они сделали так, то было бы то же libglvnd, только в составе блоба. А тут товарищ представил штуку, которую можно использовать вне зависимости от блоба nvidia. Например, с блобом AMD или ещё каким PSB.

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

Ну дык с R319 запилили обращение к интерфейсам ядра, которые как раз и являются абстракцией над DMA_BUF. Всё :)

carasin ★★★★★
() автор топика
Ответ на: комментарий от no-steam

Оно перестало глючить?

Это же квазар, у него компетентность на уровне /dev/urandom

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

Да не через модуль ядра, а через DMA_BUF. В настоящий момент блоб умеет использовать это API лишь для отрисовки полностью всего выводимого на дисплей изображения (через GPU Intel, для которого нужно использовать не X'овый драйвер, а драйвер modesetting), но не может с помощью него обрабатывать конкретное приложение. Т.е. не умеет offloading в том понимании, в котором принято говорить об Optimus'е.

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

Обалдеть. Какие-то проприетарщики реализовали фичу, которая по идее должна была бы быть сделана самим коммунити уже сто лет назад, но не была...

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

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