Open Source im professionellen Einsatz

OpenGL-beschleunigter Desktop mit XGL und Compiz

Nicht nur fürs Auge

Mit Hilfe von OpenGL lassen sich Grafikoperationen moderner Desktops wesentlich beschleunigen. Der XGL-X-Server realisiert im Zusammenspiel mit dem Composite-Manager Compiz beeindruckende Effekte.

Groß war einst die Begeisterung der Mac-Fans, als Apple die Grafikschnittstelle Quartz Extreme vorstellte [1], die Desktop-Effekte mit 3D-Hardware beschleunigt. Demnächst wird Microsofts Windows Vista mit Aero zum Mac aufschließen. In der Unix-Welt hat Novell/Suse mit XGL [2] eine vergleichbare Technologie implementiert, die ähnliche Effekte und Bedienkonzepte ermöglicht.

Fortschritt

Nach längerem Stillstand bei der Entwicklung des X-Servers haben die Programmierer in den letzten Jahren neue Funktionen eingebaut, welche die Basis für die neue XGL-Technologie legten. Moderne GUI-Bibliotheken wie Qt und GTK verwenden bereits etliche dieser neuen Funktionen, ohne dass der Benutzer von ihrer Existenz weiß. Die beiden wichtigsten Protokollerweiterungen Render und Composite spielen auch für XGL eine wichtige Rolle.

Die Render-Erweiterung führt neue Basisprimitive für die Darstellung von Bildern und Polygonen ein sowie ein neues Glyphensystem für verbesserte Schriftdarstellung. Damit wird insbesondere dem Umstand Rechnung getragen, dass die alten Grafikbefehle - so genannte Core Requests - nicht mehr den Anforderungen aktueller Toolkits wie Qt und GTK entsprechen.

Alle Primitive lassen sich nun über die Porter-Duff-Operatoren [3] mit den bereits im Framebuffer befindlichen Daten verknüpfen, was unter anderem die Darstellung semitransparenter Flächen (Alpha Blending) und Schriften mit Antialiasing (Pixel Coverage) erlaubt. Gerade von Letzterem machen viele moderne Anwendungen ausgiebig Gebrauch.

Das bisher in X11 verwendete Fenstersystem erlaubt zwar überlappende Fenster, bietet aber keine Möglichkeit, in unsichtbaren Fensterbereichen zu zeichnen und deren Inhalt auf irgendeine Weise darzustellen. Dies ist nur möglich, wenn alle Fenster erst in einen nicht sichtbaren Bereich des Framebuffers gezeichnet werden, um sie danach im sichtbaren Framebuffer zusammenzufügen (Compositing). Genau dies macht die Composite-Erweiterung des X-Servers.

Das Zusammensetzen aller Fenster zu einem stimmigen Ganzen übernimmt ein externer Prozess, der Composite-Manager heißt, analog zum altbekannten Window-Manager. Er kann zum Beispiel mit Hilfe der Render-Erweiterung mehrere Fenster semitransparent übereinander zeichnen. Da Composite- und Window-Management eng verzahnt sein müssen, werden in Zukunft immer mehr so genannte Composite-Window-Manager auftauchen, die beide Prozesse miteinander verschmelzen.

Schneller zeichnen

Ein weiterer wichtiger Bestandteil des X-Servers, der dringend einer Erneuerung bedarf, ist die Beschleunigungsarchitektur, die für die effiziente Umsetzung der Grafikbefehle auf die Hardware zuständig ist. Die bisher verwendete Architektur XAA ist auf Core Requests zugeschnitten und nur schwer erweiterbar. Daher ist sie am Ende ihrer langen Laufbahn angekommen und muss vollständig ersetzt werden. Die den größten Erfolg versprechenden Alternativen heißen EXA und OpenGL.

Während EXA relativ übersichtlich und leicht zu implementieren ist (siehe den Artikel zu X.org in diesem Heft), besitzt OpenGL den Vorteil, eine weit verbreitete Programmierschnittstelle zu sein, für die es bereits funktionierende Treiber gibt. Der X-Server braucht sich also nicht selbst um die Ansteuerung der Hardware zu kümmern. Außerdem muss mit einem OpenGL-basierten Server in der fernen Zukunft nur noch eine Schnittstelle zur Grafikhardware gepflegt werden und nicht zwei getrennte Systeme für XAA/EXA und OpenGL.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook