AMD Legacy – konsekwecje dla Linuksa 7


AMD Logo

W 2009 roku tuż przed premierą Ubuntu 9.04 firma AMD (która 3 lata wcześniej przejęła ATI Technologies) ogłosiła, że wszystkie karty graficzne Radeon nienależące do linii HD zostają przeniesione do gałęzi „Legacy”. W konsekwencji nowe sterowniki Catalyst przestały je obsługiwać, a w Ubuntu 9.04 nie dało się już zainstalować starszych modułów. Użytkownicy Linuksa zostali pozostawieni na lodzie. Niedopracowane otwarte sterowniki (r300c) nie były w stanie zrekompensować straty zamkniętych odpowiedników, które swoją drogą i tak były raczej kłopotliwe. To wydarzenie wywołało bardzo negatywny odbiór AMD w społeczności open source, za co firma pokutuje do dziś. Nic więc dziwnego, że serce użytkowników Radeonów zadrżało, gdy w maju bieżącego roku (2012) AMD zapowiedziało, że karty graficzne HD 2xxx – 4xxx zostają także przesunięte do gałęzi Legacy. Tym razem jednak AMD zrobiło to w zupełnie innym stylu, a w niniejszym artykule postaram się przybliżyć co oznacza to w praktyce dla użytkowników Ubuntu.

Pierwszą kluczową różnicą jest moment ogłoszenia decyzji. Tym razem AMD zakończyło wsparcie dla swoich układów po premierze Ubuntu, a nie przed. Dzięki temu każdy komu zależy na Catalystach może ich używać na Ubuntu 12.04 LTS jeszcze przez ponad 4,5 roku. Ponadto firma dokonała aktualizacji sterowników Legacy, która pozwoli na zainstalowanie ich na Ubuntu 12.10. Tak więc dopiero użytkownicy Ubuntu 13.04, które zostanie wydane w kwietniu 2013 roku, odczują brak Catalystów. Linuksiarze dostali więc prawie rok czasu na przygotowanie się do zmian lub po prostu pozostanie na wydaniu LTS. Jednak nawet osoby goniące za nowościami nie powinny tracić nadziei. AMD przez ostanie lata sporo zainwestowało w rozwój otwartych sterowników do swoich układów. W optymalnej sytuacji użytkownicy przejdą z Catalystów na r600g nie odczuwając nawet żadnej zmiany na gorsze. W dalszej części artykułu skupię się więc na porównaniu zamkniętych modułów z otwartymi, które mają je zastąpić.

1. Implementacja OpenGL

Catalysty zapewniają implementację OpenGL w wersji 3.3 dla układów, które właśnie przechodzą do linii Legacy. Jest ona kompletna i bardzo dobrze trzyma się deklarowanych standardów.

W Ubuntu 12.10 implementacja OpenGL przez otwarte sterowniki będzie zapewniana dzięki Mesa 9.0. Ta wersja biblioteki wspiera już w pełni OpenGL 3.1. Jest to jednak osiągnięte dzięki ciężkiej pracy zespołu Intela (brawo Intel!), a drużyna AMD jeszcze tego nie nadgoniła. Domyślnie otwarte sterowniki wspierają jedynie OpenGL 2.1, jednak ustawiając 2 zmienne środowiskowe:

R600_STREAMOUT=1
R600_GLSL130=1

Już teraz można wymusić pełne OpenGL 3.0.

Jest nadzieja, że do czasu premiery Mesa 9.0 będzie to już domyślna konfiguracja. W Ubuntu 13.04 będziemy mieć natomiast Mesa 9.1 lub 10.0 (jeżeli zostanie zaimplementowane OpenGL 3.2), więc przy odrobinie szczęścia Radeony będą już domyślnie obsługiwać OpenGL 3.1, a może nawet 3.2. Należy tutaj wspomnieć też o popularnej metodzie kompresji tekstur S3TC, która nie jest domyślnie obsługiwana przez otwarte sterowniki z powodu obaw związanych z patentami, mimo iż jest elementem specyfikacji OpenGL. Niemniej jednak w domyślnych repozytoriach Ubuntu znajduje już się pakiet libtxc-dxtn-s2tc0 zapewniający pewną implementację tej technologii. Jest on pobierany jako zależność do gier wymagających S3TC, więc i ten problem jest już częściowo rozwiązany. W tym miejscu chciałbym jeszcze zauważyć, że otwarte sterowniki obsługują już nawet trochę rozszerzeń OpenGL wykraczających poza możliwości Catalystów. Ze stanem prac można być w miarę na bieżąco śledząc zmiany w tym pliku.

2. Akceleracja Wideo

Akceleracja wideo nigdy nie była wdzięcznym tematem dla AMD. Catalysty zapewniają ją przez interfejs XvBA. Obecnie obsługuje go jedynie odtwarzacz XBMC, który nie jest nawet dostępny w domyślnych repozytoriach Ubuntu. Można też tłumaczyć XvBA na VDAPU, które ma znacznie szersze zastosowanie, jednak odbywa się to kosztem spadku wydajności. Należy też zauważyć, że implementacja XvBA ma opinie bardzo zbugowanej, na co narzekają zarówno deweloperzy, jak i użytkownicy.

Otwarte sterowniki natomiast potrafią zapewnić akcelerację wideo przez VDPAU. Niestety w Ubuntu Mesa jest domyślnie skompilowana bez tej możliwości. Trzeba więc skorzystać z dodatkowych repozytoriów takich jak to lub samemu sobie przekompilować Mesa. Jest to dość problematyczne, ale można mieć nadzieję, że do Ubuntu 13.04 Canonical zmieni sposób budowania otwartych sterowników. Kolejnym problemem jest to, że owa akceleracja działa ciągle tylko dla nielicznych kodeków (i to wcale nie najpopularniejszych). Prace w tym zakresie idą w żółwim tempie, więc nie liczyłbym tutaj na radykalną poprawę sytuacji.

3. Układy hybrydowe

Z układami hybrydowymi mamy do czynienia, gdy dany komputer posiada dwie różne karty graficzne na wspólnym wyjściu wideo. Ponieważ niemalże wszystkie nowe procesory Intela posiadają już wbudowany układ graficzny, to ta technologia staje się coraz bardziej powszechna na laptopach. Linux znany jest z problemów z obsługą hybryd, jednak programiści AMD spisali się tutaj znacznie lepiej niż ich konkurenci z NVIDIA, którzy jedynie ignorują problem. Zamknięte sterowniki do Radeonów pozwalają współdziałać tym układom z grafikami Intela, a nawet przełączać między nimi. Taka zmiana wymaga jednak restartu X Serwera (jest to problem raczej X-ów niż sterowników).

Na chwile obecną otwarte sterowniki mogą być w tym zakresie jeszcze niedojrzałe. Jednak deweloperzy jądra wbudowują w nie mechanizmy współdzielenia buforów ze sterownikami Intela (DMA-BUF). Ponadto cały stos graficzny jest dynamicznie rozbudowywany o technologię zwaną PRIME, która ostatecznie ma zapewnić bezproblemowe działanie układów hybrydowych.

4. GPGPU

GPGPU to akronim słów General-Purpose Computing on Graphics Processing Units, czyli po polsku obliczenia ogólnego przeznaczenia na układach GPU. Mówiąc generalnie jest to po prostu wykorzystanie układów graficznych do obliczeń niezwiązanych z grafiką. Karty AMD realizują to zadanie poprzez implementację OpenCL. Dla układów, które właśnie wchodzą do gałęzi Legacy jest to OpenCL w wersji 1.0.

Otwarte sterowniki ciągle nie są zdolne do korzystania z OpenCL. Technologia ta jest jednak priorytetem dla drużyny AMD. Praca nad nią wrze, a my możemy się spodziewać wkrótce jej włączenia do głównej gałęzi Mesa.

5. Dodatkowe możliwości

Niewątpliwie dobrą nowiną jest to, że do Mesa 9.0 została włączona obsługa antyaliasingu dla sterownika r600. Antyaliasing cenią sobie osoby, które przekładają jakość wyświetlanego obrazu nad wydajnością. Otwarty sterownik obsługuje więc tryby 2x, 4x i 8x.

Jeżeli chodzi natomiast o zarządzanie energią, to niestety otwarte sterowniki ciągle mają gorszą opinię od zamkniętych odpowiedników. Miejmy nadzieję, że sytuacja się poprawi.

HyperZ jest już leciwą technologią, która pozwala na przyśpieszenie działania Radeonów. Niestety mimo wielu podejść nie udało się jej bezbłędnie przenieść do otwartych sterowników. Wynika to zapewne z bugów w samym sprzęcie (które nie ujawniają się przy stosowaniu Catalystów), a jej stosowanie na otwartych modułach może prowadzić do zawieszania systemu. Można to jednak wymusić poprzez zmienną środowiskową:

RADEON_HYPERZ=1

Jeżeli nie powoduje to zawieszania się twojego komputera, to warto z tego skorzystać.

W tym miejscu należałoby jeszcze wspomnieć o akceleracji 2D. Chociaż nikt tutaj nie przedstawia większych zastrzeżeń wobec otwartych sterowników, to jednak czekają nas pewne zmiany. Zespół AMD zdecydował się, że będzie migrował z metody akceleracji EXA na GLAMOR (dla Radeonów HD 7xxx jest to już jedyna metoda akceleracji). GLAMOR pozwala na akcelerację 2D przy pomocy akceleracji 3D (implementacji OpenGL – Mesa). Niewątpliwą zaletą tego rozwiązania jest mniejszy nakład pracy na obsługę 2D (szczególnie, że GLAMOR jest rozwijany głównie przez Intel China), a w konsekwencji może zaowocować szybszym rozwojem sterowników.

