Bezpłatny i otwarty sterownik urządzenia graficznego — Free and open-source graphics device driver

Schemat blokowy z Tuxem, pingwinem Linuksa
Dane i instrukcje są wysyłane do procesora graficznego w celu przetworzenia. Wyrenderowane wyniki są przechowywane w buforze ramki , którego zawartość jest skanowana przez kontroler wyświetlania i wysyłana na ekran.

Karty graficzne i FOSS jest stos oprogramowanie , które steruje sprzętu komputerowego-grafiki i obsługuje grafiki renderowania interfejsów programowania aplikacji (API) i jest wydany na wolnej i open-source software licencji. Sterowniki urządzeń graficznych są napisane dla określonego sprzętu do pracy w określonym jądrze systemu operacyjnego i obsługi szeregu interfejsów API używanych przez aplikacje w celu uzyskania dostępu do sprzętu graficznego. Mogą również sterować wyjściem na wyświetlacz, jeśli sterownik ekranu jest częścią sprzętu graficznego. Większość bezpłatnych sterowników urządzeń graficznych o otwartym kodzie źródłowym jest opracowywanych przez projekt Mesa . Sterownik składa się z kompilatora , renderującego API i oprogramowania, które zarządza dostępem do sprzętu graficznego.

Sterowniki bez swobodnie (i legalnie) dostępnego kodu źródłowego są powszechnie znane jako sterowniki binarne . Sterowniki binarne używane w kontekście systemów operacyjnych, które są podatne na ciągły rozwój i zmiany (takie jak Linux), stwarzają problemy użytkownikom końcowym i opiekunom pakietów . Te problemy, które wpływają na stabilność, bezpieczeństwo i wydajność systemu, są głównym powodem niezależnego rozwoju darmowych i open-source sterowników. Gdy nie jest dostępna żadna dokumentacja techniczna, zrozumienie podstawowego sprzętu jest często uzyskiwane dzięki inżynierii wstecznej w czystym pomieszczeniu . W oparciu o to zrozumienie sterowniki urządzeń mogą być pisane i legalnie publikowane w ramach dowolnej licencji na oprogramowanie .

W rzadkich przypadkach kod źródłowy sterownika producenta jest dostępny w Internecie bez bezpłatnej licencji . Oznacza to, że kod może być badany i zmieniany do użytku osobistego, ale zmieniony (i zwykle oryginalny) kod źródłowy nie może być swobodnie rozpowszechniany. Rozwiązania błędów w sterowniku nie mogą być łatwo udostępniane w postaci zmodyfikowanych wersji sterownika. Dlatego użyteczność takich sterowników jest znacznie zmniejszona w porównaniu do sterowników darmowych i open-source.

Problemy z zastrzeżonymi sterownikami

Okiem programisty

Schemat blokowy;  patrz podpis
Ilustracja stosu graficznego Linuksa

Istnieją zastrzeżenia do sterowników tylko binarnych, oparte na prawach autorskich, bezpieczeństwie, niezawodności i problemach programistycznych. W ramach szerszej kampanii przeciwko binarnym blobom , główny programista OpenBSD, Theo de Raadt, powiedział, że ze sterownikiem binarnym „nie ma sposobu, aby go naprawić, gdy się zepsuje (i się zepsuje)”; kiedy produkt, który opiera się na sterownikach binarnych, zostanie ogłoszony przez producenta jako wycofany z eksploatacji , jest on faktycznie „zepsuty na zawsze”. Projekt stwierdził również, że sterowniki binarne „ukrywają błędy i ich obejścia”, co zostało nieco potwierdzone przez błędy wykryte w sterownikach binarnych (w tym błąd, który można wykorzystać w sterownikach 3D Nvidii, odkryty w październiku 2006 r. przez Rapid7 ). Spekuluje się, że błąd istnieje od 2004 roku; Nvidia zaprzeczyła temu, twierdząc, że problem został im zgłoszony dopiero w lipcu 2006 roku, a błąd z 2004 roku był błędem w X.Org (nie w sterowniku Nvidii).

Sterowniki binarne często nie działają z aktualnymi wersjami oprogramowania open source i prawie nigdy nie obsługują migawek programistycznych oprogramowania open source; zazwyczaj nie jest bezpośrednio możliwe, aby programista używał zastrzeżonych sterowników Nvidii lub ATI z migawką deweloperską serwera X lub migawką deweloperską jądra Linuksa. Funkcje takie jak ustawienie trybu jądra nie mogą być dodawane do sterowników binarnych przez nikogo poza dostawcami, co uniemożliwia ich włączenie, jeśli dostawca nie ma możliwości lub zainteresowania.

W społeczności programistów jądra Linuksa Linus Torvalds wygłosił mocne oświadczenie w kwestii modułów tylko binarnych: „ Odmawiam nawet rozważenia związania rąk nad jakimś modułem tylko binarnym… Chcę, aby ludzie wiedzieli o tym, kiedy używają binarnego -tylko moduły, to ich problem". Inny twórca jądra, Greg Kroah-Hartman , powiedział, że moduł jądra tylko w wersji binarnej nie jest zgodny z licencją jądra ( GNU General Public License ); to „po prostu narusza GPL z powodu zabawnych rzeczy, takich jak prace pochodne, linki i inne rzeczy”. Pisarz i informatyk Peter Gutmann wyraził zaniepokojenie, że schemat zarządzania prawami cyfrowymi w systemie operacyjnym Microsoft Windows Vista może ograniczać dostępność dokumentacji wymaganej do pisania otwartych sterowników, ponieważ „wymaga, aby szczegóły operacyjne urządzenia były poufne”.

W przypadku sterowników binarnych istnieją zastrzeżenia ze względu na filozofię wolnego oprogramowania , jakość oprogramowania i obawy dotyczące bezpieczeństwa . W 2006 roku Greg Kroah-Hartman stwierdził, że:

„Moduły jądra Linuksa o zamkniętym kodzie źródłowym są nielegalne. To wszystko, to bardzo proste. Przez lata miałem nieszczęście rozmawiać na ten temat z wieloma różnymi prawnikami zajmującymi się prawami własności intelektualnej i wszyscy, z którymi rozmawiałem, zgadzają się że nie ma dziś możliwości, aby ktokolwiek mógł stworzyć moduł jądra Linuksa, który może być zamkniętym źródłem. Po prostu narusza GPL z powodu zabawnych rzeczy, takich jak prace pochodne i linkowanie ”.

Jądro Linux nigdy nie utrzymywało stabilnego interfejsu binarnego aplikacji wewnątrz jądra . Istnieją również obawy, że zastrzeżone sterowniki mogą zawierać backdoory , takie jak te, które można znaleźć w sterownikach modemów z serii Samsung Galaxy .

Widok dewelopera sprzętu

Kolejny schemat blokowy;  patrz podpis
W przyszłości libGL-fglrx-glx może używać libDRM sterownika Radeon o otwartym kodzie źródłowym zamiast zastrzeżonego binarnego obiektu blob ; większość inwestycji dotyczy sterownika przestrzeni użytkownika.

Gdy aplikacje, takie jak silnik gier 3D lub oprogramowanie do grafiki komputerowej 3D, przekierowują obliczenia z procesora do karty graficznej, zwykle używają specjalnego interfejsu API, takiego jak OpenGL lub Direct3D, i nie odnoszą się bezpośrednio do sprzętu. Ponieważ wszystkie tłumaczenia (od wywołań API do opkodów GPU ) są wykonywane przez sterownik urządzenia, zawiera on specjalistyczną wiedzę i jest przedmiotem optymalizacji. Ze względu na historię sztywności opracowywania własnych sterowników nastąpił ostatnio wzrost liczby wspieranych przez społeczność sterowników urządzeń dla desktopowych i mobilnych procesorów graficznych. Organizacje wolnego i otwartego sprzętu, takie jak FOSSi, LowRISC i inne, również skorzystałyby na rozwoju otwartego graficznego standardu sprzętowego. Zapewniłoby to producentom komputerów, hobbystom i tym podobnym kompletną, bezpłatną platformę, za pomocą której mogliby rozwijać sprzęt komputerowy i powiązane urządzenia.

Rynek komputerów stacjonarnych przez długi czas był zdominowany przez sprzęt komputerowy wykorzystujący zestaw instrukcji x86 / x86-64 i procesory graficzne dostępne dla komputerów PC. Z trzema głównymi konkurentami (Nvidia, AMD i Intel). Głównym czynnikiem konkurencyjnym była cena sprzętu i surowa wydajność w grach komputerowych 3D, na którą duży wpływ ma wydajna translacja wywołań API na kody GPU. Sterownik ekranu i dekoder wideo są nieodłącznymi częściami karty graficznej: sprzętem zaprojektowanym do pomocy w obliczeniach niezbędnych do dekodowania strumieni wideo. Ponieważ rynek sprzętu komputerowego kurczył się, wydaje się mało prawdopodobne, że nowi konkurenci wejdą na ten rynek i nie jest jasne, o ile więcej wiedzy jedna firma może zyskać, widząc kod źródłowy sterowników innych firm.

Sektor telefonii komórkowej przedstawia inną sytuację. Bloki funkcjonalne ( sterownik wyświetlacza układu scalonego specyficzny dla aplikacji , akceleracja 2 i 3D oraz dekodowanie i kodowanie wideo) są oddzielnymi blokami półprzewodnikowej własności intelektualnej (SIP) na chipie, ponieważ urządzenia sprzętowe znacznie się różnią; niektóre przenośne odtwarzacze multimedialne wymagają sterownika ekranu, który przyspiesza dekodowanie wideo, ale nie wymaga akceleracji 3D. Celem rozwoju jest nie tylko surowa wydajność 3D, ale integracja systemu, zużycie energii i możliwości 2D. Istnieje również podejście, które rezygnuje z tradycyjnej metody ( Vsync ) aktualizacji wyświetlacza i lepiej wykorzystuje technologię próbkowania i trzymania w celu obniżenia zużycia energii.

