von phobeus » 01.10.2010, 21:43
Habe ich doch bereits indirekt im vorherigen Post. Mesa 3D ist eine OpenGL-Implementierung. Hierbei handelt es sich um eine 3D-API, die einem Entwickler die Möglichkeit bietet Vertices auf dem Bildschirm zu bringen und diese zu modifizieren (Transformationen, Mapping States etc.). Da Mesa die Implementierung ist, muss also z.B. ein glTexture2D von OpenGL auf die entsprechende Hardware umgesetzt werden. Es muss also irgendwo stehen, wie die Daten einer Textur z.B. in die Karte geladen werden, welche Register aufgerufen werden müssen etc. Dies unterscheidet sich von Karte zu Karte und das ist auch die ebene in der künftig der neue Abstraktionslayer Gallium greifen soll, weil er ermöglichen würde, dass die darunter liegende Karte stets identisch wäre und daher die Mesa-Implementierung ebenfalls.
Die Sache mit dem Xorg ist wesentlich komplizierter als das man es in wenigen Sätzen abbilden kann, weil es viele Sonderfälle gibt. Allgemein: Xorg Driver sind Userspace-Treiber, die Funktionen zur Ansteuerung der Karte für den X-Server zur Verfügung stellen. Sie beinhalten quasi die genaue Funktion und Aufbau der Karte. Sie stellen die Funktionen der Karte zur Verfügung und steuern die GPU oder andere Bestandteile der Karte an. (Siehe "radeonhd" der z.B. HDMI Audio anbot, der "radeon" damals nicht, also kannte das System diese Komponente der Karte auch nicht bei geladenen "radeon"). Sehr vereinfacht gesagt: Jener Bestandteil der Zwischen Karte und Xorg die Operationen aushandelt und dafür sorgt, dass das Bild am Monitor erscheint.
Damit man nicht alles über den Xorg schleifen muss (langsam!), gibt es die Möglichkeit direkt und koordiniert (!) auf die 3D-Karte zuzugreifen. Das ist der Punkt wo DRI ins Spiel kommt. DRM ist jener Bestandteil von DRI, der es ermöglicht auch direkte Zugriffe auf den Speicher der Grafikkarte durchzuführen. Was Du mit "Kernel Treiber" nun genau meinst... in jüngster Zeit werden Steuerungsfunktionen vom Xorg in den Kernel verlagert (sprich KMS). Ähnlich wie bei den anderen Technologien bereits... von der Architektur wäre es schön alles auf höchster Ebene (Xorg) zu organisieren, aber die Performance will niemand bei sich am Rechner haben. Dadurch gibt es eben die Wege "direkter" auf die Hardware zuzugreifen.
Ich hoffe das grenzt es ein wenig besser voneinander ab. Und ja, es bietet einiges an Angriffsfläche, aber das Thema ist auch nicht non-trivial, so dass man es abstrakt in wenigen Sätzen ausdrücken kann. Sollte allerdings dennoch zeigen, wieso so manche Aussage im Netz nachdenklich stimmt. Z.B. eben die Fraktion die glaubt durch Gallium wird nun plötzlich alles doppelt so schnell... ich bezweifel, dass die aktuellen Entwickler so schlecht gearbeitet haben, dass durch eine zusätzliche, abstraktere Schicht alles schneller wird. Auch der "radeon" ist IMAO inzwischen vollständig implementiert und man wird nur noch Implementierungsfehler ausmerzen können, um etwas mehr Leistung zu holen. Voran bringen werden einem aber wohl eher vollständigere Mesa-Implementierungen, die z.B. auch vollständige Shader-Unterstützung bringt oder einige Funktionen, die bisher über die CPU emuliert werden direkt an die GPU reicht, die das eben meist besser hin bekommt.
Klingt einfach, ist bei aktuellen Karten aber definitiv eine sehr undankbare Aufgabe. Statt sich also darüber zu ärgern das die neue Version nichts neues bringt, wäre es vielleicht mal an der Zeit ne kleine Spende für die Entwickler springen zu lassen um Dank zu zeigen, was schon alles geht... Achso und wer mehr Wissen hat, darf mich gerne belehren. Die Chip-spezifischen shared objects innerhalb des Mesa-Projektes, könnte ich aktuell im Gesamtbild nicht unterbringen... (//edit: Sieht wohl so aus als würde der Teil über die Ansteuerung der GPU darin enthalten zu sein und die Xorg-Treiber sich wirklich "nur" um den 2D-Kram und eben der Darstellung im Xorg kümmern. In dem Moment sollte die Spende wohl eher an Mesa 3D gehen...)