Podrasowywanie otwartych sterowników do grafiki cz.1 12


Mease3D - GearsPierwszą rzeczą jaką zazwyczaj robi wielu użytkowników po instalacji Ubuntu, jest doinstalowanie zamkniętych sterowników do karty graficznej. Otrzymujemy wtedy pełne wsparcie dla OpenGL i innych dodatkowych technologii od ręki i nie musimy się już o nic martwić. Są jednak przypadki, gdy dla danego układu nie ma własnościowych modułów i musimy polegać na otwartych odpowiednikach rozwijanych czy to przez producenta, czy społeczność. Czasami też otwarte sterowniki są stosowane zamiast binarnych odpowiedników z wyboru. W Ubuntu 12.04 obsługa OpenGL przez otwarte sterowniki zapewniana jest przez Mesa3D 8.0. Jest to kawał solidnego oprogramowania, który daje akcelerację 3D na poziomie dotąd nieosiągalnym przez rozwiązania opensource. Mimo iż otwarte sterowniki do kart graficznych są dostępne w systemie zaraz po jego instalacji, to jednak jest kilka rzeczy, które możemy zrobić aby poprawić ich działanie. W tym artykule skupię się na stabilnych rozwiązaniach, które powinni zastosować wszyscy użytkownicy sterowników opensource w Ubuntu 12.04, żeby zwiększyć ich możliwości.

1. Shadery HLSL.

Pomimo iż, OpenGL którego implementację zapewnia Mesa dostarcza własny język shaderów GLSL, to jednak część twórców gier na Linuksa bardziej przywiązanych do platform Microsoftu może chcieć korzystać z języka shaderów HLSL dostarczanego przez DirectX. Narzędzie NVIDIA Cg pozwala na tłumaczenie źródeł HLSL na język GLSL. Nazwa narzędzia jest trochę myląca, gdyż w zasadzie jedyni użytkownicy, którzy nie potrzebują tego programu, to użytkownicy własnościowych modułów NVIDIA, gdyż ów kompilator wbudowany jest we własnościowe sterowniki tej firmy. Użytkownicy innych rozwiązań (w tym własnościowych modułów AMD) mogą doinstalować kompilator poleceniem:

sudo apt-get install nvidia-cg-toolkit

Ponieważ jest to zamknięte oprogramowanie firmy NVIDIA, to producenci gier nie zawsze mogą dołączyć tę bibliotekę do swojego produktu, więc warto mieć doinstalowany ten kompilator w systemie. Kilka gier, które korzystają z tego rozwiązania: Family Farm, Tiny and Big, Greedy Car Thieves.

Jak już mówimy o HLSL, to wypada jeszcze wspomnieć o narzędziu MojoShader. Jest to program umożliwiający korzystanie wprost z binarnej postaci szaderów HLSL. Ponieważ jednak rozwijany jest na otwartej licencji zlib licence, to binarna forma tej biblioteki jest wbudowana wprost w grę, a użytkownik nie musi nic doinstalowywać. Niektóre gry, które korzystają z tego rozwiązania: Unreal Tournament 3, Shank.

2. S3 Texture Compression

S3TC, jest to technologia kompresji tekstur, która została wprowadzona już w OpenGL 1.3 i jest powszechnie używana w większości współczesnych gier. Niestety próżno jest szukać jej implementacji w Mesa, gdyż jest to opatentowana technologia. Na szczęście patenty na oprogramowanie nie dotyczą Unii Europejskiej, a obsługę tego rozszerzenia przez otwarte sterowniki można łatwo doinstalować:

sudo add-apt-repository ppa:makson96/mesa
sudo apt-get update
sudo apt-get install libtxc-dxtn0

Użytkownicy 64-bitowego Ubuntu powinni doinstalować także 32-bitową wersję tej biblioteki, co pozwoli na korzystanie z niej przez 32-bitowe gry:

sudo apt-get install libtxc-dxtn0:i386

Doinstalowanie tej biblioteki ogromnie zwiększa funkcjonalność otwartych sterowników.

3. 32-bitowe sterowniki dla 64-bitowego systemu

Chociaż może to nie być oczywiste, to 32-bitowe programy na 64-bitowym systemie nie będą domyślnie w stanie korzystać z Mesa3D. W tym celu należy doinstalować 32-bitową wersję tej biblioteki. Osobiście polecam instalację metapakietu:

sudo apt-get install ia32-libs

Poza otwartymi sterownikami w 32-bitowej wersji ten metapakiet doinstaluje także wiele powszechnie stosowanych 32-bitowych bibliotek, co w zupełności powinno wystarczyć do uruchomienia 32-bitowych gier. Warto jeszcze wspomnieć, że na 64-bitowym systemie w przypadku instalacji własnościowych sterowników, zawierają one już w sobie odpowiednie 32-bitowe biblioteki, a użytkownik nie powinien kombinować samemu z instalacją 32-bitowej wersji zamkniętego sterownika.