W drugim kwartale 2013 roku 79,3 procent smartfonów sprzedawanych na całym świecie korzystało z wersji Androida , a w smartfonach dominuje jądro Linux. Deweloperzy sprzętu mają motywację do dostarczania sterowników linuksowych do swojego sprzętu, ale ze względu na konkurencję nie mają motywacji, aby udostępniać te sterowniki jako wolne i open-source. Dodatkowymi problemami są specyficzne dla Androida rozszerzenia jądra Linux, które nie zostały zaakceptowane w mainline , takie jak Atomic Display Framework (ADF). ADF jest funkcją jądra 3.10 AOSP, która zapewnia strukturę zorientowaną na dma-buf między warstwą HAL hwcomposer systemu Android a sterownikiem jądra. ADF w znacznym stopniu pokrywa się z frameworkiem DRM - KMS . ADF nie został zaakceptowany do mainline, ale opracowywany jest inny zestaw rozwiązań dotyczących tych samych problemów (znany jako ustawienie trybu atomowego ). Projekty takie jak libhybris wykorzystują sterowniki urządzeń z systemem Android do uruchamiania na platformach Linux innych niż Android.

Porównania wydajności

Trzy biegi: czerwony, niebieski i zielony
Glxgears nie nadaje się do testów porównawczych .

Phoronix , który porównuje darmowe sterowniki, jest źródłem do testów w świecie rzeczywistym:

  • 19 marca 2011
  • 31 marca 2013 r.
  • Porównanie sterowników FOSS i firmowych z 29 kwietnia 2013 r.
  • Porównanie własnościowych sterowników w systemach Windows 8.1 i Linux z 27 października 2013 r.
  • Porównanie sterowników FOSS w systemie Linux z 25 stycznia 2014 r.
  • Porównanie własnościowych sterowników w systemie Linux z 27 stycznia 2014 r.
  • Porównanie Ubuntu z 19 marca 2014 r. z bezpłatnym i otwartym sterownikiem graficznym dystrybuowanym jako część Mesa 3D , który przewyższa Mac OS X 10.9.2 podczas grania w Xonotic oparty na OpenGL na MacBooku Air z 2013 roku .
  • Porównanie ze stycznia 2017 r. wykazało różnicę w mocy między przetwornikiem Mesa Nouveau i NVidii a Keplerem i Maxwellem. Reclocking jest potrzebny, aby Maxwell w Nouveau podniósł poziom do Keplera. Luka do Mesy istnieje od 30 do 50% w podstawowej sprawności sterownika w stosunku do Nvidii we wszystkich układach.
  • Porównanie z lutego 2017 r. wykazało, że Mesa 17.1dev był równy lub lepszy niż sterownik GPU AMD 16.60 w OpenGL i 20-30 procent niższy w Vulkan .
  • Porównanie z marca 2017 r. wykazało ulepszenia w Mesa dla RadeonSI między wersjami 11.1 i 17.1.
  • Porównanie z czerwca 2017 r. Windows 10 Radeon Software vs. Ubuntu 17.04 + Linux 4.12 + Mesa 17.2-dev -> Wynik mesa radeonsi na tym samym poziomie
  • Porównanie RadeonSI/RADV Mesa 17.3 + AMDGPU DC z października 2017 r. z zastrzeżonym rozwiązaniem NVIDIA 387.12 Linux Gaming Performance -> Wynik: Nvidia na czele
  • 2018-02: Porównanie Mesa 12 do 18 z AMD R580 i R9 Fury do testów OpenGL i Vulkan
  • 2018-06: Porównanie Mesa 18.2 ze sterownikiem Nvidia 396 z kartami Nvidia GeForce 680 i nowszymi
  • 2018-07: Porównanie Mesa RadeonSI 18.0, 18.1, 18.2 i RadV z kartami Radeon RX
  • 2018-10: Porównanie zamkniętego sterownika AMD 18.40, AMDVLK i Mesa RadeonSI 18,2, 18,3
  • 2018-11: Porównanie 25 kart AMD i Nvidia z Mesa 19.0dev i sterownikiem NVIDIA 415
  • 2019-01: Porównanie kart Linux 5.0 + Mesa 19.0dev + AMD RX i sterownika NVIDIA GeForce 415 z kartami Nvidia
  • 2019-01: Porównanie Mesa 18.2, 18.3, 19.0dev RadeonSI/RADV z kartami AMD RX
  • 2019-05: Porównanie Mesa 19.2 AMD Polaris, Vega i Nvidia
  • 2019-12: Porównanie Mesa 18.2.8 z 20.0dev dla RadeonSI z Radeonem RX 580 i RX Vega 64

