Login
Login-Name Passwort


 
Newsletter
Werbung

Mi, 22. September 2010, 08:00

Software::Desktop

X.Org Mesa/Gallium3D lernt Direct3D 11

Gallium3D, die Hardware-Abstraktionsschicht von X.org für Grafikbeschleuniger, kann künftig mit den Funktionen von Direct3D 10 und 11 programmiert werden.

Seit Februar 2009 verfügt X.org über eine sehr flexible Hardware-Abstraktionsschicht für Grafikbeschleuniger - Gallium3D. Diese vereinfacht nicht nur die Treiberentwicklung, sondern ermöglicht die Implementierung beliebiger Programmierschnittstellen auf Anwendungsseite, etwa OpenGL oder OpenCL. Ein nun veröffentlicher Patch von Luca Barbieri fügt Direct3D 10/11 hinzu.

Gallium3D vereinheitlicht den Zugriff auf die Funktionen moderner Grafikbeschleuniger, etwa Shader-Einheiten. Unterschiedliche Hardware-Architekturen benötigen jeweils eigene Treiber, Programmierschnittstellen (Application Programming Interfaces, APIs) wie etwa OpenGL werden zentral implementiert und »State Tracker« genannt. Neben reiner Grafikbeschleunigung ist auch die Auslagerung von Berechnungen auf die Chips möglich, etwa über OpenCL. Passende Treiber sind derzeit in Entwicklung und befinden sich auf einem guten Weg.

Barbieri fügte nun einen »d3d1x« genannten State Tracker für Direct3D 11 hinzu. Dieser arbeitet noch nicht perfekt, soll jedoch bereits einfache Demonstrationen mit Texturen und Shadern darstellen und in Zukunft auch Direct3D 10/10.1 unterstützen. Ältere Versionen wie etwa Direct3D 9 würden sich zu stark unterscheiden, für diese wäre eine separate Implementierung notwendig.

Laut Barbieri sei das primäre Ziel die Einlösung der von Gallium3D gemachten Versprechen gewesen: Mehrere Programmierschnittstellen auf Basis derselben Hardware anzubieten, ohne aufwendige Zwischenschichten, etwa die Emulation von Direct3D über OpenGL. Eine solche Emulation nutzt etwa die alternative Windows-API-Implementierung Wine derzeit.

Ein sekundäres, für viele Nutzer aber wohl weit bedeutenderes Ziel dürfte in der Anbindung an Wine liegen. Dieses müsste dann nicht mehr länger OpenGL als Emulation einsetzen, sondern könnte die von den Windows-Anwendungen geforderten Funktionen direkt an Gallium3D durchreichen. Die proprietären Grafiktreiber von AMD und NVIDIA arbeiten derzeit nicht mit Gallium3D zusammen, könnten aber laut Barbieri durch einen »dünnen OpenGL-Wrapper« mit einbezogen werden. Eine entsprechende DLL liegt noch nicht vor, soll aber einfach zu implementieren sein. Wine könnte von dieser Entwicklung deutlich profieren: Derzeit verfügt die Kompatibilitätsschicht nur über eine sehr eingeschränkte Unterstützung von Direct3D 10.

Das dritte erklärte Ziel von Barbieri birgt dagegen durchaus Potential für politischen Sprengstoff: Direct3D 10/11 sei demnach wegen der deutlich kleineren API und des modernen Designs OpenGL überlegen, und per Definition stabiler. Ein Beweis dafür sei die Größe seines Patches gegenüber der des existierenden OpenGL-State-Trackers. Da sich die standardisierende Khronos Group einer deutlichen Überarbeitung von OpenGL bislang verweigert habe, insbesondere durch Ablehnung des mit dem Codenamen »Longs Peak« betitelten ürsprünglichen Vorschlags für OpenGL 3.0, sei OpenGL technologisch zurückgefallen und biete keine moderne Programmierschnittstelle. Direct3D solle seiner Meinung nach eine direkte Alternative zu OpenGL für Linux und andere freie Systeme werden.

Zusätzlich zu der API-Implementierung und einigen Demonstrationen enthält der Patch auch die Anwendung d3d11gears, eine verbesserte Version von glxgears.

Werbung
Kommentare (Insgesamt: 39 || Alle anzeigen || Kommentieren )
Re[4]: Hm, welchen Treiber nehm ich denn (Nille02, Do, 23. September 2010)
Re[3]: Hm, welchen Treiber nehm ich denn (Anonymous, Do, 23. September 2010)
Re[4]: Mhhh... (Anonymous, Do, 23. September 2010)
Re[2]: quark (HA, Do, 23. September 2010)
Re[2]: quark (fghjdfu@cdu.de, Do, 23. September 2010)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung