PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : welche Grafikkarten-Feautres benötigt wine für DirectX?



Hoshpak
27.05.06, 09:36
Nachdem ich auf den "nv"-Treiber umgestiegen bin wollte ich mal wieder ein paar alte Spiele ausprobieren, die afaik keine besonderen Beschleunigungsfeatures benötigen:
Siedler 2, Siedler 3 und Age of Empires. während Siedler 2 mit dosbox noch perfekt läuft machen die anderen ein paar mehr Probleme, sie sind insgesamt sehr langsam und wenn eines der Spiele mit 1024x760 läuft benötigt X.org 100% Prozessorauslastung und verlangsamt sogar das gesamte System. Dieses Verhalten ist mir schon bei der Videowiedergabe auf älteren onboard-Grafikchips bekannt. Deswegen meine Frage, welche Beschleunigungsfeautres benötigt wine für eine 2D DirectX 6.0 Emulation?

xanlosch
27.05.06, 12:32
Wenn der X-Treiber keine Hardwarebeschleunigung kann, wie soll es dann Wine schaffen ? Wine setzt ja nur auf den Möglichkeiten des X-Servers und damit des X-Treibers auf.

Edit: Dadurch, dass der NV-Treiber ja kein 2D / 3D so gut kann (von der hardwaremäßigen Unterstützung aus gesehen) und dadurch alle Arbeiten vom Prozessor übernommen werden müssen und auch Wine sehr prozessorintensiv ist (Mapping der Windows-API-Aufrufe auf Linux-API), ist es ja auch kein Wunder, dass dann dein Prozessor ordentlich ausgelastet ist.

Hoshpak
27.05.06, 15:29
Hm, danke fürdeine Antwort, ich hätte jetzt gedacht, dass nach den Aussagen des nv-Projektes die 2D-Beschleunigung funktioniert (aber gut, über deren Qualität wird keine Aussage gemacht), also scheint in diesem Punkt wine andere Funktionen zu verwenden als z.b. SDL (denn 2D Linuxspiele funktionieren nach wie vor perfekt und mit relativ geringer Prozessorauslastung).

ciruZ
27.05.06, 16:14
Also solange die Spiele nur DirectDraw nutzen ist das kein Thema. Interessant wird es allerdings, wenn die Spiele Direct3D für die 2D-Ausgabe nutzen. Das ist auf beschleunigter Hardware zwar schneller, auf unbeschleunigter eben nicht.
Ich erinnere mich da grade, wie ich sämtliche 2D-Spiele wieder ausgepackt habe, um sie auf dem Laptop mit Wine zu spielen, da der sis-Treiber komplett unbeschleunigt ist ;).


Edit: Dadurch, dass der NV-Treiber ja kein 2D / 3D so gut kann (von der hardwaremäßigen Unterstützung aus gesehen) und dadurch alle Arbeiten vom Prozessor übernommen werden müssen und auch Wine sehr prozessorintensiv ist (Mapping der Windows-API-Aufrufe auf Linux-API), ist es ja auch kein Wunder, dass dann dein Prozessor ordentlich ausgelastet ist.
Das ist sowas von egal, da DirectDraw mit wine sowieso immer unbeschleunigt abläuft, es sei denn, du nutzt DGA oder hast den OpenGL-Patch, der das Rendering über OpenGL macht. Unter X11 ist alles an 2D unbeschleunigt, was nicht über DGA oder OpenGL läuft (ok, es gibt schon noch ein paar Beschleunigungsmöglichkeiten mehr, aber im Hinblick auf Spiele sind die fast alle zu vernachlässigen).

Hoshpak
27.05.06, 18:29
nutzt wine denn per default dga? Ich kompiliere mir gerade mal ein Wine ohne dga und opengl, ich hoffe, dass es dann funktioniert.

xanlosch
27.05.06, 18:39
Per default glaube nicht. Du musst es in der Registry aktivieren. HKEY_CURRENT_USER\Software\Wine\X11 Driver ist der allgemeine Registry-Schlüssel dafür. Dann sollte ein "UseDGA" existieren, dessen Wert entweder "Y" für die Aktivierung von DGA ist, bzw "N" fürs deaktivieren.

Wine ohne Unterstützung für OpenGL zu bauen (DGA geht gar nicht), ist keine gute Idee und bringt dir u.U. nur mehr Probleme.

Hoshpak
27.05.06, 18:46
Aha, muss ich bei Gelegenheit mal nachschauen, ich war bis jetzt froh, mich nicht mit der Registry auseinandersetzen zu müssen. Wegen Opengl müsste nach meinem Verständnis Wine mangels Treiberunterstützung auf Mesa zurückgreifen, also kann es kaum schaden, das zu deaktivieren. Bei dga habe ich einfach die Headers entfernt und bin jetzt davon ausgegangen, dass Wine ohne Headaers auch keine Unterstützung dafür kompilieren kann.

EDIT:Naja, Wine ist fast durch, gleich weiß ich mehr.

ciruZ
27.05.06, 18:59
Wegen Opengl müsste nach meinem Verständnis Wine mangels Treiberunterstützung auf Mesa zurückgreifen, also kann es kaum schaden, das zu aktivieren.
Das ist gleich total falsch.
Das ist nur bei ner Karte, die 3D-beschleunigt ist, schneller. Ohne die ist es noch langsamer, da der Prozessor dann auch noch unnötige 3D-Rechnungen machen muß!