Nie można też zapomnieć o tym, że otwarte sterowniki (w przeciwieństwie do zamkniętych) są już całkowicie przystosowane do obsługi serwera wyświetlania nowej generacji – Wayland. Nie sprawiają też żadnych trudności z działaniem w środowisku Gnome Shell, podczas gdy Catalysty znane są z kłopotliwej jego obsługi.

6. Wydajność

Przechodzimy więc chyba do najbardziej interesującej kwestii. Jak się będzie miała wydajność otwartych sterowników wobec Catalystów? Całkowicie na to pytanie będzie można odpowiedzieć dopiero za rok. Jednak serwis Phoronix, co jakiś czas przeprowadza benchmarki kart graficznych pod Linuksem. Ostatnie porównanie otwartych sterowników do Radeonów z Catalystami odbyło się dla Ubuntu 12.04. Już wtedy Mesa osiągała średnio ponad 60% wydajności zamkniętych modułów (dla kart Legacy). Jest więc miejsce na poprawki. W ciągu roku jednak można liczyć na spore zmiany na lepsze.

Podsumowując, wygląda na to, że tym razem przeniesienie przez AMD części układów do gałęzi Legacy jest robione z głową. Wszyscy otrzymujemy dużo czasu na przygotowanie się i przy odrobinie szczęścia da się przez to przejść w miarę bezboleśnie.


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

7 komentarzy do “AMD Legacy – konsekwecje dla Linuksa

  • Wodzu

    Przed umieszczeniem artykuł dobrze jest sprawdzić pod kątem błędów. W tym artykule są błędy. Podczas pisania na bieżąco na czacie mogą się pojawić błędy, literówki, bo pisze się wolniej niż myśli, ale w artykule przygotowanym błędy są niedopuszczalne. Proszę czytać artykuł przed opublikowanie, bo bez względu na jakość zawsze błędy rażą i dyskwalifikują nawet najlepsze opracowanie. 🙂

    Pozdrawiam,
    Wodzu
    P.S. Gestapo ortograficzne 🙂

  • PL_kolek

    Rażą może i tak, ale na pewno nie dyskwalifikują, bo tekst jest bardzo dobry.

    Czy tylko mnie dziwi, że karty HD 4xxx odchodzą do lamusa według AMD? Przecież chociażby Radek 4850 to była bardzo dobra karta, która wydajnością przewyższa karty w moich komputerach. A wciąż nie napotkałem gry, która wcale nie ruszyłaby na Geforce 9600GT (co prawda chyba najnowszą grą jaką grałem był Wiedźmin, ale…). Dlatego dziwi mnie to posunięcie AMD i mimo tych pochwał za wsparcie dla otwartych sterowników nadal wybierałbym nVidię. 9600GT nigdy nie robił problemów z zamkniętymi sterami.

    No a te słynne problemy z hybrydami to też jakaś dziwna sprawa. Jedyny problem z Bumblebee (wiem, że to nie nVidia zrobiła) jaki miałem, to dziwne problemy z Gothic 2 pod wine (!). Reszta działa i „nawet przełączać” karty mogę. Bez restartu X-ów!

  • kwahoo

    Dziwne żeby Bumblebee restartowało X-y, skoro używa jednocześnie dwóch X-serwerów. Obraz jest przesyłany z użyciem VirtualGL, co stanowi rozwiązanie dalekie od optymalnego

  • PL_kolek

    Nie wiem jak to jest z wydajnością Bumblebee, mi do Team Fortress 2 z pewnością wystarcza. I chyba wolę to niż restart X-ów. Twierdzę tylko, że stwierdzenia o wielkich kłopotach z hybrydami to są najprawdopodobniej przesadzone. Ile się naczytałem o tym zanim kupiłem laptopa. Myślałem, że w zasadzie nie mam wyboru i dostanę sprzęt używalny tylko w połowie, grzejący się i tym podobne. A tu jak zainstalowałem, tak działa.

  • mario_7

    [quote comment=”50746″]Przed umieszczeniem artykuł dobrze jest sprawdzić pod kątem błędów. W tym artykule są błędy. Podczas pisania na bieżąco na czacie mogą się pojawić błędy, literówki, bo pisze się wolniej niż myśli, ale w artykule przygotowanym błędy są niedopuszczalne. Proszę czytać artykuł przed opublikowanie, bo bez względu na jakość zawsze błędy rażą i dyskwalifikują nawet najlepsze opracowanie. 🙂

    Pozdrawiam,
    Wodzu
    P.S. Gestapo ortograficzne :)[/quote]
    Świetnie. A teraz wskaż proszę te błędy, albo daruj sobie takie komentarze.

  • Wodzu

    OK, proszę, o to błąd: „Linuksiarze dostali więc prawie rok czasu na… ” – rok oznacza czas, dlatego błędem jest używanie słowa czas do określenia czasu, więc poprawnie: Linuksiarze dostali więc prawie rok na….

    Nie wskazywałem błędów, bo liczyłem, że autor po przeczytaniu swojego tekstu wyłapie je i poprawi. 🙂