heise open source

Wiadomości i artykuły heise Open Source

17 listopada 2009, 08:00

Thorsten Leemhuis, Krzysztof Sokołowski

Jądro Linux – co przyniesie wersja 2.6.32, cz. II: sterowniki dla kart graficznych i zintegrowanych chipsetów

Użytkownicy kart graficznych AMD/ATI będą mogli zrezygnować z własnościowych sterowników

Kolejna wersja kernela będzie w pełni obsługiwać akcelerację grafiki 3D w kartach Radeon z serii 2000, 3000 i 4000. Natomiast sterowniki dla układów graficznych Intela uwzględniają nowe funkcje oszczędzania energii i powinny lepiej działać przede wszystkim ze starszymi modelami chipsetów płyt głównych. Ponadto programiści ulepszyli także obsługę wyjść TV w układach AMD i Intela.

Na początku listopada Linus Torvalds opublikował wersję 2.6.32-rc6 – z uwagi na konferencję Kernel Summit szósta wersja przedwstępna ukazała się nie jak zazwyczaj tydzień, lecz dwa tygodnie po rc5. Na tym etapie rozwoju typowe jest, że integrowane z jądrem patche są raczej niewielkie, co ma zapewnić uniknięcie wprowadzania zmian mogących wywołać nowe błędy w okresie najbliższych trzech do sześciu tygodni, aż do momentu publikacji finalnego wydania kernela 2.6.32.

Po opisaniu w poprzednim artykule z serii Jądro Linux zmian w podsystemie sieci, niniejszy tekst jest poświęcony najważniejszym nowościom wokół obsługi urządzeń graficznych. Na niektóre z pewnością czeka wielu użytkowników, odkąd koncern AMD znów zaczął ściślej współpracować z programistami Open Source.

3D i KMS dla Radeonów

Kernel i Direct Rendering Manager (DRM) będą teraz obsługiwały funkcję 3D i tryb Kernel-based Mode Setting (KMS) dla układów graficznych AMD z serii R600 i R700. Dotyczy to modeli Radeonów z serii 2000, 3000 i 4000 – a więc najczęściej sprzedawanych w ostatnich dwóch, trzech latach kart Radeon, a także różnych chipsetów płyt głównych AMD z serii 700.

Aby jednak wspomniana obsługa funkcji 3D i trybu KMS mogła zadziałać, konieczna jest instalacja specjalnie dostosowanych wersji bibliotek libdrm i Mesa 3D, a także odpowiednich sterowników graficznych dla X.org. Poprawne skonfigurowanie takiego stosu programowego jest zadaniem przeznaczonym raczej dla bardziej zaawansowanych użytkowników – na szczęście projekt Fedora chce przygotować wszystkie potrzebne komponenty w eksperymentalnym pakiecie, który będzie zawarty w oczekiwanej w połowie listopada dystrybucji Fedora 12.

W sterowniku do obsługi trybu KMS w układach Radeon znajdziemy w przyszłości także podstawową obsługę aktywacji wyjść TV. Sterownik KMS dla układów graficznych Intela zapewniał to już wcześniej, ale teraz współpracuje z większą liczbą chipów SDVO, korzystając przy tym z nowych funkcji (1, 2, 3).

Począwszy od wersji 2.6.32, kod obsługi KMS w układach Intela kompresuje ponadto pamięć bufora ramki, co według obietnic programistów ma przynieść oszczędność w poborze mocy na poziomie do 0,5 W; z kolei nowa funkcja dynamicznego dostosowywania częstotliwości taktowania (Dynamic Clock Frequency Control) ma przy nieobciążonym systemie przyczynić się do dalszych oszczędności energii i wydłużenia czasu pracy baterii notebooków przez redukcję częstotliwości taktowania układu i pamięci. Ponadto intelowski sterownik wydajniej korzysta z pamięci graficznej (1, 2) i próbuje na nowo inicjalizować układy graficzne, w których wystąpiły błędy i np. zaprzestały działania.

Koordynacja

Programiści kernela wprowadzili do jądra także łaty mechanizmu VGA Arbitration (1, 2, dokumentacja). W systemach z większą liczbą kart graficznych i X-serwerem w wersji od 1.7 sprawiają one, że polecenia VGA X serwera zostaną zawsze skierowane do właściwej karty graficznej – ma to zagwarantować znacznie większą elastyczność w konfigurowaniu środowisk wielosesyjnych.

Poniżej lista dalszych zmian związanych z obsługą układów graficznych w kernelu:

  • Za pośrednictwem wykorzystywanego w trybie KMS parametru video= będzie można definiować rozdzielczości ekranowe dla pojedynczych lub wszystkich monitorów.
  • Powiązany dotychczas ściśle ze sterownikami do obsługi Radeonów kod firmware’u tych układów został wydzielony do osobnych plików i będzie ładowany za pomocą specjalnego tzw. loadera. Podobna zmiana zaszła także w kodzie sterowników dla kart graficznych Matrox.
  • Nowością jest sterownik bufora ramki dla zintegrowanych (SoC) układów MSM/QSD firmy Qualcomm, które są stosowane np. w smartfonie HTC Dream.
  • Programiści dokonali modyfikacji w ścieżkach kodu używanych przez sterowniki Radeon podczas inicjalizacji sprzętu. Ma to im ułatwić utrzymanie kodu, a także poprawić zachowanie mechanizmów usypiania (Suspend) i wybudzania (Resume) – wykaz konkretnych zmian w kodzie (commitów) znajduje się na liście na końcu tego artykułu. Utrzymanie sterowników powinno być też prostsze dzięki uwspólnieniu niektórych fragmentów kodu do obsługi trybu KMS dla układów AMD i Intela.
  • Sterownik bufora ramki dla układów graficznych VIA obsługuje teraz także chipset VX855. Ponadto programiści przepisali na nowo silnik 2D sterownika VIA.
  • Dzięki wprowadzeniu nowych punktów śledzenia kodu (tracepoints) możliwa będzie lepsza obserwacja zachowania kodu DRM przeznaczonego dla aktualnych układów graficznych Intela.
  • Usunięte zostały liczne błędy związane z obsługą intelowskich układów z serii 8xx, które pojawiły się, począwszy od wprowadzenia do kernela w wersji 2.6.27 mechanizmu GEM.
  • Kod KMS dla Radeonów obsługuje teraz tryb Surround View umożliwiający równoległe działanie karty graficznej Radeon wraz z GPU zintegrowanym na płycie głównej.

Inne zmiany

Poniżej znajduje się wykaz dalszych, nieco mniej ważnych, ale wciąż istotnych zmian. Poszczególne angielskojęzyczne odnośniki wskazują na opisy konkretnego wprowadzenia kodu (commita) w umieszczonym na stronie kernel.org interfejsie WWW nadzorowanej przez Linusa Torvaldsa gałęzi repozytorium Git ze źródłami jądra. Komentarze do commitów, a także same łaty dostarczają następnych informacji na temat konkretnych zmian.

  • Podziel się
  • Wykop.pl
  • StumbleUpon
  • del.icio.us
  • OSnews.pl