Optimus: различия между версиями

Материал из ALT Linux Wiki
м (init)
 
Нет описания правки
Строка 1: Строка 1:
#REDIRECT [[Nvidia optimus, настройка и запуск bumblebee]]
На данный момент существуют две технологии, которые позволяют использовать Optimus в Linux: Optimus/Prime и Bubmlebee. Эти технологии взаимоисключающие: необходимо использовать одну из их в один момент. Эта статься описывает Optimus/Prime. Для bumblebee есть [[Nvidia optimus, настройка и запуск bumblebee|отдельная статья]].
 
== Optimus/Prime ==
 
Optimus/Prime позволяет использовать Optimus в двух режимах: 'PRIME GPU offloading' и 'Reverse PRIME'. Для его работы ему необходимы загруженные KMS- и DDX-драйвера для Intel'овской карточки и NVidia-карты. До недавнего времени KSM-драйвер для NVidia был только nouveau. В последнее время для бинарного блоба
 
=== DRI2 ===
 
Для работы Optimus/Prime необходимо:
 
* Обновлённый графический стек (ядро, xserver, mesa)
* Загруженные драйвера KMS для обеих графических карт
* Загруженные драйвера DDX для обеих графических карт
 
Если всё хорошо, то <code>xrandr --listproviders</code> должен отобразить два ''провайдера'':
 
<pre>
$ xrandr --listproviders
Providers: number : 2
Provider 0: id: 0x8a cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 2 associated providers: 1 name:Intel
Provider 1: id: 0x66 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 2 outputs: 5 associated providers: 1 name:nouveau
</pre>
 
==== 3D оффлоадинг ====
 
Важно сказать Prime'у какую карту использовать для оффлоадинга. Например, для того, чтобы использовать Nouveau для оффлоадинга Intel'овской карточки:
 
<pre>
$ xrandr --setprovideroffloadsink nouveau Intel
</pre>
 
Когда это сделано, очень просто выбрать карту, которая должна использоваться. Для оффлоадинга приложения на дискретную карту, нужно передать ему переменную окружения DRI_PRIME=1. Когда приложение будет запущено, Оно будет использовать дискретную карту для рендеринга. Если нужно использовать встроенную карту, необходимо установить DRI_PRIME в 0 или не передавать его. Поведение можно посмотреть на следующем примере:
 
<pre>
$ DRI_PRIME=0 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: Intel Open Source Technology Center
$ DRI_PRIME=1 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: nouveau
</pre>
 
==== Использование видео-выходов на дискретной карточке ====
 
Если на дискретной карте есть видео-выходы, которые недоступны на первичной видео-карте, то их можно использовать с помощью "Reverse PRIME". После чего первичнаяв видео-карта будет использоваться для рендерига изображения, которое затем будет отправлено на дискретную видео-карту. Для этого нужно выполнить:
 
<pre>
$ xrandr --setprovideroutputsource nouveau Intel
</pre>
 
Когда это сделано, видео-выход карты nvidia будет доступен в xrandr, и можно сделать сделать следующее:
 
<pre>
$ xrandr --output HDMI-1 --auto --above LVDS1
</pre>
 
чтобы добавить второй монитор, который подключён к карте NVidia.
 
=== DRI3 ===
 
Реализация DRI3 стремится предоставить более пригодный способ использовать PRIME. Он требует несколько дополнительных шагов для установки:
 
* ядро версии 3.17 или выше
* XServer 1.16 с поддержкой DRI3
* Mesa 10.3 с поддержкой DRI3
* загруженный драйвера KMS для обоих карт
* загруженный драйвер DDX для первичной карты
 
''Необходимо, чтобы пользователь входил в группу <code>video</code>.''
 
Если всё хорошо, то ''оффлоадинг'' на вторичную карту осуществляется с помошью DRI_PRIME=1:
 