Wegen DGA: Das mußt du eh im X11 aktivieren. Und die Rechte auch noch manuell setzen und alles. Das ist daher mit ziemlicher Wahrscheinlichkeit eh aus.

Hoshpak
27.05.06, 19:11
Das ist gleich total falsch.
Das ist nur bei ner Karte, die 3D-beschleunigt ist, schneller. Ohne die ist es noch langsamer, da der Prozessor dann auch noch unnötige 3D-Rechnungen machen muß!

Eben und deswegen habe ich es ja deaktiviert, wenn es nicht benutzt wird, kann es auch nichts verlangsamen, sorry, habe ich mich aber auch verschrieben.

ciruZ
27.05.06, 20:29
Aso, ich dachte schon ;).

Hoshpak
28.05.06, 09:45
So, ich habe jetzt Wine kompiliert (war aber gestern zu müde zum posten), leider hat sich nichts geändert, es muss im Prinzip an der Grafikkarte liegen, da die selben Spiele mit dem nvidia Binärtreiber noch funktioniert haben (aber eben mit bugs in der dinput.dll, weswegen ich sie früher nicht spielen konnte). Welche Wine-Version hast du denn auf deinem Laptop verwendet? Vielleicht würde ja eine ältere Version funktionieren.

xanlosch
28.05.06, 12:14
Damit Wine bzw. das Spiel die CPU nicht so sehr belasten (Wine tut es auf jeden Fall), musst du einen hardwarebeschleunigten Grafikkartentreiber nutzen. Machst du dies nicht, dann müssen alle Grafikberechnungen von der CPU übernommen werden. Die Grafikkarte bzw. der Prozessor der Grafikkarte macht nichts weiter als die Darstellung der aufbereiteten Daten, die von der CPU geliefert werden.

Ergo: Willst du dein System nicht bei der Nutzung von Wine und Spielen so sehr auslasten, dann musst du einen Treiber installieren, der die Grafikkartenhardware richtig anspricht, sonst wird das nichts.

ciruZ
28.05.06, 12:32
Damit Wine bzw. das Spiel die CPU nicht so sehr belasten (Wine tut es auf jeden Fall), musst du einen hardwarebeschleunigten Grafikkartentreiber nutzen. Machst du dies nicht, dann müssen alle Grafikberechnungen von der CPU übernommen werden. Die Grafikkarte bzw. der Prozessor der Grafikkarte macht nichts weiter als die Darstellung der aufbereiteten Daten, die von der CPU geliefert werden.
Das gilt jedoch _NUR_ und auch nur für OpenGL und Direct3D. Bei allem anderen macht es keinen Unterschied, ob du nun einen beschleunigten oder unbeschleunigten Treiber hast. Ergo irrelevant, da wir hier nicht von 3D-Spielen reden und die meisten 2D-Spiele auch mit DirectDraw laufen (Diablo II beispielsweise kann DirectDraw und Direct3D).


Ergo: Willst du dein System nicht bei der Nutzung von Wine und Spielen so sehr auslasten, dann musst du einen Treiber installieren, der die Grafikkartenhardware richtig anspricht, sonst wird das nichts.
Auch das gilt nur bei OpenGL & Direct3D und ist daher für ihn nicht von Bedeutung, da er 2D-Spiele spielen wollte.

@Hoshpak: Das war vor Ewigkeiten, welche Version das war, weiß ich nicht mehr. Mach ich jetzt auch nicht mehr, da ich kein Linux mehr auf dem Laptop habe, nur noch OpenBSD & NetBSD. Naja, NetBSD hat den neuen wine ja glaub ich jetzt am laufen, aber das hab ich noch nicht ausprobiert.

Hoshpak
28.05.06, 13:02
Also gut, danke füreuere Antworten, ich werde dann mal ein paar ältere Wine-releases und einen Computer mit unbeschleunigter Onboard-Grafikkarten ausprobieren.

xanlosch
28.05.06, 16:03
ciruZ, es sieht in den neueren Wine-Versionen anders aus. Dort wurde DirectX und DirectDraw in WineD3D gemergt. Damit hat DirectX und DirectDraw an sehr vielen eine gleiche Codebasis, womit sich der Pflegeaufwand in der Zukunft in Grenzen halten wird.

Wenn ich mich aber noch recht erinnere, war die Prozessorlast bei älteren Wine-Versionen (2003-, 2004-) mit dem hardwarebeschleunigten Nvidia-Treiber um einiges geringer bei DirectDraw-Spielen. Kann mich aber auch da leicht täuschen.

ciruZ
28.05.06, 18:40
xanlosch, es hat sich auch bei den neueren Versionen nicht geändert, daß DirectDraw standardmäßig unbeschleunigt ist. Ja, Direct3D wurde zu DirectX gemerged (sorum!), um Code Duplication zu verringern. D.h. Direct3D nutzt jetzt auch DirectDraw Funktionen etc. DirectDraw braucht aber weiterhin kein Direct3D. Und es gibt auch weiterhin nur 2 Möglichkeiten, DirectDraw zu beschleunigen: DGA (unschön) oder mit einem Patch, der das über OpenGL löst.