# Xgl

Xgl ist eine Implementierung eines Display Servers (zentrales Element eines Fenstersystems) für das X11-Protokoll. Xgl basiert auf der glitz Programmbibliothek, um auf die OpenGL API zuzugreifen, um damit hardwarebeschleunigt abzulaufen. Das Projekt befand sich zwischen 2006 und 2008 in der Frühphase seiner Entwicklung, wurde aber im Juni 2008 eingestellt.
Die Entwicklung der Xgl-Architektur gab der Novell-Mitarbeiter David Reveman Ende 2004 bekannt. Der Quellcode wurde am 2. Januar 2006 geöffnet und in das freedesktop.org-Projekt einbezogen. Im Zuge dessen veränderten die Entwickler die Programmstruktur stark, um die Aufnahme zusätzlicher Grafiktreiber zu erleichtern.
Xgl sollte auf dem Linux-Desktop zusätzliche Effekte wie Transparenz, Schattierungen oder Animationen ermöglichen, welche die 3D-Funktionen moderner Grafikkarten ohne zusätzliche Belastung des Prozessors ausnutzen. Gegenwärtig verfügen die meisten zeitgemäßen PCs über ausreichend leistungsfähige Grafikkarten, jedoch bieten viele Hersteller keine Open-Source-Treiber für die unterstützten Plattformen an.
Technisch gesehen wird in einem normalen, klassischen X-Server ein Fenster gestartet, in dem durch OpenGL die direkte Kommunikation mit der Grafikkarte erlaubt wird. Dieses Fenster verhält sich dem Window-Manager und anderen Programmen gegenüber als der eigentliche X-Server, ähnlich wie beispielsweise Xnest. Die Ausgabe des Fensters ist auch das, was dem Nutzer auf den Bildschirm ausgegeben wird.

## Composition- und Window-Manager

Im Zuge der Entwicklung des Novell Linux Desktop 10 wurde mit Compiz ein erster, experimenteller Composition-Manager entwickelt, der die neuen Möglichkeiten von Xgl demonstriert. Eine wichtige Besonderheit von Compiz ist, dass es neben der Compositing-Funktionalität gleichzeitig auch als Fenstermanager fungiert. Es ersetzt derzeit standardmäßig in einer Desktop-Umgebung den entsprechenden Fenstermanager. In Compiz sind bereits Beispielanwendungen wie Transparenz, 3D-Anordnung virtueller Desktops, Live-Vorschau von Fenstern, stufenloses Zoomen und physikalische Eigenschaften für Fenster (auch als „Wobbly“-Effekt bezeichnet) realisiert, welche die Möglichkeiten von Xgl aufzeigen.
Andere Fenstermanager wurden später ebenfalls um Compositing-Funktionen erweitert, die auch mit Xgl genutzt werden können. Die Compiz-Abspaltung Beryl kann ebenfalls mit Xgl genutzt werden. Mitte 2007 wurden Beryl und Compiz wiedervereint. Beryl wurde zu Compiz Fusion umbenannt und gab den Kern des Projektes auf. Compiz Fusion stellt nun ausschließlich Plugins für Compiz (Kernkomponente des Programms) bereit.

## Xglx

Xglx war das erste Back-End, das für Xgl implementiert wurde und nimmt derzeit den Hauptteil der Entwicklungsarbeit ein. Es setzt einen bereits existierenden X-Server mit GLX voraus. Xgl soll in der Zukunft jedoch nicht auf einem X-Server laufen, sondern mit Xegl seine eigene Server-Implementierung erhalten.

## Xegl

Mit Xegl existiert ein langfristiges Ziel in der X-Entwicklung. Xegl ist ein Server, der via OpenGL direkt in den Framebuffer schreibt, wobei die Mesa-3D-Implementation der EGL API zum Einsatz kommt.
Bei Xegl soll die gesamte Grafikdarstellung über OpenGL erfolgen, sodass aktuelle Grafiktreiber einfacher konzipiert werden können. Diese sind derzeit in einzelne Teile für 2D- und 3D-Beschleunigung aufgespalten, was durch eine solche Vereinfachung entfallen würde. Ferner wird sämtlicher Quelltext, der vom Grafikkartentreiber abhängig ist, aus dem X-Server entfernt. So ist das Rendering des Servers unabhängig vom X-Server.
Nvidia und ATI haben signalisiert, dass sie im Falle eines stabilen API binäre Treiber für OpenGL-basierende X-Server veröffentlichen würden.

## Alternativen

Mit dem vom Fedora-Projekt initiierten AIGLX existiert eine weitere Variante für Linux und andere Unix-Plattformen.
Hardwarebeschleunigte 2D-Darstellung ist bereits unter dem Namen „Quartz 2D Extreme“ in macOS 10.4 enthalten. Windows Vista verwendet eine ähnliche Technik.