Czasopisma o grach wideo rzadko zgłaszają testy porównawcze na Linuksie. Testy porównawcze na Phoronix mają ograniczony zakres, głównie testują gry dostępne w systemie Linux i obsługują zautomatyzowane testy porównawcze.

Architektura oprogramowania

Ilustracja różnic między modelami Gallium3D i Direct Rendering Infrastructure
Chociaż Mesa ( DRI ) i Gallium3D mają różne modele sterowników, dzielą się darmowym kodem o otwartym kodzie źródłowym.
Przykładowa macierz sterownika
Przykładowa macierz modelu sterownika Gallium3D. Wraz z wprowadzeniem interfejsów Gallium3D tracker i WinSys, wymaganych jest 18 modułów zamiast 36. Każdy moduł WinSys może współpracować z każdym modułem sterownika urządzenia Gallium3D i każdym modułem State Tracker.

Darmowe sterowniki i sterowniki typu open source są opracowywane głównie w systemie Linux i dla systemu Linux przez programistów jądra systemu Linux, zewnętrznych entuzjastów programowania i pracowników firm takich jak Advanced Micro Devices . Każdy sterownik składa się z pięciu części:

  1. Komponent jądra Linux DRM
  2. Sterownik KMS składnika jądra systemu Linux ( sterownik kontrolera wyświetlania )
  3. Komponent przestrzeni użytkownika libDRM (biblioteka opakowująca dla wywołań systemowych DRM, która powinna być używana tylko przez Mesa 3D)
  4. Mesa 3D komponent przestrzeni użytkownika. Ten składnik jest specyficzny dla sprzętu; jest wykonywany na procesorze i tłumaczy polecenia OpenGL, na przykład, na kod maszynowy dla GPU. Ponieważ sterownik urządzenia jest podzielony, możliwe jest marshalling . Mesa 3D jest jedyną bezpłatną i otwartą implementacją OpenGL , OpenGL ES , OpenVG , GLX , EGL i OpenCL . W lipcu 2014 r. większość komponentów była zgodna ze specyfikacją Gallium3D . W pełni funkcjonalny State Tracker dla Direct3D w wersji 9 jest napisany w C , a nieobsługiwany tracker dla Direct3D w wersjach 10 i 11 jest napisany w C++ . Wine ma Direct3D w wersji 9. Inny komponent Wine tłumaczy wywołania Direct3D na wywołania OpenGL, współpracując z OpenGL.
  5. Device Dependent X (DDX), kolejny sterownik urządzenia graficznego 2D dla serwera X.Org

DRM jest jądro -specyficznych. VESA kierowca jest ogólnie dostępny dla każdego systemu operacyjnego. Sterownik VESA obsługuje większość kart graficznych bez akceleracji i przy rozdzielczościach wyświetlania ograniczonych do zestawu zaprogramowanego w BIOS-ie wideo przez producenta.

Historia

Stos graficzny Linuksa ewoluował, omijany przez podstawowy protokół X Window System .

Darmowe i open-source sterowniki

ATI i AMD

Radeon

Diagram
Sterowniki urządzeń dla systemu Linux dla sprzętu AMD w sierpniu 2016 r.

AMD własnościowy sterownik, AMD Catalyst dla swojego Radeona , jest dostępny dla systemów Microsoft Windows i Linux (dawniej fglrx). Aktualną wersję można pobrać ze strony AMD, a niektóre dystrybucje Linuksa zawierają ją w swoich repozytoriach. Jest w trakcie zastępowania hybrydowym sterownikiem AMDGPU-PRO łączącym jądro open-source, sterowniki multimedialne X i Mesa ze sterownikami OpenGL, OpenCL i Vulkan o zamkniętym kodzie źródłowym pochodzącymi z Catalyst.

Sterowniki FOSS dla procesorów graficznych ATI -AMD są rozwijane pod nazwą Radeon (xf86-video-ati lub xserver-xorg-video-radeon). Nadal muszą załadować własny mikrokod do GPU, aby umożliwić przyspieszenie sprzętowe.

Kod Radeon 3D jest podzielony na sześć sterowników, zgodnie z technologią GPU: sterowniki radeon, r200 i r300 classic oraz r300g, r600g i radeonsi Gallium3D :

Dostępna jest aktualna macierz funkcji, a także wsparcie dla Video Coding Engine i Unified Video Decoder . Darmowe sterowniki kart graficznych Radeon o otwartym kodzie źródłowym nie są poddawane inżynierii wstecznej, ale są oparte na dokumentacji wydanej przez AMD bez wymogu podpisania umowy o zachowaniu poufności (NDA). Dokumentacja zaczęła być stopniowo wydawana w 2007 roku. Jest to przeciwieństwo głównego konkurenta AMD w dziedzinie grafiki, Nvidii , która ma zastrzeżony sterownik podobny do AMD Catalyst, ale nie zapewnia wsparcia dla inicjatyw związanych z wolną grafiką.

