/ linux

Kubuntu i NVIDIA Optimus

Parę dni temu nabyłem nowego laptopa. Na pokładzie znajduje się NVIDIA GF525m z 2GB ramu oraz dodatkowo karta Intela. Oparte oczywiście o technologię Optimus, o której zapomniałem. Dokładniej to wygląda tak:

[email protected]:~$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation 2nd Generation Core Processor Family Integrated Graphics Controller (rev 09)
01:00.0 VGA compatible controller: nVidia Corporation Device 0df5 (rev a1)

Jako, że laptop ma dość dobre parametry, a nie chce mi się bawić w konfigurację to zainstalowałem sobie kubuntu. Dzisiaj postanowiłem przetestować to na jakiejś grze. Kiedyś grałem w Urban Terror więc postanowiłem odświeżyć kontakt z tą grą. Ku mojemu zdziwieniu grafika w grze uniemożliwiała.. jakąkolwiek widoczność, wszystko się zamazywało. Przeszukałem internet w poszukiwaniu rozwiązania jednak żadne ze znalezionych nie dało oczekiwanych rezlutatów. Aplikacje glxinfo, glxgears itp wypluwały błędy. Po czasie przypomniało mi się, że może nie jest używana NVIDIA. I rzeczywiście tak było. Zacząłem poszukiwania informacji w jaki sposób przełączać się między kartami graficznymi.

Natknąłem się na projekt o nazwie Bumblebee-Project. Jest to przepisany od nowa wcześniejszy projekt o nazwie Bumblebee. Dzięki temu możemy uruchomić aplikacje używając do tego drugiej karty, czyli NVIDIA. Instalacja nie jest trudna.

Pierwsze co musimy wykonać to dodać repozytoria bumblebee.

sudo add-apt-repository ppa:bumblebee/stable

Jeśli chcemy nowsze sterowniki niż te, które standardowo znajdują się w systemie to dodajmy także drugie repozytorium. Ja oczywiście je dodałem ;-)

sudo add-apt-repository ppa:ubuntu-x-swat/x-updates

Aktualizujemy i instalujemy bumblebee.

sudo apt-get update
sudo apt-get install bumblebee

Dodajemy także użytkownika do grupy bumblebee.

sudo usermod -a -G bumblebee TWOJA_NAZWA_UŻYTKOWNIKA

Gotowe. Restartujemy system.

U mnie po tych opracjach od razu glxinfo pokazało poprawne informacje, włączony direct rendering itp. Nie wiem w sumie czy to przez bumblebee czy przez nowsze sterowniki.

Jak to działa? Jeśli uruchomimy aplikację normalnie to będzie dla niej używana karta podstawowa czyli tutaj Intel. Jeśli przed uruchomioną aplikacją dodamy optirun to będzie używała drugiej karty czyli NVIDIA.

Mimo, że mam uruchomione teraz dużo aplikacji to zrobię mały test za pomocą glxinfo (tak, wiem, że to mało wiarygodny test ;-))

Pierwsze uruchomienie - standardowo czyli używana będzie karta Intela.

[email protected]:~$ glxgears
Running synchronized to the vertical refresh. The framerate should beapproximately the same as the monitor refresh rate.
303 frames in 5.0 seconds = 60.512 FPS
302 frames in 5.0 seconds = 60.363 FPS
302 frames in 5.0 seconds = 60.351 FPS

Drugie uruchomienie - użycie optirun czyli NVIDIA zamiast Intela.

[email protected]:~$ optirun glxgears
2131 frames in 5.0 seconds = 426.114 FPS
2097 frames in 5.0 seconds = 419.212 FPS
2160 frames in 5.0 seconds = 431.826 FPS

Jak widać różnica jest ;-) Bumblebee daje radę. Ja akurat gry uruchamiam raz na miesiąc więc w 99% wystarcza mi praca na karcie Intela. Jednak dobrze wiedzieć, że optimus w miarę działa. Oczywiście nie ma jeszcze automatycznej zmiany używanej karty, wyłączania nieużywanej karty i innych fajerwerków dostępnych dla użytkowników systemu Windows, aczkolwiek myślę, że potrzeba na to tylko czasu ;-)