AIGLX

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
AIGLX
Linux3ddesktop.png
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
GLX und AIGLX versus direct rendering.

AIGLX (Accelerated Indirect GL X) ist eine Programmierschnittstelle zwischen dem Anzeige-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 Anzeige-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 seit 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]

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]

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]

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 seit 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.

Weblinks[Bearbeiten]

Siehe auch[Bearbeiten]

  • GLX – die Schnittstelle, auf der AIGLX aufbaut
  • WGL – eine zu AIGLX äquivalente Schnittstelle zwischen dem Microsoft Windows-Fenstersystem und OpenGL
  • CGL – eine zu AIGLX äquivalente Schnittstelle zwischen dem Mac OS X-Fenstersystem und OpenGL
  • EGL – eine zu AIGXL äquivalente Schnittstelle zwischen dem Wayland-Fenstersystem und OpenGL ES sowie OpenVG

Quellen[Bearbeiten]

  1. Artikel NVIDIA 1.0-9629 Display Drivers auf der Webseite Phoronix.com, aufgerufen 22. September 2006
  2. Artikel AMD 8.42 Driver Brings Fixes, AIGLX! auf der Webseite Phoronix.com, aufgerufen 24. Oktober 2007