Oprócz dostarczania niezbędnej dokumentacji pracownicy AMD dostarczają kod wspierający ich sprzęt i funkcje.

Wszystkie składniki sterownika karty graficznej Radeon zostały opracowane przez głównych współpracowników i zainteresowane strony na całym świecie. W 2011 r. w niektórych przypadkach r300g przewyższał Catalyst.

AMDGPU

Na konferencji Game Developers Conference w 2014 r. AMD ogłosiło, że bada zmianę strategii, aby ponownie oprzeć część Catalyst dotyczącą przestrzeni użytkownika na darmowym module jądra DRM o otwartym kodzie źródłowym , zamiast na ich własnościowym blobie jądra .

Wydanie nowego modułu jądra AMDGPU i stosu zostało ogłoszone na liście dyskusyjnej dri-devel w kwietniu 2015 roku. Chociaż AMDGPU oficjalnie obsługuje tylko karty graficzne GCN 1.2 i nowsze, eksperymentalne wsparcie dla kart graficznych GCN 1.0 i 1.1 (które są oficjalnie obsługiwane tylko przez sterownik Radeon) można włączyć za pomocą parametru jądra. Oddzielna biblioteka libdrm , libdrm-amdgpu, została dołączona od libdrm 2.4.63.

Kod radeonsi 3D wspomniany w poprzednim akapicie Radeon jest również używany z amdgpu; sterownik 3D ma tylne końce zarówno dla radeona, jak i amdgpu.

Nvidia

Zrzut ekranu przedstawiający trawę wyrastającą z wody
Zrzut ekranu REnouveau, programu, który zbiera dane dla większości prac związanych z inżynierią wsteczną Nouveau

Nvidia jest zastrzeżona kierowca, kierowca Nvidia GeForce dla GeForce , jest dostępny dla systemu Windows XP x86 - x86-64 i później, Linux x86-x86-64- ARMv7-A , OS X 10.5 i nowsze, Solaris x86 i x86-64 FreeBSD x86/x86-64. Aktualną wersję można pobrać z Internetu, a niektóre dystrybucje Linuksa zawierają ją w swoich repozytoriach. Sterownik beta Nvidia GeForce 331.13 z 4 października 2013 r. obsługuje interfejs EGL , umożliwiając obsługę Wayland w połączeniu z tym sterownikiem.

Darmowy sterownik Nvidii o otwartym kodzie źródłowym nosi nazwę nv. Jest ograniczony (obsługuje tylko akcelerację 2D), a Matthew Garrett , Dirk Hohndel i inni nazwali jego kod źródłowy mylącym. Nvidia zdecydowała się wycofać nv, nie dodając wsparcia dla Fermi lub nowszych procesorów graficznych i DisplayPort , w marcu 2010 roku.

W grudniu 2009 roku Nvidia ogłosiła, że ​​nie będzie wspierać inicjatyw związanych z darmową grafiką. 23 września 2013 r. firma ogłosiła, że ​​udostępni dokumentację swoich procesorów graficznych.

Nouveau opiera się prawie wyłącznie na informacjach uzyskanych dzięki inżynierii wstecznej . Projekt ten ma na celu wytworzenia akceleracji 3D dla X.Org/ Wayland użyciu gallium3d . 26 marca 2012 r. składnik DRM Nouveau został oznaczony jako stabilny i wypromowany z obszaru tymczasowego jądra Linux. Nouveau obsługuje układy GPU oparte na Tesli (i wcześniejszych), Fermi , Kepler i Maxwell . 31 stycznia 2014 r. pracownik Nvidii, Alexandre Courbot, wprowadził obszerny zestaw poprawek, który dodaje początkowe wsparcie dla GK20A ( Tegra K1 ) do Nouveau. W czerwcu 2014 r. Codethink podobno uruchomił oparty na Wayland kompozytor Weston z jądrem Linux 3.15, używając EGL i „stosu sterowników graficznych w 100% open source” na Tegra K1 . Dostępna jest macierz funkcji. W lipcu 2014 Nouveau nie był w stanie przewyższyć sterownika Nvidia GeForce z powodu braku obsługi ponownego taktowania. Tegra-re to projekt, który ma na celu inżynierię wsteczną serii układów GPU Tegra opartych na VLIW firmy nVidia, które są starsze niż Tegra K1.

