2

У меня установлен последний проприетарный драйвер Nvidia, который является nvidia-415 (согласно интерфейсу "Driver Manager"). Некоторые программы жалуются, что у меня нет OpenGL 3.3.

Поэтому я запустил команду для проверки:

$ glxinfo | grep "OpenGL version"
OpenGL version string: 3.0 Mesa 12.0.6
OpenGL core profile version string: 4.3 (Core Profile) Mesa 12.0.6

ОК, похоже, у меня версия 3.0. НО - когда я смотрю на Mesa, он называется "графический стек" и включает в себя драйвер FOSS nvidia и последнюю версию OpenGL.

Также есть "базовая версия профиля", это 4.3. Так я на 4,3 или 3,0?

Так что теперь я в замешательстве. Работает ли проприетарный драйвер Nvidia с Mesa OpenGL? Или драйвер с открытым исходным кодом nouveau работает только с открытым GL Mesa, и мне следует установить не Mesa, проприетарный OpenGL от Nvidia для работы с их проприетарным драйвером?

1 ответ1

3

Я начну с краткого определения API и перейду оттуда, чтобы убедиться, что все базы покрыты. Там также TL; DR ниже.

Обзор API

Во-первых, OpenGL описывает абстрактный, не зависящий от языка API, предназначенный для облегчения легкого доступа к графическим возможностям машины. Это позволяет разработчикам программного обеспечения - например, разработчикам видеоигр - эффективно взаимодействовать с оборудованием на более низком уровне, обеспечивая, среди прочего, скорость, надежность и простоту программирования. Конкретно, если разработчик программного обеспечения хотел бы напрямую общаться с графическим оборудованием, ему нужно было бы писать код на языке ассемблера или других языках аппаратного уровня, которые было бы громоздким и трудоемким для написания. Вместо этого, OpenGL позволяет использовать высокоуровневый язык затенения OpenGL, который намного проще в использовании и может рассматриваться как только шаг "выше", говорящий с аппаратным обеспечением на его собственном языке. Это означает, что, между прочим, звонки на оборудование будут очень быстрыми.

столовая гора

Как уже упоминалось выше, OpenGL является только спецификацией для API. OpenGL предоставляет библиотеку с ее установкой (версию, которую вы видите в выходных данных), но для того, чтобы они работали, она должна быть реализована для данной ОС. Это где Меса входит. Mesa (он же Mesa 3D) является открытым исходным кодом и используется во многих дистрибутивах Linux. Первоначально он был задуман как просто реализация OpenGL, но в наши дни это намного больше. Он также реализует другие спецификации API, такие как OpenCL, и поставляется в комплекте с драйверами оборудования.

Аппаратные драйверы

До сих пор у нас был относительно высокий уровень. Mesa и спецификация OpenGL являются просто посредниками между приложением (или игрой) и аппаратным драйвером для видеокарты, который является более низким уровнем. Здесь у нас есть пара вариантов, и Mesa предоставит один из них в зависимости от производителя графического оборудования и от того, насколько они совместимы с инициативами с открытым исходным кодом. Например, интегрированная графика Intel почти всегда использует Mesa для всего, для реализации OpenGL и для аппаратных драйверов. Intel вносит непосредственный вклад в исходный код Mesa, так что все графическое решение может быть Mesa. Nvidia с другой стороны ...

Nvidia & Nouveau

Nvidia классически упряма, когда дело доходит до работы с сообществом открытого кода, предпочитая разрабатывать свои собственные альтернативы с закрытым исходным кодом. Это упрямство привело к тому, что Линус Торвальдс рассказал о своих двух центах о компании во время одного интервью. Что касается Linux, то Nvidia предоставляет свою собственную реализацию OpenGL, а также собственный аппаратный драйвер - все это с закрытым исходным кодом. Nvidia выпустила некоторые из своих драйверов для продуктов с открытым исходным кодом, но это ограниченный ассортимент. Nouveau, с другой стороны, на самом деле является попыткой сообщества разработчиков ПО с открытым исходным кодом предоставить аппаратный драйвер, который намеренно реверсируется из выпусков драйверов Nvidia. Как бы это ни было доблестно, это часто означает, что новые функции видеокарт обязательно отстают в драйверах Nouveau по сравнению со стеком Nvidia, поскольку сообщество разработчиков открытого исходного кода вынуждено играть в догонялки.

TL; DR

Трудно знать наверняка, что использует ваш графический стек, не зная точную модель карты, но это почти наверняка тоже:

  1. Nvidia предоставляет проприетарную реализацию OpenGL и драйвер оборудования.
  2. Mesa используется для реализации OpenGL, а Nouveau - для аппаратного драйвера.

Поскольку glxinfo просто предназначена для показа реализации OpenGL и не будет иметь доступа к оборудованию, вы можете попробовать просмотреть аппаратный драйвер, используемый с:

lspci -k | grep -EA3 'VGA|3D|Display' 

Найдите поле "Используемый драйвер ядра". Затем получите информацию об этом драйвере с помощью:

modinfo drivername

Вы можете получить много выходных данных, так что вы можете просто проверить верхнюю часть лицензии, чтобы узнать, является ли она лицензией GPL или другой лицензией с открытым исходным кодом. Маловероятно, что вы будете использовать драйверы пространства ядра Nvidia с Mesa.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .