AIGLX – Wikipedia

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
GLX und AIGLX versus direct rendering

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.

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.

  • 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

Einzelnachweise

[Bearbeiten | Quelltext 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