1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Intel-Grafikkarten unter FreeBSD

Dieses Thema im Forum "FreeBSD - Allgemein" wurde erstellt von Tulkas, 17 April 2017.

  1. Tulkas

    Tulkas Member

    Registriert seit:
    28 Februar 2003
    Beiträge:
    596
    Ort:
    Daheim
    Hi,
    momentan läuft mein Lenovo T420 (i5-2520M Sandy-Bridge) prima unter FreeBSD12-CURRENT. Was mich allerdings zunehmend verwirrt ist die ganze Grafiktreibergeschichte der verbauten Intel-Prozessor-Grafikkarte für Xorg.
    Im Internet gibt es Informationsbrocken mit den Buzzwords "modesetting", "i915", "intel", "i915kms". Dann gibt es diesen ominösen 4.9er branch, den TrueOS nutzt um die neueren Intels zu beschleunigen.

    Was genau ist jetzt der korrekte Treiber für Intel-Grafikkarten um die Hardware-Beschleunigung zu bekommen und tearing zu vermeiden? Kann mir jemand den Zusammenhang erklären und sagen, ob jetzt "intel" oder "modesetting" der korrekte Treiber ist?
     
  2. Yamagi

    Yamagi Possessed With Psi Powers Mitarbeiter

    Registriert seit:
    14 April 2004
    Beiträge:
    8.589
    Ort:
    Schleswig-Holstein
    Eigentlich ist es ganz einfach, man sollte für den Anfang ins Linux-Lager schauen: Vor inzwischen mehr als ein paar Jahren entschloss man sich unter Linux den Grafikstack komplett umzubauen. Im Rahmen dessen wurde der ganze Kram neu geordnet. Auf Seiten des Kernels gibt es vereinfacht gesagt einmal das "Kernel Mode Setting", was für die Ausgabe verantwortlich ist. Also welches Bild in der welcher Auflösung und Farbtiefe auf welchen Ausgang der Grafikkarte geschrieben wird und wie die an die Grafikkarte angeschlossenen Monitore zusammenhängen. Dazu kommt der "Direct Rendering Manager", der die GPU selbst ansteuert und aus einem Instruktionsstrom das Bild rendert. Wie das mit Kernelmodulen, Speichermanagern und so weiter zusammenhängt, ist sehr von der jeweiligen GPU und ihrer Treiberimplementierung abhängig. Auf Userlandseite braucht man eine Frontend-Bibliothek, die den Instruktionsstrom für die GPU erzeugt. Das ist bei den freien Treiber (fast) immer Mesa3D, was sich wiederum seitens der Anwendung durch OpenGL, OpenGL ES, DirectX und Vulkan in verschiedenen Versionen ansprechend lässt.

    Nimmt man nun Wayland oder ein ähnliches Window System wie das gerade verstorbene Mir oder Androids Dingens, dessen Namen ich immer vergesse, ist man an dieser Stelle fertig. Ein Compositor rendert die Desktopdarstellung über Mesa3D, die GPU erzeugt vom Direct Rendering Manager gesteuert ein Bild und es wird dann per Kernel Mode Setting ausgegeben. Bei X11 benötigt man allerdings ein weiteres Modul, da X11 selbst Dinge managemen will, für die andere Komponenten zuständig sind. Außerdem nutzen nicht alle Windows Manager Compositing, auch die alten 2D-Rendering APIs sind noch weit verbreitet. Daher benötigt man einen DDX-Treiber, der X11 ermöglicht, all dies anzubieten. Früher gab es für jede Grafikkartenfamilie einen eigenen DDX-Treiber, also xf86-video-intel, xf86-video-radeon, etc. Da hauptsächlich dank Kernel Mode Setting und weniger wichtig dem Direct Rendering Manager aus dem Userland alle Grafikkarten gleich erscheinen, kann man mit xf86-video-modesetting einen generischen DDX-Treiber installieren.

    Also unter Linux:
    • Freie Treiber: Kernel Mode Setting und den Direct Rendering Manager zusammengetüdelt durch den Kerneltreiber, Mesa3D und xf86-video-modesetting.
    • Nvidia: Kernel Mode Setting (nvidia-modesetting), Nvidias proprietäres Renderinterface (nvidia), Nvidias libGL, xf86-video-nvidia.
    • AMD: Kernel Mode Setting und den Direct Rendering Manager + Proprietäre Erweiterungen zusammengetüddelt durch amdgpu (auch von freien Treibern nutzbar), AMDs proprietäre libGL oder Mesa3D, xf86-video-modesetting. Das ist noch sehr beta, in der Praxis dürfte man vor allem die Variante mit Mesa3D oder den alten, freien Render-Stack über radeonsi finden.
    Unter FreeBSD ist die Sache nun ähnlich:
    • Für Intel: Kernel Mode Setting und den Direct Rendering Manager, implementiert durch i915kms.ko und drm2.ko. Im Userland eigentlich xf86-video-modesetting, da das aber derzeit kaputt ist, doch wieder xf86-video-intel. Das alte x915.ko ist der alte Render Stack ohne Kernel Mode Setting. Der ist nur noch aus historischen Gründen da und funktioniert meines Wissens nicht mehr sauber. In 12-CURRENT ist er entfernt.
    • Für Nvidia: Kernel Mode Setting durch nvidia-modesetting.ko, Nvidias proprietäres Renderinterface durch nvidia.ko, Nvidias libGL, xf86-video-nvidia
    Derzeit ist unter FreeBSD allerdings bei den freien Treibern bei Intel Haswell Schluss und AMD wird praktisch gar nicht unterstützt. Zumindest keine halbwegs aktuellen Karten und die älteren Modelle nur recht bröselig. Daher gibt es ein Projekt, um ein aktuellen Kernel Mode Setting, einen aktuellen Direct Rendering Manager, aktuelle AMD- und Intel-Treiber, sowie den daran hängenden Rattenschwanz auf FreeBSD zu portieren. Anders als bisher wird aber keine echte Portierung mehr gemacht, stattdessen baut man einen Wrapper, der den Linux-Code idealerweise 1:1 auf FreeBSD ausführen kann. Damit kann man später einfach neuere Versionen übernehmen, muss allenfalls den Wrapper anpassen. Dies Projekt heißt "drm-next", basierte einige Zeit auf Linux 4.9, inzwischen ist es aber weiter, meine ich. Bisher ist es noch nicht in FreeBSD angekommen, sollte es aber bald. Wer es nutzen will, um aktuellen AMD- und Intel-Karten anzusprechen, muss daher seinen Kernel aus dem Branch bauen.

    Keine Ahnung, ob das in nun in allen Details so korrekt und nicht zu sehr vereinfacht ist. Aber zumindest für den Überblick sollte es stimmen. Wikipedia hat auch noch eine Menge, ein guter Einstiegspunkt ist: https://en.wikipedia.org/wiki/Mesa_(computer_graphics) Anders als ich unterschlagen sie auch nicht das Direct Rendering Interface, was das alles zusammenklebt.
     
    Elwood, holgerw, ralli und 2 anderen gefällt das.
  3. Tulkas

    Tulkas Member

    Registriert seit:
    28 Februar 2003
    Beiträge:
    596
    Ort:
    Daheim
    Vielen Dank für diese ausführliche Erklärung!
     
  4. holgerw

    holgerw Active Member

    Registriert seit:
    29 Februar 2016
    Beiträge:
    805
    Ort:
    Simtshausen - Hessen
    Ja, aber als Ergänzung: Haswell geht nun gut (auch wenn ich mir wieder eine passiv gekühlte Nvidia einbauen werde). Haswell war noch vor einigen Monaten als Desktopsystem ein No-Go und läuft mittlerweile selbst mit plasma5 schön flüssig.

    Einziger Nachteil beim Modesetting: Nach dem Start des Xservers ist beim Wechseln mit Strg+Alt+F1 auf ttyv1 die Schrift dort dermaßen winzig, dass ich Schwierigkeiten habe, sie zu lesen. Bei Intelgrafik ist das schon lange so, unter Nvidia ohne modesetting vor einigen Monaten war das nicht so.