Optimus
Материал из ALT Linux Wiki
м (init) |
|||
Строка 1: | Строка 1: | ||
- | + | На данный момент существуют две технологии, которые позволяют использовать 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}}}} |
Текущая версия на 17: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