Optimus: различия между версиями
м (→DIR2/NVidia) |
м (→Ссылки: +1) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 3: | Строка 3: | ||
== Optimus/Prime == | == Optimus/Prime == | ||
Optimus/Prime позволяет использовать Optimus в двух режимах: 'PRIME GPU offloading' и 'Reverse PRIME'. Для его работы ему необходимы загруженные KMS- и DDX-драйвера для Intel'овской карточки и NVidia-карты. До недавнего времени KMS-драйвер для NVidia был только nouveau. В последнее время он | Optimus/Prime позволяет использовать Optimus в двух режимах: 'PRIME GPU offloading' и 'Reverse PRIME'. Для его работы ему необходимы загруженные KMS- и DDX-драйвера для Intel'овской карточки и NVidia-карты. До недавнего времени KMS-драйвер для NVidia был только nouveau. В последнее время он появился и для проприетарного блоба от NVidia. | ||
=== DRI2 / nouveau === | === DRI2 / nouveau === | ||
Строка 54: | Строка 54: | ||
чтобы добавить второй монитор, который подключён к карте NVidia. | чтобы добавить второй монитор, который подключён к карте NVidia. | ||
=== DIR2 / NVidia === | === DIR2/NVidia === | ||
==== Использование дискретной видеокарты в качестве основной ==== | ==== Использование дискретной видеокарты в качестве основной ==== | ||
Строка 69: | Строка 69: | ||
Identifier "nvidia" | Identifier "nvidia" | ||
Driver "nvidia" | Driver "nvidia" | ||
BusID "<Здесь надо вставить BUS ID NVidia карточки, например, | BusID "<Здесь надо вставить BUS ID NVidia карточки, например, 2:0:0>" | ||
Option "AllowEmptyInitialConfiguration" | Option "AllowEmptyInitialConfiguration" | ||
EndSection | EndSection | ||
Строка 78: | Строка 78: | ||
<TODO показать пример вывода> | <TODO показать пример вывода> | ||
Для xrandr этот второй экран пока | Для xrandr этот второй экран пока недоступен, надо вручную включить пересылку картинки: | ||
$ xrandr --setprovideroutputsource modesetting NVIDIA-0 | $ xrandr --setprovideroutputsource modesetting NVIDIA-0 | ||
Строка 87: | Строка 87: | ||
<TODO показать пример вывода> | <TODO показать пример вывода> | ||
В результате всё вычисление и отрисовка идёт на NVidia, а получившаяся картинка сливается на intel. 3D на intel не работает, потму что NVidia подсовывает свою проприетарно захаканую | В результате всё вычисление и отрисовка идёт на NVidia, а получившаяся картинка сливается на intel. 3D на intel не работает, потму что NVidia подсовывает свою проприетарно захаканую Mesa, но оно там и не нужно. | ||
Изменять разрешение ''обоих'' экранов одной командой <code>xrandr</code> я пока не научился, но, например, KDE5 такие настройки понимает и умеет изменять. | Изменять разрешение ''обоих'' экранов одной командой <code>xrandr</code> я пока не научился, но, например, KDE5 такие настройки понимает и умеет изменять. | ||
=== DRI3 === | === DRI3 === | ||
Строка 114: | Строка 113: | ||
== Ссылки == | == Ссылки == | ||
* http://nouveau.freedesktop.org/wiki/Optimus/ | * http://nouveau.freedesktop.org/wiki/Optimus/ | ||
* [https://lists.altlinux.org/pipermail/hardware/2019-August/016760.html I: xorg w/ PRIME offload] (о PRIME render offload) | |||
[[Категория:Руководства]] | [[Категория:Руководства]] | ||
{{Category navigation|title=Видеодрайвера|category=Видеодрайвера|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Видеодрайвера|category=Видеодрайвера|sortkey={{SUBPAGENAME}}}} |
Версия от 15:15, 20 августа 2019
На данный момент существуют две технологии, которые позволяют использовать Optimus в Linux: Optimus/Prime и Bubmlebee. Эти технологии взаимоисключающие: необходимо использовать одну из их в один момент. Эта статься описывает Optimus/Prime. Для bumblebee есть отдельная статья.
Optimus/Prime
Optimus/Prime позволяет использовать Optimus в двух режимах: 'PRIME GPU offloading' и 'Reverse PRIME'. Для его работы ему необходимы загруженные KMS- и DDX-драйвера для Intel'овской карточки и NVidia-карты. До недавнего времени KMS-драйвер для NVidia был только nouveau. В последнее время он появился и для проприетарного блоба от NVidia.
DRI2 / nouveau
Для работы 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.
DIR2/NVidia
Использование дискретной видеокарты в качестве основной
(взято отсюда)
Необходимо донастроить Xorg (либо /etc/X11/xorg.conf
, либо, что правильнее, что-то вроде /etc/X11/xorg.conf.d/40-nvidia.conf
:
Section "Module" Load "modesetting" EndSection Section "Device" Identifier "nvidia" Driver "nvidia" BusID "<Здесь надо вставить BUS ID NVidia карточки, например, 2:0:0>" Option "AllowEmptyInitialConfiguration" EndSection
В такой форме первичным экраном становится тот, что воткнут в дискретную карту, а экран ноутбука, отвечающий за интегрированную, доступен, но не управляется.
$ xrandr --listproviders <TODO показать пример вывода>
Для xrandr этот второй экран пока недоступен, надо вручную включить пересылку картинки:
$ xrandr --setprovideroutputsource modesetting NVIDIA-0 $ xrandr --auto
После чего xrandr видит оба экрана :
$ xrandr <TODO показать пример вывода>
В результате всё вычисление и отрисовка идёт на NVidia, а получившаяся картинка сливается на intel. 3D на intel не работает, потму что NVidia подсовывает свою проприетарно захаканую Mesa, но оно там и не нужно.
Изменять разрешение обоих экранов одной командой xrandr
я пока не научился, но, например, KDE5 такие настройки понимает и умеет изменять.
DRI3
Реализация DRI3 стремится предоставить более пригодный способ использовать PRIME. Он требует несколько дополнительных шагов для установки:
* ядро версии 3.17 или выше * XServer 1.16 с поддержкой DRI3 * Mesa 10.3 с поддержкой DRI3 * загруженный драйвера KMS для обоих карт * загруженный драйвер DDX для первичной карты
Необходимо, чтобы пользователь входил в группу xgrp
.
Если всё хорошо, то оффлоадинг на вторичную карту осуществляется с помошью 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
Ссылки
- http://nouveau.freedesktop.org/wiki/Optimus/
- I: xorg w/ PRIME offload (о PRIME render offload)