4. Akceleracja wideo

Chociaż akceleracja wideo dla wielu otwartych sterowników jest jeszcze w powijakach, to jednak karty graficzne Intel GMA X4500 i nowsze tego producenta już w Ubuntu 12.04 mogą dokonywać akceleracji wideo z zastosowaniem VA-API. Akceleracja wideo to tak naprawdę dekodowanie filmów na karcie graficznej, zamiast na procesorze głównym. Powoduje to oszczędniejszą pracę komputera, a w konsekwencji dłuższą pracę laptopa na baterii i mniejsze się jego nagrzewanie. Żeby przygotować komputer do akceleracji wideo należy doinstalować następujące pakiety:

sudo apt-get install libva-intel-vaapi-driver libva-x11-1 vainfo

Następnie w terminalu należy wpisać:

vainfo

Otrzymamy wpis podobny do poniższego zrzutu ekranu.

Mówi on nam nie tylko o tym, że akceleracja działa, ale także pokazuje, jakie kodeki mogą być dekodowane na karcie graficznej.

Z akceleracji wideo najlepiej skorzystać w odtwarzaczu multimediów VLC, gdyż niezmodyfikowany MPlayer nie obsługuje VA-API. Instalujemy VLC poleceniem:

sudo apt-get install vlc

A akcelerację wideo włączamy w programie wybierając Narzędzia->Preferencje->Wejście i kodeki, i zaznaczając „Use GPU accelerated decoding” jak na poniższym obrazku.

To wszystko. Po przeprowadzeniu opisanych przeze mnie czynności możemy w pełni cieszyć się możliwościami otwartych sterowników do kart graficznych. W następnym artykule skupię się na nie do końca stabilnych metodach zwiększania wydajności otwartych sterowników.


Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

12 komentarzy do “Podrasowywanie otwartych sterowników do grafiki cz.1

  • ionash.

    „[…] gdyż owy kompilator […]” O ludu! ÓW kompilator!
    Ów, owa, owo, owi, owe! Przepisać sto razy, żeby się utrwaliło! Co za […] wymyślił tę potworność „owy”?!
    No i drugi „ulubiony” błąd internautów ” […] to tak na prawdę […]”.
    Na prawdę to można się powoływać lub zaklinać, ale naprawdę nie zmieni to faktu, że „na prawdę” znaczy coś zupełnie innego, niż „naprawdę”.
    To NAPRAWDĘ równie głupie, co pisać „na reszcie przyszedłeś”, „na dworny błazen” czy „załóż na kolanniki”.

    NAPRAWDĘ jest przykro, gdy porządnie od strony merytorycznej przygotowany artykuł psuje się tak idiotycznymi błędami.

  • pawiecki

    @ionash a czy nie prościej by było gdybyś skontaktował się z ekipą ubuntu.pl i zaproponował swoją pomoc w korekcie przed publikowaniem wpisów?

  • mario_7

    [quote comment=”50269″]”[…] gdyż owy kompilator […]” O ludu! ÓW kompilator!
    Ów, owa, owo, owi, owe! Przepisać sto razy, żeby się utrwaliło! Co za […] wymyślił tę potworność „owy”?!
    No i drugi „ulubiony” błąd internautów ” […] to tak na prawdę […]”.
    Na prawdę to można się powoływać lub zaklinać, ale naprawdę nie zmieni to faktu, że „na prawdę” znaczy coś zupełnie innego, niż „naprawdę”.
    To NAPRAWDĘ równie głupie, co pisać „na reszcie przyszedłeś”, „na dworny błazen” czy „załóż na kolanniki”.

    NAPRAWDĘ jest przykro, gdy porządnie od strony merytorycznej przygotowany artykuł psuje się tak idiotycznymi błędami.[/quote]
    Dziękujemy panie wszechwiedzący i nieomylny!
    Już chyba kiedyś zwracałem Ci uwagę – daruj sobie te uszczypliwości.
    Co innego zwrócić grzecznie uwagę, a co innego besztać ludzi, za to że śmieli opublikować kawał dobrego tekstu z kosmetycznymi błędami, rzekłbym nawet literówkami…

  • makson Autor wpisu

    @BeeSel
    Zarówno s3tc, nvidia cg compiler i 32 bitowe stery to też porady dla właścicieli starych Radeonów.
    O Radeonach będzie więcej w drugim artykule z agresywniejszym podkręcaniem sterów. Będzie on, jak go napiszę, ale najpierw mam wenę na inny artykuł, więc musisz poczekać kilka tygodni.

  • niepismienny

    Niech mi ktoś powie, jak ustawić większą rozdzielczość na ubu 12.04 ? Do tej pory pomagała modyfikacja pliku xorg.conf z uprawnieniami administratora. Teraz po każdym wyłączeniu komputera ekran wraca do ustawien domyślnych.