<pre>
$ DRI_PRIME=0 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: Intel Open Source Technology Center
$ DRI_PRIME=1 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: nouveau
</pre>
 
== Ссылки ==
* http://nouveau.freedesktop.org/wiki/Optimus/
 
[[Категория:Руководства]]
{{Category navigation|title=Видеодрайвера|category=Видеодрайвера|sortkey={{SUBPAGENAME}}}}

Версия от 20:37, 10 октября 2016

На данный момент существуют две технологии, которые позволяют использовать Optimus в Linux: Optimus/Prime и Bubmlebee. Эти технологии взаимоисключающие: необходимо использовать одну из их в один момент. Эта статься описывает Optimus/Prime. Для bumblebee есть отдельная статья.

Optimus/Prime

Optimus/Prime позволяет использовать Optimus в двух режимах: 'PRIME GPU offloading' и 'Reverse PRIME'. Для его работы ему необходимы загруженные KMS- и DDX-драйвера для Intel'овской карточки и NVidia-карты. До недавнего времени KSM-драйвер для NVidia был только nouveau. В последнее время для бинарного блоба

DRI2

Для работы Optimus/Prime необходимо:

  • Обновлённый графический стек (ядро, xserver, mesa)
  • Загруженные драйвера KMS для обеих графических карт
  • Загруженные драйвера DDX для обеих графических карт

Если всё хорошо, то xrandr --listproviders должен отобразить два провайдера:

$ xrandr --listproviders 
Providers: number : 2
Provider 0: id: 0x8a cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 2 outputs: 2 associated providers: 1 name:Intel
Provider 1: id: 0x66 cap: 0x7, Source Output, Sink Output, Source Offload crtcs: 2 outputs: 5 associated providers: 1 name:nouveau

3D оффлоадинг

Важно сказать Prime'у какую карту использовать для оффлоадинга. Например, для того, чтобы использовать Nouveau для оффлоадинга Intel'овской карточки:

$ xrandr --setprovideroffloadsink nouveau Intel

Когда это сделано, очень просто выбрать карту, которая должна использоваться. Для оффлоадинга приложения на дискретную карту, нужно передать ему переменную окружения DRI_PRIME=1. Когда приложение будет запущено, Оно будет использовать дискретную карту для рендеринга. Если нужно использовать встроенную карту, необходимо установить DRI_PRIME в 0 или не передавать его. Поведение можно посмотреть на следующем примере:

$ DRI_PRIME=0 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: Intel Open Source Technology Center
$ DRI_PRIME=1 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: nouveau

Использование видео-выходов на дискретной карточке

Если на дискретной карте есть видео-выходы, которые недоступны на первичной видео-карте, то их можно использовать с помощью "Reverse PRIME". После чего первичнаяв видео-карта будет использоваться для рендерига изображения, которое затем будет отправлено на дискретную видео-карту. Для этого нужно выполнить:

$ xrandr --setprovideroutputsource nouveau Intel

Когда это сделано, видео-выход карты nvidia будет доступен в xrandr, и можно сделать сделать следующее:

$ xrandr --output HDMI-1 --auto --above LVDS1

чтобы добавить второй монитор, который подключён к карте NVidia.

DRI3

Реализация DRI3 стремится предоставить более пригодный способ использовать PRIME. Он требует несколько дополнительных шагов для установки:

* ядро версии 3.17 или выше
* XServer 1.16 с поддержкой DRI3
* Mesa 10.3 с поддержкой DRI3
* загруженный драйвера KMS для обоих карт
* загруженный драйвер DDX для первичной карты

Необходимо, чтобы пользователь входил в группу video.

Если всё хорошо, то оффлоадинг на вторичную карту осуществляется с помошью DRI_PRIME=1:

$ DRI_PRIME=0 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: Intel Open Source Technology Center
$ DRI_PRIME=1 glxinfo | grep "OpenGL vendor string"
OpenGL vendor string: nouveau

Ссылки