Direct3D-9-Unterstützung für Open-Source-Grafiktreiber

Durch experimentelle Erweiterungen für Mesa 3D und Wine können mit Wine ausgeführte Windows-Anwendungen die 3D-Beschleunigung mancher Open-Source-Grafiktreiber nutzen, ohne dass die Direct3D-9-Befehle erst in OpenGL gewandelt werden müssen.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 2 Min.
Von
  • Thorsten Leemhuis

Christoph Bumiller hat Patches für Wine und Mesa 3D veröffentlicht, durch die Wine Direct3D-9-Befehle direkt an das Gallium-3D-Framework von Mesa 3D übergeben kann. Dadurch braucht Wine die Direct3D-9-Befehle nicht mehr in OpenGL-Befehle umsetzen, wie es derzeit WineD3D macht, damit Direct3D-9-Anwendungen unter Wine die 3D-Beschleunigung von Grafikkernen nutzen können. Das Entfallen dieser Wandlung kann die Performance verbessern; bei einigen groben Schnelltests lieferten einige Spiele laut Bumiller doppelt so hohe Bildraten.

Hauptbestandteil der Patches ist ein Direct3D-9-State-Tracker für Mesa 3D, durch den dessen Gallium-3-Framework Direct3D-9-Befehle annehmen und interpretieren kann; auf Gallium 3D aufbauende 3D-Grafiktreiber können sie dann weiterverarbeiten und an die Grafikhardware übergeben. Die in Mesa 3D enthaltenen und bei Linux-Distributionen meist standardmäßig genutzten Open-Source-3D-Treiber für Grafikkerne von AMD und Nvidia sind solche Treiber; der für Intel-Hardware ist es ebenso wenig wie die proprietären Linux-Grafiktreiber von AMD und Nvidia. Bumiller hat den State-Tracker nicht komplett selbst entworfen, sondern vor drei Jahren von Joakim Sindholt gestarteten Code aufgegriffen und verbessert.

Ein zweiter Satz Patches von Bumiller ändert Wine, damit das den Direct3D-9-State-Tracker von Gallium 3D nutzt und sich die Umwandlung in OpenGL spart. Der auch durch seine Arbeit am freien Nvidia-Treiber Nouveau bekannte Bumiller hat zudem ein kurzes Dokument geschrieben, das erläutert, wie man seine Patches einsetzt. In der Ankündigung nennt er zudem einige Gründe, warum er nicht einen unfertigen Direct3D-10/11-State-Tracker verbessert hat – so nutze dieser nicht C++ sondern C und der DIrect3D-9-State-TGracker arbeite bereits mit echten Applikationen.

Es ist derweil noch ungewiss, ob Bumillers Direct3D-State-Tracker in das von allen Mainstream-Linux-Distributionen verwendete Mesa 3D einzieht; Marek Olšák, der unter anderem an den freien Radeon-Treibern mitarbeitet, hat sich deutlich für die Aufnahme ausgesprochen und den State-Tracker als das wichtigste Projekt seit Mesa 1.0 bezeichnet. (thl)