Urządzenia wyjścia video

Ustawianie MTRR

Jest WYSOCE wskazane, aby sprawdzić, czy rejestry MTRR są ustawione prawidłowo, ponieważ mogą dać duży wzrost wydajności.

Wykonaj cat /proc/mtrr:


--($:~)-- cat /proc/mtrr
reg00: base=0xe4000000 (3648MB), size=  16MB: write-combining, count=9
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

Widać mojego Matroksa G400 z 16MB pamięci. Wydałem tę komendę z XFree 4.x.x, które ustawiają MTRR automatycznie

Jeżeli nie zadziałało, trzeba to ustawić ręcznie. Przede wszystkim, musisz znaleźć adres bazowy. Możesz to zrobić na 3 sposoby:

  1. z komunikatów startowych X11, na przykład:

    
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
    (--) SVGA: Linear framebuffer at 0xD8000000

  2. z /proc/pci (użyj polecenia lspci -v ):

    
01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
    Memory at d8000000 (32-bit, prefetchable)
      

  3. z komunikatów sterownika mga_vid w jądrze (użyj dmesg):

    mga_mem_base = d8000000

Znajdźmy teraz rozmiar pamięci. Jest to bardzo łatwe, po prostu zamień rozmiar RAMu na karcie graficznej na system szestnastkowy, lub użyj tej tabelki:

1 MB0x100000
2 MB0x200000
4 MB0x400000
8 MB0x800000
16 MB0x1000000
32 MB0x2000000

Znasz już adres bazowy i rozmiar pamięci. Ustawmy więc rejestry MTRR! Na przykład dla powyższej karty Matrox (base=0xd8000000) z 32MB RAMu (size=0x2000000) po prostu wykonaj:


echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr

Nie wszystkie procesory obsługują MTRR. Na przykład starsze K6-2 (jakieś 266MHz, stepping 0) nie obsługują MTRR, ale już stepping 12 tak. (cat /proc/cpuinfo aby sprawdzić).

Wyjścia video dla tradycyjnych kart graficznych

Xv

W XFree86 4.0.2 lub nowszym możesz używać sprzętowego YUV poprzez rozszerzenie XVideo. To tego używa opcja -vo xv. Ten sterownik obsługuje także regulację jasności/kontrastu/nasycenia/itp. (chyba, że używasz starego, powolnego kodeka DirectShow DivX, który to obsługuje wszędzie). Spójrz na stronę man.

Aby to zadziałało upewnij się, że:

  1. Masz XFree86 4.0.2 lub nowsze (starsze nie majÄ… XVideo)

  2. Twoja karta obsługuje przyśpieszanie sprzętowe (współczesne karty to mają)

  3. X ładuje rozszerzenie XVideo, zwykle wygląda to tak:

    (II) Loading extension XVideo
    w logu /var/log/XFree86.0.log

    Notatka: To ładuje tylko rozszerzenie XFree86. W dobrej instalacji jest to zawsze włączone i nie oznacza to że obsługa XVideo w karcie jest załadowana.

  4. Twoja karta obsługuje Xv pod Linuksem. Aby sprawdzić, spróbuj xvinfo, wchodzące w skład dystrybucji XFree86. Powinno wyświetlić długi tekst podobny do tego:

    
X-Video Extension version 2.2
    screen #0
      Adaptor #0: "Savage Streams Engine"
        number of ports: 1
        port base: 43
        operations supported: PutImage
        supported visuals:
          depth 16, visualID 0x22
          depth 16, visualID 0x23
        number of attributes: 5
    (...)
        Number of image formats: 7
          id: 0x32595559 (YUY2)
            guid: 59555932-0000-0010-8000-00aa00389b71
            bits per pixel: 16
            number of planes: 1
            type: YUV (packed)
          id: 0x32315659 (YV12)
            guid: 59563132-0000-0010-8000-00aa00389b71
            bits per pixel: 12
            number of planes: 3
            type: YUV (planar)
    (...etc...)
    Karta musi obsługiwać formaty "YUY2 packed" i "YV12 planar", aby mogła być używana z MPlayerem.

  5. I na koniec sprawdź, czy MPlayer został skompilowany z obsługą Xv. Wykonaj mplayer -vo help | grep xv . Jeżeli została zbudowana obsługa Xv to powinna się pojawić podobna linia:

    
  xv      X11/Xv

Karty 3dfx

