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

К слову, не оправдываю ни этих, ни тех.

Зря, соглашение таки нужно. Вот не подписывали разработчики Linux такие соглашение, в результате имеем GPLv2-only ядро без возможности его перелицензировать, что в итоге дало нам тивоизированные железки на Linux.

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

Я имел в виду не причинно-следственные связи, а временную точку. Сам никогда не считал, что «палец» к чему-либо привёл ;)

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

В данном случае причина не в этом. Столлман давно уже говорил, что изначально нужно было лицензировать под GPL2+, а не под GPL2-only.

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

Естественно, об этом я догадывался :)

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

Так я же и говорю: нет такого, чтобы взять существующую игру и без вайна запустить чтобы она работала.

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

Так я же и говорю: нет такого, чтобы взять существующую игру и без вайна запустить чтобы она работала.

Короче, так. Обычно Wine транслирует вызовы Direct3D в комбинацию вызовов OpenGL, которые в Mesa транслируются в набор команд для GPU. «Nine» state tracker позволяет убрать одно из звеньев цепи и повысить производительность. Wine больше не надо заниматься эмуляцией Direct3D, поэтому он ещё и проще становится. Меньше кода, меньше багов, больше фич. Так понятно?

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

eselect opengl на что?

Чтобы уползать под шконку. Попробуй им воспользоваться не закрывая 3d приложение.

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

А libglvnd поддерживает горячее переключение? То есть, можно будет запущенную игру переключить на другой движок даже без возникновения ошибок? Как-то не верится. Скорее оно посыпется с сегвом, или хотябы картинка пропадёт насовсем.

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

Я так понимаю, что в пределах одного приложения переключения происходить не должно. Другое дело, что для различных приложений должно позволять одновременно использовать различные реализации OpenGL. Собственно, в Optimus'ах так и работает.

Ну или как сейчас в свободных драйверах: можно запустить одно приложение, к примеру, на Intel'е (обычный запуск без дополнительных параметров), а другое,— скажем, на дискретке Radeon (с опцией DRI_PRIME=%{output_number} перед командой запуска).

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

из предложений от сообщества было создание общего модуля ядра для блоба и nouveau

А какой от него был бы профит? Для того же KMS этот модуль должен быть под GPL, что сделало бы его непригодным для использования с блобом (не забываем, что GPL запрещает линковку с кодом, распространяемым под несовместимыми с GPL лицензиями, а исключение прописано в лицензии на код самого ядра и потому на модули не распространяется), а без него толку от унификации никакого (также не забываем, что существенная часть нвидиевского драйвера едина под все платформы, а API/ABI общего модуля весьма рискует оказаться несовместимым с блобом и перепиливать куски имеющегося унифицированного кода под одну-единственную платформу разработчикам нафиг не впëрлось).

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

не забываем, что GPL запрещает линковку с кодом, распространяемым под несовместимыми с GPL лицензиями, а исключение прописано в лицензии на код самого ядра и потому на модули не распространяется

В GPL ничего нет про линковку.

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

Это касается, в основном, юзерспейса. Модули ядра под каждую платформу свои.

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

В GPL ничего нет про линковку.

Есть. Можешь хотя бы последний абзац на http://www.gnu.org/licenses/gpl-2.0.html прочитать. LGPL не просто так, от нефиг делать, придумали, а именно для смягчения ограничения на линковку путëм разрешения на использование кода под LGPL в закрытых продуктах с некоторыми оговорками.

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