Jeśli jesteś posiadaczem karty graficznej firmy Nvidia, w PLD masz różne możliwości doboru sterowników. Zgodnie z zasadą naszej dystrybucji niczego Tobie nie narzucimy, sam zdecydujesz co jest dla Ciebie lepsze, ważniejsze.
Pakiety nvidia-legacy to sterowniki zamknęte, “firmowe”, czyli tworzone przez Nvidię. Dla świata linuksowego są udostępniane w postaci binarnej, bez możliwości zajrzenia w kod źródłowy, oraz co oczywiste edycji. Naturalnie w PLD nie będziesz musiał nic ściągać ze strony twórców twojej karty graficznej, wszystko jest już w repozytorium. Chyba nie trzeba nikogo przekonywać, że te sterowniki powinny jak najlepiej wspierać Twój sprzęt. W końcu kto lepiej wie jak działa dana karta graficzna, niż jej Twórcy?
Sterowniki legacy są dostarczane w kilku pakietach. W zależności od tego, jaki sprzęt posiadasz powinieneś zainstalować inny pakiet. Na dzień dzisiejszy są do wyboru 3:
kernel-video-nvidia-legacy kernel-video-nvidia-legac2 kernel-video-nvidia-legac3
Zasada doboru jest prosta: Im większy numer na końcu nazwy pakietu, tym nowsze karty jest w stanie obsługiwać. Dla Twojej wygody, w opisie każdej paczki znajduje się informacja, które karty wspiera. Jeśli nie wiesz jak wypisać opis pakietu, bądź go zainstalować, zajrzyj do przewodnika Poldek na co dzień.
Instalacja w PLD jest jak zwykle bardzo prosta. Wystarczy w poldku wywołać np.:
poldek:/all-avail>install kernel-video-nvidia-legacy3 xorg-driver-video-nvidia-legacy3
Drugi pakiet dotyczy wsparcia dla Xów. Teraz musimy powiedzieć serwerowi Xów, z którego sterownika chcemy korzystać. Czyli w pliku: /etc/X11/xorg.conf dopisujemy np.:
Section "Device" Identifier "gf9600" VendorName "nvidia" Driver "nvidia" EndSection
Najważniejsza z powyższego wpisu jest zmienna Driver, musimy ją ustawić na wartość: “nvidia”. Reszta jest opcjonalna. Teraz zostaje uruchomić nam ulubiony menadżer okien i ściskać kciuki, żeby wszystko się udało.
Jeśli mamy najnowsze wersje pakietów Nvidia i Xorg, może się okazać, że nasz sysem Xów nie bedzie w stanie obsługiwać niektórych programów. Może się to objawiać w następujący sposób - podczas uruchomienia programu na konsoli wyskakuje:
X Error of failed request: BadLength (poly request too large or internal Xlib length error) Major opcode of failed request: 152 (RANDR) Minor opcode of failed request: 24 (RRSetCrtcGamma) Serial number of failed request: 74 Current serial number in output stream: 76
W logach Xorga można wtedy zobaczyć takie komunikaty:
[ 2741.865] Warning: Xalloc: requesting unpleasantly large amount of memory: 0 bytes.
Jest to spowodowane brakiem pełnej obsługi randr z Xorg przez sterowniki Nvidii.
W tej chwili (16.01.2011) jedynym sposobem obejścia tego problemu jest zbudowanie pakietu SDL bez łaty new_gamma_ramps_support, czyli kompilacja warunkowa z wyłączoną flagą new_gamma_ramp:
builder SDL --without new_gamma_ramp
Łata domyślnie dla SDL jest nanoszona, ponieważ nie powoduje ona błędów na kartach graficznych innych producentów, tj. Ati, Intel.
Jedną z alternatyw dla zamkniętych sterowników Nvidii są otwarte sterowniki nouveau. Do ich poprawnego działania będziemy musieli zainstalować kilka pakietów:
Mesa-libGL Mesa-dri-driver-nouveau xorg-driver-video-nouveau xorg-xserver-libglx kernel-drm
Konfiguracja Xów jest równie prosta jak przy poprzednim sterowniku. Wystarczy zmiennej Driver nadać wartość: “nouveau”,np.:
Section "Device" Identifier "gf9600" Driver "nouveau" EndSection
Po pierwsze, musimy sprawdzić czy jest włączony:
$ glxinfo | grep rendering
Oczekiwany wynik to:
direct rendering: Yes
Jeśli zamiast Yes będzie No, potrzebujemy pakietu Mesa-libGL.
Czas na prosty test karty:
$ glxgears
Powinniśmy ujrzeć obracające się trybiki - można sterować nimi za pomocą kursorów. Na konsoli zobaczymy liczbę klatek na sekundę (FPS).
Ten komunikat może pojawić się gdy w systemie brakuje pakietu kernel-drm:
[ 10182.764] drmOpenDevice: node name is /dev/dri/card0 [ 10182.765] drmOpenDevice: open result is -1, (No such device or address) [ 10182.766] drmOpenDevice: open result is -1, (No such device or address) [ 10182.766] drmOpenDevice: Open failed [ 10182.767] [drm] failed to load kernel module "nouveau" [ 10182.767] (EE) [drm] failed to open device [ 10182.767] (EE) No devices detected.
Te “cuda”, mimo działającego menadżera okien, mogą pojawić się kiedy brakuje paczki: Mesa-dri-driver-nouveau:
[ 22.200] (EE) AIGLX error: dlopen of /usr/lib/xorg/modules/dri/nouveau_dri.so failed (/usr/lib/xorg/modules/dri/nouveau_dri.so: cannot open shared object file: No such file or directory) [ 22.200] (EE) AIGLX: reverting to software rendering [ 22.200] (II) AIGLX: Screen 0 is not DRI capable [ 22.200] (EE) AIGLX error: dlopen of /usr/lib/xorg/modules/dri/swrast_dri.so failed (/usr/lib/xorg/modules/dri/swrast_dri.so: cannot open shared object file: No such file or directory) [ 22.200] (EE) GLX: could not load software renderer
TODO: Może ktoś napisze jak to skonfigurować? Nigdy nie korzystałem.