Nvidia dystrybuuje zastrzeżone sterowniki urządzeń dla Tegra za pośrednictwem producentów OEM oraz jako część zestawu rozwojowego Linux for Tegra (dawniej L4T). Nvidia i jej partner, Avionic Design , pracowali nad udostępnieniem Grate (bezpłatnych i open-source sterowników dla Tegry) przed głównym jądrem Linuksa w kwietniu 2012 roku. Współzałożyciel i dyrektor generalny firmy przedstawił plan działania procesora Tegra z Ubuntu Unity na stronie Konferencja Technologii GPU 2013 .

Sterownik Unified Memory firmy Nvidia (nvidia-uvm.ko), który implementuje zarządzanie pamięcią dla procesorów graficznych Pascal i Volta w systemie Linux, jest licencjonowany przez MIT. Kod źródłowy jest dostępny w pobranych sterownikach Nvidia Linux w systemach obsługujących nvidia-uvm.ko.

Intel

Intel ma historię produkowania (lub uruchamiania) sterowników typu open source do swoich układów graficznych, z wyjątkiem układów opartych na PowerVR . Ich sterownik 2D X.Org nazywa się xf86-video-intel. Sterownik ustawień trybu jądra w jądrze Linux nie używa BIOS-u wideo do przełączania trybów wideo ; ponieważ niektóre BIOS-y mają ograniczony zakres trybów, zapewnia to bardziej niezawodny dostęp do tych obsługiwanych przez karty graficzne Intel.

W 2011 roku firma pracowała nad optymalizacją swoich darmowych sterowników dla systemu Linux pod kątem wydajności zbliżonej do ich odpowiedników w systemie Windows , zwłaszcza na Sandy Bridge i nowszym sprzęcie, gdzie optymalizacje wydajności pozwoliły sterownikowi Intela przewyższyć jego zastrzeżone sterowniki dla systemu Windows w niektórych zadaniach w 2011 roku. korzystają również użytkownicy starszego sprzętu.

Wsparcie dla Intel LLC (Last Level Cache, L4-Cache, Crystalwell i Iris Pro) zostało dodane w jądrze Linuksa 3.12, a firma zatrudnia od 20 do 30 pełnoetatowych programistów graficznych dla Linuksa.

Matrox

Matrox opracowuje i produkuje Matrox Mystique , Parhelia , G200 , G400 i G550 . Chociaż firma zapewnia bezpłatne sterowniki typu open source dla swoich chipsetów, które są starsze niż G550; chipsety nowsze niż G550 są obsługiwane przez sterownik o zamkniętym kodzie źródłowym.

Grafika S3

S3 Graphics rozwija S3 Trio , ViRGE , Savage i Chrome , obsługiwane przez OpenChrome.

Uchwyty na ramię

Arm Holdings to firma produkująca półprzewodniki bez fabless, która udziela licencji na rdzenie półprzewodnikowe do własności intelektualnej . Chociaż są znani z licencjonowania zestawu instrukcji ARM i opartych na nim procesorów , opracowują również i licencjonują procesory graficzne z serii Mali . 21 stycznia 2012 r. firma Phoronix poinformowała, że Luc Verhaegen prowadził próbę inżynierii odwrotnej, której celem była seria kart graficznych Arm Holdings Mali (w szczególności wersje Mali-200 i Mali-400). Projekt inżynierii odwrotnej, znany jako Lima, został zaprezentowany na targach FOSDEM 4 lutego 2012 roku. 2 lutego 2013 roku Verhaegen zademonstrował Quake III Arena w trybie timedemo, wykorzystując sterownik Lima. W maju 2018 r. programista Lima opublikował sterownik do włączenia do jądra Linux. Od maja 2019 r. sterownik Lima jest częścią głównego jądra Linuksa.

Panfrost jest odwróconym wysiłkiem sterownika dla procesorów graficznych Mali Txxx (Midgard) i Gxx (Bifrost). Prezentacja wprowadzająca Panfrost została zaprezentowana na X.Org Developer's Conference 2018. Od maja 2019 r. sterownik Panfrost jest częścią głównego jądra Linuksa.

Firma ARM nie ma zamiaru zapewniać wsparcia dla sprzętu do przyspieszania grafiki licencjonowanego na podstawie bezpłatnej licencji typu open source. Jednak w grudniu 2015 i kwietniu 2016 pracownicy ARM wysłali łatki dla jądra Linuksa, aby obsługiwały ich kontroler wyświetlania ARM HDLCD oraz bloki Mali DP500, DP550 i DP650 SIP.

Technologie wyobraźni

Imagination Technologies to firma produkująca półprzewodniki bez fabless, która opracowuje i licencjonuje półprzewodnikowe rdzenie własności intelektualnej , wśród których znajdują się procesory graficzne PowerVR . Firma Intel wyprodukowała wiele procesorów graficznych opartych na PowerVR . Procesory graficzne PowerVR są szeroko stosowane w mobilnych układach SoC . Firma nie dostarcza sterownika FOSS ani publicznej dokumentacji dla PowerVR. Ze względu na szerokie zastosowanie w urządzeniach wbudowanych Fundacja Wolnego Oprogramowania umieściła inżynierię wsteczną sterownika PowerVR na liście projektów o wysokim priorytecie.

