Настройка NVIDIA Optimus при помощи Bumblebee

Хочу уточнить текст этой статьи:
http://www.calculate-linux.ru/boards/40/topics/28629

У меня не получилось настроить видеокарту при помощи noveau, т.к. мой чипсет, nv117, пока что официально не поддерживается и находится в стадии разработки (как видно из таблицы на оф. сайте)

У меня не получилось настроить видеокарту через xrandr - в результате я получаю чёрный экран и всё, словно команды xrandr-а прописанные в xinit-е не выполняются (конечно, при выключенном xdm, запускают иксы командой startx).

Остался последний путь: Bumblebee.

Это мои записи того что я делал, т.е. черновик статьи. Не все нижеисложенное нужно делать для получения результата.

Первое, что мы делаем - обновляем систему. Иначе, на Calculate 17 пакет bumblebee не ставится.

Открываем файл /etc/calculate/calculate.env. Пишем в него строки:

[main]
cl_autoupdate_set = on

Затем даём команды:

cl-update --sync-only
cl-update

В процессе обновления будет задано пара вопросов, где нужно ответить согласием.

Так же имеет смысл дать команду:

eselect news read

Затем перезагружаем систему, restart.

Далее, не знаю, обязательно ли, но я сделал: Пуск -> Система -> Консоль Calculate -> Видео. Выбираем Intel, и, даже если он уже выбран, нажимаем “Сохранить”. Затем пойдёт процесс настройки видеокарты.

В начале этого процесса настройки видеокарты, у меня возникла ошибка - не нашёл файл grub.png. Я подложил этот файл вручную, из под рута, туда, куда он попросил. Надеюсь, этот мелкий недочёт разработчики исправят в ближайшее время.

Возможно, процесс настройки видеокарты так же запросит подтверждение на изменений конфигурационных файлов, нажимаем “u”.

Затем снова перезагружаемся.

После перезагрузки, на моём ноутбуке постоянно горит индикатор энергопотребления (кнопка power оранжевого цвета). По идее, когда включена видеорката intel, и 3д-ускорение не требуется, этот индикатор горит синим цветом. Но у меня, почему-то, он постоянно горит оранжевым.

Далее заходим открываем любое изображение с поперечными полосами. Например сайт calculate-linux.ru имеет таковые на фоне. И скролим. В моём случае, изображение на экране немного бьёт по глазам, а в нижней части видны полосы рассинхронизации - признак того, что vsync, вертикальная синхронизация, не работает или работает не правильно.

Затем я отправился в настройки: Пуск -> Настройки -> Диспетчер настроек -> Дисплей. Тут я сменил обновление частоты моего нотбучного монитора с 59 на 60 герц.

Проверяем картинку снова. При скроллинге, изображение бьёт по глазам ещё сильней, а линия рассинхронизации теперь мерцает (во время скроллинга) по середине экрана.

Затем устанавливаем Bumblebee:

layman -a bumblebee
emerge -av x11-misc/bumblebee

Тут установщик предложит добавить use-флаг “video_cards_nvidia”, соглашаемся, затем “закрепляем” изменения, вызвав команду:

dispatch-conf

Эта программа спросит, изменять ли конфиг. Нажимаем “u” для подтверждения.

Затем вновь даём комманду на установку bumblebee, а заодно и программы primus:

emerge -av x11-misc/bumblebee x11-misc/primus

Добавляем в автозапуск

rc-update add bumblebee default

В настройках Консоль Calculate -> Сессия я так же убрал автологин.

добавляем своего пользователя (по умолчанию, пользователь guest) в группу bumblebee

gpasswd -a guest bumblebee

Перезагружаемся.

После перезагрузки, индикатор видеокарты по прежнему постоянно горит оранжевым, хотя я ожидал, что будет синим. С этим ещё предстоит разобраться.

Заходим на сайт с полосатой картинкой, и скролим - линия рассинхронизации теперь едва различима, почти в самом низу экрана, и не мешает.

Однако меня смущает, что в настроках Дисплея теперь доступно только 59 герц(!) Почему так???

Далее, для проверки 3д-ускорения, даём команды:

glxgears
optirun glxgears
primusrun glxgears

Далее даём команду

emerge -av steam-launcher

Продолжение следует.

Надо заметить, что команда:

eselect opengl list

Выдаёт у меня сейчас:

  [1]   nvidia
  [2]   xorg-x11 *

И тут я ничего никогда не переключал.

Сейчас буду проверять вертикальную синхронизацию и fps в играх.

Но меня мучают два вопроса:

1. Почему индикатор видеокарты - оранжевый? В xorg.conf запрошена только лишь intel видеокарта.
2. Почему частота экрана 59 герц, а настройка в 60 герц пропала?

В продолжении темы.
Оказалась очень важной настройка для Intel видеокарты:

Option "AccelMethod" "uxa"

Именно эта настройка даёт иллюзию присутствия vsync, делая изображение приятным для глаз. Как я писал выше, полоса рассинхрона с трудом различима и находится в самом низу экрана, что не мешает при работе.

Для того, чтобы индикатор видеокарты горел синим, я пока что придумал только лишь в настройках Консоли Calculate -> Видео выбрать nouveau. А затем вручную изменить xorg.conf, добавив в него секцию Intel, и, соответственно, изменив строчку Device в секции Screen. Мой xorg.conf сейчас выглядит так:

Section "ServerLayout"
  Identifier "Xorg Configured"
  Screen "Monitor"
EndSection

Section "Files"
  FontPath "/usr/share/fonts/corefonts"
  FontPath "/usr/share/fonts/misc"
  FontPath "/usr/share/fonts/droid"
EndSection

Section "Module"
  Load "dri"
  Load "i2c"
  Load "bitmap"
  Load "ddc"
  Load "int10"
  Load "vbe"
  Load "glx" # OpenGL X protocol interface
  Load "extmod" # Misc. required extension
EndSection

Section "Monitor"
  Identifier "StandardMonitor"
  Option "DPMS"
EndSection

Section "Device"
  Identifier "intelVGA"
  Driver "intel"
  Option "AccelMethod" "uxa"
EndSection

Section "Screen"
  Identifier "Monitor"
  Device "intelVGA"
  Monitor "StandardMonitor"
  DefaultDepth 24
  Subsection "Display"
    Viewport 0 0
    Depth 24
    Modes "1920x1080"
  EndSubsection
EndSection

Section "DRI"
  Group        "video"
  Mode         0666
EndSection

Section "Extensions"
  Option "Composite" "On"
EndSection

Однако, после включения nvidia карты при помощи optirun, карта не переходит обратно после остановки 3д-приложения.

Продолжаем. Стим просто так не запустился. Перед запуском стим, нужно дать команду из под пользователя:

find ~/.steam/root/ \( -name "libgcc_s.so*" -o -name "libstdc++.so*" -o -name "libxcb.so*" \) -print -delete

Уход в сторону nouveau был не лучшей идеей.
Чтобы как можно меньше колхозить в конфигах руками, лучше через настройки, через панель управления Консоль Calculate -> Видео выбрать Intel. Необходимая опция

Option "AccelMethod" "uxa"

там уже стоит и трогать xorg.conf не нужно.

Чтобы выключать nvidia и оставлять intel на момент запуска системы, а так же чтобы переключаться обратно с nvidia на intel после остановки 3d-приложения, существует другой инструмент:

/etc/modprobe.d/bbswitch.conf

Но я не буду писать об этом файле, потому что поигравшись с ним, я не извлёк никакой пользы.
И единственным способом теперь переходить с nvidia на intel остался только переход в ручную. Я написал скриптик video-off (без расширения), дал ему chmod +x video-off и закинул в /usr/bin. Текст скриптика такой:

#!/bin/sh
modprobe -r nvidia
tee /proc/acpi/bbswitch <<<OFF

Запускать из под рута.
Более лучшего способа пока не нашёл. И на этом остановклюсь.

А вот vsync в играх как не работал, так и не работает. И что с этим делать, пока не ясно =(

А ларчик просто открывался.

Section "Extensions"
  Option "Composite" "Off"
EndSection

Что эквивалетно снятию галки напротив “Композит” в панели управления.

Эффекта tearing больше не замещаю, на в 2д при скроллинге страниц, ни в 3д играх. Полосы рассинхронизации не вижу вообще.

Радуюсь.

для вертикальной синхронизации в smplayer необходимо в настройках выставить устройство вывода, gl_nosw.

с играми пока что нерешил вопрос. половина игр всё равно не запускается. похоже проблема с 32/64 бита.

Для некоторых игр необходима поддержка 32 бита.

Дописываем в файл /etc/portage/package.use/custom строки:

>=x11-misc/virtualgl-2.4.1-r3 abi_x86_32
>=x11-misc/primus-0.2 abi_x86_32

Переустанавливаем эти пакеты.

После этих действий, у меня наконец то запустилась игра Arma3. А так же некоторые игры перестали “тормозить”. Однако, одна из игр зависает при запуске, хотя работала раньше под arch и gentoo linux.