AIGLX

AIGLX


Würfel-Ansicht eines hardwarebeschleunigten AIGLX-Servers mit Firefox und Amarok
Basisdaten

EntwicklerX.Org Foundation
BetriebssystemX-Window-System-kompatible
KategorieProgrammierschnittstelle (API)
fedoraproject.org/wiki/RenderingProject/aiglx
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
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

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

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

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

  • WGL, eine zu AIGLX äquivalente Schnittstelle zwischen dem Windows-Fenstersystem und OpenGL
  • CGL, eine zu AIGLX äquivalente Schnittstelle zwischen dem macOS-Fenstersystem und OpenGL
  • GLX, die Schnittstelle, auf der AIGLX aufbaut
  • EGL, eine zu AIGXL äquivalente Schnittstelle zwischen dem Fenstersystem und OpenGL ES sowie OpenVG

Weblinks

Einzelnachweise

  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

Auf dieser Seite verwendete Medien

Linux graphics drivers DRI current.svg
(c) Shmuel Csaba Otto Traian, CC BY-SA 3.0
Schema des Linux Kernel Grafikstapels; die aktuelle Direct Rendering Infrastructure, jegliche GPU-Zugriffe erfolgen durch den Direct Rendering Manager.
Linux3ddesktop.png
Ubuntu Edgy + Beryl (Linux Desktop 2007)