Vivante

Vivante Corporation to firma produkująca półprzewodniki bez fabless, która licencjonuje rdzenie półprzewodnikowej własności intelektualnej i opracowuje serię procesorów graficznych GCxxxx. Zastrzeżony sterownik Vivante dla systemu Linux o zamkniętym kodzie źródłowym składa się z części jądra i przestrzeni użytkownika. Chociaż komponent jądra jest typu open source ( GPL ), komponenty przestrzeni użytkownika — składające się z implementacji GLES(2) i biblioteki HAL — nie są; zawierają one większość logiki sterownika.

Wladimir J. van der Laan znalazł i udokumentował bity stanu, strumień poleceń i shader ISA, badając sposób działania obiektów blob, badając i manipulując zrzutami strumienia poleceń. Na podstawie tej dokumentacji pisany jest sterownik Etnaviv Gallium3D. Praca Van der Laana została zainspirowana sterownikiem Lima, a w ramach projektu powstał funkcjonalny, ale niezoptymalizowany sterownik Gallium3D LLVM. W niektórych testach sterownik Etnaviv działał lepiej niż zastrzeżony kod Vivante i obsługuje serie GC400, GC800, GC1000, GC2000, GC3000 i GC7000 firmy Vivante. W styczniu 2017 r. do Mesy dodano Etnaviv z obsługą zarówno OpenGL ES 2.0, jak i Desktop OpenGL 2.1.

Qualcomm

Qualcomm opracowuje serię mobilnych procesorów graficznych Adreno (dawniej ATI Imageon ) i włącza ją jako część swojej serii mobilnych układów SoC Snapdragon . Phoronix i Slashdot donieśli w 2012 roku, że Rob Clark, zainspirowany sterownikiem z Limy, pracował nad sterownikami inżynierii wstecznej dla serii GPU Adreno. W cytowanym poście na blogu Clark napisał, że robi ten projekt w wolnym czasie i że platforma Qualcomm jest jego jedynym realnym celem do pracy nad otwartą grafiką 3D. Jego pracodawcy ( Texas Instruments i Linaro ) byli związani z rdzeniami Imagination PowerVR i ARM Mali , które byłyby jego głównymi celami; miał działające strumienie poleceń do obsługi 2D, a polecenia 3D wydawały się mieć te same cechy. Kod sterownika został opublikowany na Gitorious "freedreno" i został przeniesiony do Mesy. W 2012 roku ukończono działający asembler shaderów; Wersje demonstracyjne zostały opracowane dla mapowania tekstur i cieniowania phong , przy użyciu kompilatora shaderów poddanego inżynierii wstecznej. Clark zademonstrował Freedreno z systemem komponowania pulpitu, odtwarzaczem multimedialnym XBMC i Quake III Arena na FOSDEM 2 lutego 2013 roku.

W sierpniu 2013 komponent jądra freedreno (sterownik MSM) został zaakceptowany do mainline i jest dostępny w jądrze Linux 3.12 i nowszych. Sterownik DDX uzyskał obsługę deskryptorów plików zarządzanych przez serwer, wymagających serwera X.Org w wersji 1.16 i nowszych w lipcu 2014 r. W styczniu 2016 r. sterownik w stylu Mesa Gallium3D uzyskał obsługę Adreno 430; w listopadzie tego roku kierowca dodał obsługę serii Adreno 500. Freedreno może być używany na urządzeniach takich jak 96Boards Dragonboard 410c i Nexus 7 (2013) w tradycyjnych dystrybucjach Linuksa (takich jak Debian i Fedora ) oraz na Androidzie .

Broadcom

Schemat oprogramowania
Sterownik Mesa dla VideoCore4, VC4 został napisany od podstaw przez Erica Anholta z Broadcom.

Broadcom opracowuje i projektuje serię procesorów graficznych VideoCore jako część swoich układów SoC . Ponieważ jest używany przez Raspberry Pi , istnieje duże zainteresowanie sterownikiem FOSS dla VideoCore. Fundacja Raspberry Pi we współpracy z firmą Broadcom ogłosiła 24 października 2012 r., że udostępniła „cały kod ARM (CPU) napędzający GPU” na zasadzie open source. Ogłoszenie było jednak mylące; według autora sterownika Lima poddanego inżynierii wstecznej, nowo otwarte komponenty umożliwiały jedynie przekazywanie komunikatów między procesorem ARM a VideoCore, ale oferowały niewielki wgląd w Videocore i niewielką dodatkową programowalność. GPU Videocore uruchamia system RTOS, który obsługuje przetwarzanie; akceleracja wideo odbywa się za pomocą oprogramowania układowego RTOS zakodowanego dla jego zastrzeżonego procesora graficznego, a oprogramowanie układowe nie było w tym dniu otwarte. Ponieważ nie było ani łańcucha narzędzi skierowanego do zastrzeżonego procesora graficznego, ani udokumentowanego zestawu instrukcji , nie można było czerpać żadnych korzyści, gdyby kod źródłowy oprogramowania układowego stał się dostępny. Projekt Videocoreiv próbował udokumentować procesory graficzne VideoCore.

