Spielen unter Linux

In den letzten Tagen gab es einige Diskussionen um den Direct3D 9 Gallium State Tracker mit dem man auf Linux native D3D9 benutzen kann. Gallium 3D ist eine Treiber Architektur die von den freien AMD und NVIDIA Treibern genutzt wird. Statt jede Grafik API für jeden Chip zu implementieren was zu viel Doppelarbeit führt wird bei Gallium die API in einem State Tracker implementiert der unabhängig von der Hardware ist. Die APIs (D3D9, OpenGL etc.) werden dann in eine Zwischenrepräsentation umgewandelt (TGSI Tungsten Graphics Shader Infrastructure) die dann von den Gallium Treibern genutzt wird. Wird also eine API wie Direct3D als State Tracker eingeführt ist sie für jede Hardware direkt verfügbar.

Der D3D9 State Tracker ist aber (noch) nicht in der Entwicklungsversion vorhanden und muss selbst kompiliert werden. https://github.com/chrisbmr/Mesa-3D/tree/gallium-nine Für diverse Distros gibt es aber inoffizielle Pakete. Dadurch kann man in Wine Spielen D3D9 nativ nutzen ohne das Wine D3D9 in OpenGL übersetzen muss was die Performance um bis zu 100% steigt.

gallium-nine vs Unigine Valley | Gears on Gallium

Hier kann man sehen, dass die Wine Version von Unigine Valley im D3D9 Modus mit Gallium D3D9 sogar leicht schneller ist als Unigine Valley für Linux mit OpenGL oder Unigine Valley für Windows über Wine im OpenGL Modus. Geht man den Weg den Wine Spiele normalerweise gehen also D3D -> WineD3D -> OpenGL halbiert sich die Performance. Mich würde es nicht wundern, wenn Unigine Valley per Wine mit D3D9 und Gallium genau so schnell ist wie Valley auf Windows im D3D9 Modus.

GTA IV läuft damit sogar per Nouveau auf einer NVIDIA Karte recht gut:
https://www.youtube.com/watch?v=ZBRvrssenuc

Dabei haben NVIDIA Karten, dass Problem das der freie Treiber nicht die Karte hoch und runtertakten kann und normal nur im Energiesparmodus läuft. Mit dem neusten Linux Kernel kann man für Kepler Karten nun manuel die Karte in ein höheren Taktmodus setzten was leider noch unterschiedlich gut klappt je nach Karte. Im Video lief die Karte nichteinmal mit der allerhöchsten Taktstufe. Laut Video-Author läuft GTA so aber schneller als mit dem echten NVIDIA Treiber, der zwar perfekt taktet aber bei dem Wine D3D9 erst übersetzen muss.

Es gibt auch einen D3D10/11 State Tracker der vor ein paar Jahren hinzugefügt wurde und nun neu geschrieben wird. Damit könnte man Battlefield 4 nativ unter Linux Spielen was die Grafik angeht, Wine würde dann nur noch Sound, Input und Prozesse auf Linux Systemaufrufe übersetzen, was kaum die Leistung beeinflussen sollte.

https://github.com/chrisbmr/Mesa-3D/tree/d3d11-rewrite

Wer also ein bisschen Fummeln möchte hat hier etwas für verregnete Tage. Wine muss auch mit inoffiziellen Patches neugebaut werden um direkt in den Gallium State Tracker sich ein zuklinken. Wine akzeptiert diese Patches nicht, weil sie nur für Linux Nutzer wären (Wine ist ein Mac/Linux Projekt) und auch nur für Linux Nutzer mit den offenen Gallium Treiber (der offene Intel Treiber nutzt z.B. kein Gallium 3D).

http://www.phoronix.com/scan.php?page=news_item&px=MTU2OTQ

Würde AMD Mantle offenlegen, könnte man wahrscheinlich sogar ein State Tracker für Mantle schreiben und Mantle dann auf Linux mit NVIDIA Karten nutzen. :ugly:
 
Zuletzt bearbeitet:
Zurück