Starsze sterowniki 3dfx znane były z tego, że miały problemy z akceleracją XVideo. Nie obsługiwały ani YUY2, ani YV12. Sprawdź czy masz XFree86 w wersji 4.2.0 lub nowszej. Działają one dobrze z YV12 i YUY2. Poprzednie wersje z 4.1.0 włącznie wywalały się na YV12. Jeżeli napotkasz na dziwne działanie używając -vo xv, spróbuj SDL (także ma XVideo) i zobacz, czy to pomaga. Dokładniejsze instrukcje są w sekcji SDL.

LUB, spróbuj NOWEGO sterownika -vo tdfxfb! Zajrzyj do sekcji tdfxfb

Karty S3

S3 Savage3D powinny działać. Jeżeli masz Savage4 używaj XFree86 4.0.3 lub nowszego (gdyby występowały problemy z obrazem, spróbuj ustawić głębię kolorów na 16bpp). Jeżeli chodzi o S3 Virge: obsługuje ona Xv, ale jest bardzo wolna, więc najlepiej ją sprzedaj.

Notatka: Obecnie niejasne jest, które modele kart Savage nie mają sprzętowej obsługi YV12 i robią to programowo (co jest wolne). Jeżeli podejrzewasz o to swoją kartę, zdobądź nowsze sterowniki, lub grzecznie poproś o sterownik z obsługą MMX/3DNow! na grupie dyskusyjnej mplayer-users

Karty nVidia

nVidia nie zawsze jest dobrym wyborem dla Linuksa (wg nVidii to nieprawda)... Sterownik XFree86 o otwartych źródłach obsługuje większość tych kart, lecz w niektórych wypadkach będziesz zmuszony używać binarnych sterowników o zamkniętych źródłach (do pobrania ze strony nVidii). Jeżeli chcesz uzyskać przyspieszenie 3D to zawsze będziesz potrzebować tych sterowników.

karty Riva 128 nie obsługują XVideo nawet ze sterownikami nVidii :( Zażalenia składaj do nVidii.

Jednakże MPlayer zawiera sterownik VIDIX obsługujący większość kart nVidia. Obecnie znajduje się w stadium beta i ma pewne ograniczenia. Więcej informacji znajdziesz w sekcji nVidia.

Karty ATI

Sterowniki GATOS (których powinieneś używać, chyba że masz Rage128 lub Radeon) mają standardowo włączone VSYNC. Znaczy to, że szybkość dekodowania (!) jest zsynchronizowana z (pionową) częstotliwością odświeżania obrazu. Jeżeli odtwarzanie wydaje Ci się powolne, spróbuj w jakiś sposób wyłączyć VSYNC, lub ustaw częstotliwość odświeżania na n*(fps filmu) Hz.

Radeon VE - jeżeli potrzebujesz X, używaj XFree86 4.2.0 lub nowszego. Brak obsługi wyjścia TV. Oczywiście w MPlayerze możesz uzyskać przyśpieszane wyświetlanie, z lub bez wyjścia TV. Żadne biblioteki czy X nie są do tego potrzebne. Poczytaj sekcję o VIDIX.

Karty NeoMagic

Te karty można znaleźć w wielu laptopach. Musisz używać XFree86 4.3.0 lub nowszych, lub sterowników Stefana Seyfried'a obsługujących Xv. Po prostu wybierz ten, który pasuje do Twojej wersji XFree86.

XFree86 4.3.0 zawierają obsługę Xv, lecz Bohdan Horst wysłał małą łatkę na źródła XFree86, która przyśpiesza operacje na buforze ramki (framebuffer) nawet czterokrotnie. Ta łatka została uwzględniona w XFree86 CVS i powinna znaleźć się w następnej wersji po 4.3.0

Aby umożliwić odtwarzanie zawartości o rozmiarach DVD zmodyfikuj swój XF86Config w następujący sposób:


Section "Device"
    [...]
    Driver "neomagic"
    Option "OverlayMem" "829440"
    [...]
EndSection

Karty Trident

Jeżeli chcesz używać Xv z kartą trident (zakładając, że nie działa z 4.1.0), zainstaluj XFree 4.2.0. 4.2.0 obsługuje pełnoekranowe Xv w karcie Cyberblade XP.

AlternatywÄ… jest sterownik VIDIX dla karty Cyberblade/i1.

Karty Kyro/PowerVR

Jeżeli chcesz używać Xv z kartÄ