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)
Ответ на: комментарий от geekless

Линковка не обязывает к наследованию лицензии (а вот если для сборки распространяемой программы нужны исходники [или их часть] GPL'нутого софта, тогда да). Это раз.

Во-вторых, интерфейс PRIME, реализующий надстройку над DMA_BUF, не обозначен как EXPORT_SYMBOL_GPL(). Собственно, для этого оно и задумывалось, ибо API DMA_BUF такую «метку» имеет.

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

Да всё просто. PRIME — это часть ядра. Её могут использовать блобы.

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

Это не хак а прозрачное перенаправление.

Перенаправит оно точно туда откуда взялся контекст.

Getprocaddress действительно кривой на линупсе. О_о. Но с другой стороны там и одно приложение онда видяха. Перескок невозможен

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

Всё еще проще. Если приложение запускается на заранее выбранном gpu, просто тупо через ld_preload захватываем dlopen. И всё

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

А потом кто-то ставит свою LD_PRELOAD и всё ломается. Проще уж wrapper libGL.so.1 сделать.

i-rinat ★★★★★
()

на одном из Накопителей — у меня установлен GNU/Linux — и к нему драйвера одновременно и для Intel_HD и для AMD.

при этом

File: ‘/usr/lib/libGL.so.1’ -> ‘mesa-libGL.so.1.2.0’

Накопитель этот я загружаю (поочереди) на различных компьютерх (с видеокарточкой Intel_HD или видеокарточкой AMD)

и в обоих случаях OpenGL работает как надо. конфликтов ни каких нет.

а решение которое предлагает Nvidia — похоже на пропретарный костыль (для обеспечения работы проприетарного блоба).

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

install libglvnd

$ rm -rf /usr/

P/S вспомнился bumblebee =)

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

а решение которое предлагает Nvidia — похоже на пропретарный костыль (для обеспечения работы проприетарного блоба).

Для обеспечения работы всех блобов.

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

Пока юзеру мало чего. Сейчас ситуация с поддержкой гибридной графики в GNU/Linux (имеется в виду, прежде всего, блоб, но и к свободнм драйверам это также в какой-то мере относится) складывается «по кирпичику». Нужные интерфейсы ядра появились, поддержку RandR в блобе запилили, необходимые изменения в X'ы внесены (Wayland — дык тот вообще должен уметь всё это хозяйство «искаропки»), в nvidia-settings сделали заготовки профилей для отдельных приложений, сейчас вот этот враппер придумали. Касательно Nvidia осталось только запилить offloading — и Optimus должен заработать. Вроде ничего не забыл =D

Про блоб AMD ничего не скажу.

// А Bumblebee пока всё ещё нужен. Но по собственному опыту использования конфигурации со «шмелём» скажу, что это ужаснейший костыль, который нужно выбросить на свалку истории. Но пока без него никак, да.

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

Зато половину своего шкворца он нафлудил именно этой фразой ;)

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

На новых картах он нормально

работает? Читал, что там дела не очень и
бенчмарки обычно это доказывают.
там производительность неплохая, просто кое кто не умеет их проводить.
Там стабильность и возможности оставляли желать лучшего.

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

в линаксе?

Привет, меня зовут Линус Торвальдс, и я произношу Linux как «линукс».

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

Полностью нет, но часть ошибок уже поправили. Осталось еще куча + скорость бы поднять.

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

Intel у тебя работает с OpenGL 1.2, AMD тоже работает с OpenGL 1.2, хотя должен работать с OpenGL 3+ - и это называется «обоих случаях OpenGL работает как надо»? Ну и нахрен тогда тебе современная видеокарта, которая работает в режиме функционала 1998 года? Мне это напоминает пользователе Windows 7/8, которые сидят с WDDM драйверами (OpenGL 1.1) и удивляются - «а чего это OpenGL такое говно - работает медленно».

P.S. Я надеюсь, что правильно понял смысл цифирек в версии либы.

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

Еще лучше - сидеть на современном железе, которое умеет только то, что было у проприетарщиков еще в прошлом веке - это охрененный «прогресс».

alex-w ★★★★★
()
Ответ на: комментарий от alex-w
$ file ./libGL.so.1

