AIGLX
AIGLX
| |
---|---|
Würfel-Ansicht eines hardwarebeschleunigten AIGLX-Servers mit Firefox und Amarok | |
Basisdaten
| |
Entwickler | X.Org Foundation |
Betriebssystem | X-Window-System-kompatible |
Kategorie | Programmierschnittstelle (API) |
fedoraproject.org/wiki/RenderingProject/aiglx |
AIGLX (Accelerated Indirect GL X) ist eine Programmierschnittstelle zwischen dem Display-Server und der Grafikkarte bzw. den Gerätetreibern. Eine freie Implementation ist Bestandteil des X.Org-Servers. Es wurde vom Fedora-Core-Projekt (heute Fedora) mit dem Ziel entwickelt, Hardwarebeschleunigung für Display-Server nutzbar zu machen. Das Projekt konkurriert mit Xgl, welches ebenfalls beschleunigte grafische Effekte wie echte Transparenz, stufenlosen Zoom und 3D-Effekte ermöglicht.
AIGLX wird im Rahmen des X.Org-Servers entwickelt und ist ab Version 7.1 fester Bestandteil davon. Damit ist AIGLX in allen Linux-Distributionen enthalten, die den X.Org-Server in dieser Version oder neuer mit sich bringen. Treibende Kraft bei der Entwicklung ist das Fedora-Projekt. Der Grafikkarten-Hersteller Nvidia hält den Ansatz von AIGLX gegenüber Xgl ebenfalls für sinnvoller und hat angekündigt, AIGLX verstärkt zu unterstützen.
Vergleich mit Xgl
[Bearbeiten | Quelltext bearbeiten]Im Gegensatz zu Xgl verfolgt AIGLX den Ansatz, den X-Server nicht vollständig zu ersetzen, sondern inkrementell zu verbessern, indem die einzelnen Komponenten des X-Servers um die notwendige Unterstützung erweitert werden. Dabei wird die bereits bestehende Direct Rendering Infrastructure (DRI) benutzt. Dies soll nach Ansicht der AIGLX-Entwickler den Vorteil bringen, dass die Entwicklung in verhältnismäßig kleinen Schritten möglich ist. Technisch bietet es auch insbesondere im Vergleich zu Xgl den Vorteil, dass dann noch ein X-Server gestartet werden kann, wenn keine 3D-Treiber für die Grafikkarte vorliegen, da im Falle des AIGLX-Designs auch 2D-Treiber benutzt werden können.
Arbeitsweise
[Bearbeiten | Quelltext bearbeiten]Es gibt zwei Wege, auf denen ein Window-System einem/mehreren OpenGL-Programmen erlauben kann, mit der Grafikkarte zu sprechen:
Der erste Weg, der auch von AIGLX verwendet wird, ist, in einer Netzwerk-neutralen Client/Server-Implementierung ähnlich den X11-Zeichnungs-Routinen einen OpenGL-Befehlsstrom zu spezifizieren. Dieser Weg wird als indirekt bezeichnet, da die Anweisungen zum Zeichnen erst zum X-Server gesendet werden, welcher sie dann an die Grafikkarte weiterleitet. Somit trägt der X-Server die Verantwortung, mehrere Anwendungen zum Zug kommen zu lassen, hat aber ebenso die Möglichkeit, bei der Verarbeitung der Anweisungen einzugreifen.
Beim direct rendering muss sich die OpenGL-Implementierung selbst um das Scheduling der laufenden OpenGL-Anwendungen kümmern, was in den meisten Fällen weniger Overhead, aber gleichfalls weniger Eingriffsmöglichkeiten für den X-Server bedeutet.
Der von AIGLX benutzte Weg der indirekten Beschleunigung ist zwar orthogonal zur Implementierung des X-Servers selbst, erlaubt aber dem OpenGL-Befehlsstrom, einfacher aufgenommen und zu einer Textur umgeleitet zu werden. Das erlaubt es Compiz und ähnlichen Composition-Managern, auf einem traditionellen X-Server mit einer kleinen GLX-Erweiterung zu laufen, anstatt einen vollständigen neuen Xgl-Server zu erfordern. AIGLX ermöglicht zudem beschleunigtes Remote-Betrachten und das Aufteilen von OpenGL-Streams zwischen verschiedenen Monitoren und Grafikkarten.
Aktuelle Hardwareunterstützung
[Bearbeiten | Quelltext bearbeiten]AIGLX wird unabhängig von der Grafikhardware entwickelt und kann mit jeder Grafikhardware genutzt werden. Die Voraussetzung ist, dass die entsprechenden Treiber der Grafikkarte die OpenGL-Erweiterung GLX_EXT_texture_from_pixmap unterstützen. Zu den Karten, die als unterstützt gelten, gehören die ATI Radeon 7000 bis x850 (nur mit dem freien radeon-Treibermodul oder dem ebenfalls freien ati-Treibermodul) und die Intel i830 bis G45. Für Karten des Herstellers Nvidia existiert seit Oktober 2006 ein Treiber, der AIGLX unterstützt.[1] Die Treiber der Firma AMD unterstützen die nötigen Funktionen ab Version 8.42.3 ihres Treibers.[2]
Dies ist ein großer Unterschied und Kritikpunkt im Vergleich zum Projekt Xgl, das vor allen Dingen mit proprietären Treibern zusammen arbeitet. Dies liegt daran, dass Xgl in der Xglx-Implementierung OpenGL-Erweiterungen (z. B. GLX_EXT_texture_from_pixmap) durch den Prozessor emulieren kann, für AIGLX müssen sie jedoch im Treiber der Grafikkarte implementiert sein.
Siehe auch
[Bearbeiten | Quelltext bearbeiten]- GLX, die Schnittstelle, auf der AIGLX aufbaut
- WGL, eine zu AIGLX äquivalente Schnittstelle zwischen dem Windows-Fenstersystem und OpenGL
- CGL, eine zu AIGLX äquivalente Schnittstelle zwischen dem macOS-Fenstersystem und OpenGL
- EGL, eine zu AIGXL äquivalente Schnittstelle zwischen dem Fenstersystem und OpenGL ES sowie OpenVG
Weblinks
[Bearbeiten | Quelltext bearbeiten]- Offizielle Webpräsenz (englisch)
- Using the Existing XFree86/X.Org Loadable Driver Framework to Achieve a Composited X Desktop – Papier zur Beschreibung der Grundlagen von AIGLX von NVIDIA (englisch; PDF; 290 kB)
- Accelerated X flame wars!—Maybe not – Artikel über die Unterschiede von Xgl und AIGLX (englisch)
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Artikel NVIDIA 1.0-9629 Display Drivers auf der Webseite Phoronix.com, aufgerufen 22. September 2006
- ↑ Artikel AMD 8.42 Driver Brings Fixes, AIGLX! auf der Webseite Phoronix.com, aufgerufen 24. Oktober 2007