Programowe renderowanie – benchmark 3


image jpg 1269-194W komputerach PC tradycyjnie do generowania grafiki 3D korzysta się ze specjalnej dedykowanej jednostki zwanej kartą graficzną. Ponieważ główni producenci tych układów – Nvidia, AMD i Intel dostarczają dla nich pełne wsparcie pod Linuksa, to za implementację OpenGL (grafikę 3D) odpowiadają sterowniki od producenta. A co w przypadku, gdy grafika nie jest wspierana przez żaden sterownik (np. SIS, UniChrome, Voodoo, Rage, itp.) lub gdy karta graficzna jest uszkodzona? Na współczesnym desktopie grafika 3D nie jest wykorzystywana tylko do gier, ale może być niezbędnym wymaganiem środowiska graficznego. Brak obsługi OpenGL może więc całkowicie uniemożliwić korzystanie z komputera. Z tym problemem usiłują się uporać sterowniki do „programowego renderowania grafiki”, czyli przetwarzania wywołań OpenGL w całości na głównym procesorze CPU bez konieczności korzystania z karty graficznej. W niniejszym artykule przyjrzę się bliżej tym rozwiązaniom pod kątem nadchodzącego wydania Ubuntu 12.04 LTS.

Komputer wykorzystany do testów to:

  • Procesor: Intel Core 2 6300 @ 1.87GHz (2 rdzenie)
  • Płyta główna: Gigabyte 965P-DS3
  • Chipset: Intel 82P965/G965 + ICH8/R
  • Pamięć: 6144MB DDR2
  • Dysk: 1000GB SAMSUNG HD103SJ
  • Monitor: P19-2

Wydajność programowego przetwarzania OpenGL przetestowałem przy pomocy Phoronix Test Suite 3.6.1 dla następujących sterowników:

Ubuntu 12.04 Alpha2 + Software Rasterizer

Ubuntu 12.04 Alpha2 + Software Rasterizer: Jest to sterownik oparty o klasyczną Mesa. Towarzyszył Ubuntu od dawna i był ciągle domyślnym sterownikiem w przypadku braku sprzętowej akceleracji w Ubuntu 11.10. Jest on jednak mało wydajny, a twórcy otwartych sterowników coraz bardziej go zaniedbują na rzecz innych rozwiązań. Wszystko wskazuje na to, że sterownik ten zostanie porzucony w nadchodzącym Ubuntu 12.04. Do testów skompilowałem sterownik wraz z odblokowaniem opatentowanych technologii. Ponieważ nie chciał się poprawnie zbudować z gałęzi git master, to skorzystałem z zamrażanej wersji Mesa 8.0-rc2.

Ubuntu 12.04 Alpha 2 + Softpipe

Ubuntu 12.04 Alpha 2 + Softpipe: Jeden z pierwotnych sterowników Gallium3D. Ze względu na swoją nowoczesną architekturę stał się referencyjnym sterownikiem do programowego przetwarzania grafiki. Oczy was nie mylą. Po odblokowaniu opatentowanych technologii sterownik ten już w Ubuntu 12.04 zapewni pełne wsparcie dla OpenGL 3.0 i GLSL 1.30.

Ubuntu 12.04 Alpha2 + llvmpipe

Ubuntu 12.04 Alpha2 + llvmpipe: Ten sterownik jest forkiem projektu softpipe. Dzięki wykorzystaniu kompilatora llvm do dynamicznego tworzeniu kodu dla procesora, ma on zapewniać ogromny wzrost wydajności względem pozostałych projektów. Ze względu na złożoność zagadnienia nie wszystkie elementy softpipe zostały jeszcze do niego przeniesione, a w efekcie nie obsługuje OpenGL 3.0 i pozostaje w świecie 2.1. Najprawdopodobniej będzie to też domyślny sterownik w przypadku braku sprzętowej akceleracji w Ubuntu 12.04.

Ponieważ zastosowany procesor Intel Core 2 Duo E6300 nie jest obecnym liderem wydajności, a programowe przetwarzanie grafiki jest bardzo wolne, to zamieszczam rezultaty tylko jednego benchmarku i to w niskiej rozdzielczości. Przygotowanie większej ilości benchmarków na tym sprzęcie i tych sterownikach zajęłoby wieki, gdyż rzadko kiedy uzyskiwało się wynik powyżej 0,1 FPS.

Jak widać Softpipe pomimo iż oferuje znacznie bogatszą implementację OpenGL niż Software Rasterizer, to jednak nie jest w stanie zapewnić lepszej wydajności. Pod tym względem góruje natomiast llvmpipe, który jest wielokrotnie wydajniejszy od swoich konkurentów.

Podsumowując wygląda na to, iż Canonical słusznie zadecydowało o wyborze llvmpipe jako domyślnego sterownika do przetwarzania grafiki 3D w przypadku braku akceleracji sprzętowej dla Ubuntu 12.04. Zapewni on zdecydowanie większą wydajność, niż wcześniejsze rozwiązania. Należy jeszcze wspomnieć, że zarówno softpipe, jak i llvmpipe umożliwiają korzystanie z Unity3D/GNOME Shell/Compiz. To już najwyższy czas, żeby pozwolić klasycznemu Software Rasterizer umrzeć i zacząć z nadzieją spoglądać na rozwój Gallium3D llvmpipe.

Wynik benchmarku zamieściłem na OpenBenchmarking.org, gdzie może być dokładniej obejrzany.


Dodaj komentarz

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

3 komentarzy do “Programowe renderowanie – benchmark