28 lutego 2014 r. (druga rocznica Raspberry Pi) Broadcom i Raspberry Pi Foundation ogłosiły wydanie pełnej dokumentacji rdzenia graficznego VideoCore IV oraz kompletne wydanie źródłowe stosu graficznego na podstawie 3-klauzulowej licencji BSD . Wolna licencyjna grafika 3D została przekazana do Mesy 29 sierpnia 2014 roku i po raz pierwszy pojawiła się w wydaniu Mesy 10.3.

Inni dostawcy

Chociaż Silicon Integrated Systems i VIA Technologies wyraziły ograniczone zainteresowanie sterownikami open source, oba wydały kod źródłowy, który został zintegrowany z X.Org przez programistów FOSS. W lipcu 2008 roku firma VIA otworzyła dokumentację swoich produktów, aby poprawić swój wizerunek w społecznościach Linuxa i open-source. Firmie nie udało się współpracować ze społecznością open-source w celu dostarczenia dokumentacji i działającego sterownika DRM , co spowodowało , że oczekiwania dotyczące wsparcia dla Linuksa nie zostały spełnione. 6 stycznia 2011 ogłoszono, że VIA nie jest już zainteresowana wspieraniem inicjatyw związanych z darmową grafiką.

DisplayLink ogłosił projekt o otwartym kodzie źródłowym, Libdlo, którego celem jest zapewnienie obsługi technologii graficznej USB w Linuksie i innych platformach. Jego kod jest dostępny na licencji LGPL , ale nie został zintegrowany ze sterownikiem X.Org . Obsługa grafiki DisplayLink jest dostępna poprzez sterownik jądra udlfb (z fbdev) w mainline i sterownik udl/drm, który w marcu 2012 był dostępny tylko w drzewie drm-next.

Dostawcy niezwiązani ze sprzętem mogą również wspierać inicjatywy dotyczące bezpłatnej grafiki. Red Hat ma dwóch pełnoetatowych pracowników (David Airlie i Jérôme Glisse) pracujących nad oprogramowaniem Radeon, a Projekt Fedora sponsoruje wydarzenie Fedora Graphics Test Week przed uruchomieniem ich nowych wersji dystrybucji Linuksa w celu testowania bezpłatnych sterowników graficznych. Inne firmy, które zapewniły rozwój lub wsparcie, to Novell i VMware .

Otwarte projekty sprzętowe

Zobacz podpis
Zmontowana karta graficzna Project VGA
Inna płytka drukowana
Prototyp projektu otwartej grafiki

Projekt VGA ma na celu stworzenie niskobudżetowej karty graficznej typu open source zgodnej z VGA . Projekt Open Graphics ma na celu stworzenie otwartego sprzętu GPU. Open Graphics Device v1 ma dwa wyjścia DVI-I i 100-pinowe złącze IDC. We wrześniu 2010 r. udostępniono do wnioskowania i zakupu pierwszych 25 tablic OGD1. System Milkymist na chipie , ukierunkowany na wbudowaną grafikę zamiast na komputery stacjonarne, obsługuje wyjście VGA, ograniczony moduł cieniowania wierzchołków i jednostkę teksturowania 2D.

Nyuzi, eksperymentalny procesor GPGPU, zawiera syntezowalny projekt sprzętu napisany w System Verilog , emulator zestawu instrukcji, kompilator C-C++ oparty na LLVM , biblioteki oprogramowania i testy oraz eksploruje oprogramowanie i sprzęt równoległy. Może działać na programowalnej płytce macierzy bramek Terasic DE2-115 .

Jeśli projekt wykorzystuje układy FPGA, zazwyczaj ma częściowo (lub całkowicie) łańcuch narzędzi o zamkniętym kodzie źródłowym. Obecnie dostępnych jest jednak kilka łańcuchów narzędzi typu open source dla układów FPGA opartych na Lattice (zwłaszcza dla płyt iCE40 i ECP5), które wykorzystują odpowiednio Project IceStorm i Trellis. Trwają również większe, trwające wysiłki, aby stworzyć „GCC of FPGAs” o nazwie SymbiFlow, który obejmuje wspomniane wcześniej łańcuchy narzędzi FPGA, a także wczesny etap open-source toolchain dla FPGA opartych na Xilinx.

Zobacz też

Bibliografia

Zewnętrzne linki