./libGL.so.1: symbolic link to `libGL.so.1.2.0'


$ glxinfo64 | grep OpenGL

OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Sandybridge Mobile 
OpenGL core profile version string: 3.1 (Core Profile) Mesa 9.2.0-devel
OpenGL core profile shading language version string: 1.40
OpenGL core profile context flags: (none)
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 9.2.0-devel
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:


$ DRI_PRIME=1 glxinfo64 | grep OpenGL

OpenGL vendor string: X.Org
OpenGL renderer string: Gallium 0.4 on AMD TURKS
OpenGL core profile version string: 3.1 (Core Profile) Mesa 9.2.0-devel
OpenGL core profile shading language version string: 1.40
OpenGL core profile context flags: (none)
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 9.2.0-devel
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:

Я надеюсь, что правильно понял смысл цифирек в версии либы.

Нет, не правильно.

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

Ну и нахрен тогда тебе современная видеокарта, которая работает в режиме функционала 1998 года?

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

...брать старую бывшую в употреблении видеокарту — думаю мало у кого есть желание :-D

# P.S.: и кстате до этого у меня был компьютер из примерно 2000`ых годов. (с соответствующей видеокартой). и я могу сказать что работало это железо НУ ОЧЕНЬ отвратительно и медленно. так что не надо говорить о том что сейчас якобы прогресс застрял на уровне как раньше :-)

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

Угу согласен, если примут и реализуют - будет хороСЁЁЁ , но пока что мне приходится извращаться что бы запустить одновременно на машине ATI И NV.

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

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

Одна из важнейших фишек оптимуса (и что-то там у амд) как раз в этом кроется.

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

Он говорит про свободные драйверы Mesa. Так что при таком раскладе всё будет нормально. Только что проверил сам: запустил glxgears на Intel'е, а следом — ещё и на Radeon'е через DRI_PRIME=1. ВР.

А сабж нужен именно для блобов.

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

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

Похоже с DRI1 и DRI2 было именно так (если судить по докладу о DRI3000).

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

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

Зачем community было тратить время на реализацию совместимости с проприетарными реализациями OpenGL API? Им будто бы больше делать нечего.
А со свободными драйверами такой проблемы изначально нет - интеграшка и дискретка на гибридных платформах используют одну реализацию OpenGL - Mesa.

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

И перенос на лету окна с локального дисплея на удаленный тоже никому не нужен.

Ну, рассказывайте!

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

Похоже с DRI1 и DRI2 было именно так

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

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

А разве не во всём всегда так?

(Глядя на свою аватарку.) Наверное во всём, да.

RussianNeuroMancer ★★★★★
()

Комментарий в стили убунтохейтеров

Что за новость! Опять обещания! Подумаешь на пути, вот когда пройдут по этому пути, тогда и сойдет за мини-новость. Информационный хаось!! Мой несчастный зад)

special-k ★★★★
()
Последнее исправление: special-k (всего исправлений: 1)
Ответ на: Комментарий в стили убунтохейтеров от special-k

Ну тут есть одно ключевое отличие: код уже есть и он работает, а теперь представлен широкой общественности. Ах да, чтобы коммитить в прект, не нужно подписывать соглашение об отчуждении прав на код :)

В общем, вот комментарий в стиле убунтохейтера: libglvnd — это много лучше всего написанного в canonical, взятого вместе =D

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

Комментарий в стили убунтохейтеров

А где же оно работает, на каких дистрибутивах? Надо же чтоб на всех, как поделки федоры! И ведь же тайком, ни с кем не советовавшись! Адский ад! Мой несчастный зад!

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

Почему? В винде подобный подход применяется лет 20 уже.

Это нивелируется ничтожным качеством и костыльностью вантуза. А иначе бы я 13 лет не обходился без него, так то

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

Это нивелируется ничтожным качеством и костыльностью вантуза.

Смешно это читать в подобном треде.

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

Ну не кормите же :)

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

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

Ах да, чтобы коммитить в прект, не нужно подписывать соглашение об отчуждении прав на код :)

Вы же в курсе, что у FSF и Mozilla такие же соглашения, да?

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

Уже тыщу раз говорили, что KMS в блобе нет не из-за лени/неосиляторства нвидиевских разработчиков, а потому что соответствующее API ядро даëт только GPL-ным модулям.

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

Ну тут, кстати, не всё так однозначно.

После знаменитого «пальца Торвальдса» кто-то из Nvidia'и (гуглить, кто конкретно, в лом) обращался к сообществу с вопросом о том, как Nvidia может быть более полезна сообществу GNU/Linux. Одним из предложений от сообщества было создание общего модуля ядра для блоба и nouveau. ЕМНИП, комментариев по этому предложению от Nvidia не поступило.

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

После знаменитого «пальца Торвальдса»

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

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