PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wieviel Performance frisst DirectX gegenüber direkter Programmierung???


INTRU
2003-04-03, 11:45:35
Wieviel Performance geht aufgrund von Schnittstellen wie DirectX und OpenGl verloren??? Oder andersrum: Wieviel "Mehrperformance" wäre bei direkter Programmierung der Grafikchips zu erwarten???

Unregistered
2003-04-03, 11:50:41
Assembler, C++, ObjectC, Delphi...

incl. OS, ohne? Welches OS?


IMHO so pauschal gefragt gibt's darauf keine Antwort.

Endorphine
2003-04-03, 11:55:47
Die Frage ist sowieso rein theoretisch, da weder ATI noch nVidia die low-level Interna ihrer Produkte veröffentlichen werden. In der Theorie kannst du aber endlose Microcodeorgien starten und dann deutlich mehr Leistung rausholen als mit C++ unter nem Betriebssystem. Aber der Aufwand...

Bei 3D-Grafik jedes Bit einzeln durch die Gegend schieben? Hülfä... ;)

Unregistered
2003-04-03, 12:00:54
Originally posted by Endorphine
Die Frage ist sowieso rein theoretisch, da weder ATI noch nVidia die low-level Interna ihrer Produkte veröffentlichen werden. In der Theorie kannst du aber endlose Microcodeorgien starten und dann deutlich mehr Leistung rausholen als mit C++ unter nem Betriebssystem. Aber der Aufwand...

Bei 3D-Grafik jedes Bit einzeln durch die Gegend schieben? Hülfä... ;)


Passiert nicht genau das in "abgeschwächter" Form auf Konsolen???

zeckensack
2003-04-03, 12:04:30
Viel Low-Leveliger als OGL kann's garnicht mehr werden.
Wenn der Treiber sauber und 'gut' ist, dann kommt dort bereits das Optimum raus. OGL kann im 'User-Land' States und Draw-Commands batchen, was IMO einer der Gründe dafür sein dürfte daß es in Extremfällen bisserl näher ans theoretische Maximum kommt als D3D.

D3D hat zusätzlich noch den Runtime-Layer, und erst dahinter, im Kernel-Land, den Treiber.

Der Übergang von 'User-Land' nach 'Kernel-Land' ist übrigens ein Wechsel des OS-Privilegien-Levels. Apps/Spiele laufen im User-Land, Teile des OS und Treiber mit Kernelprivilegien. Dafür muß der Prozessor in einen anderen Betriebsmodus wechseln, wo andere Rechte gelten (vor allem direkter HW-Zugriff). Das muß man nicht wirklich im Detail verstehen, aber es ist ein relativ teurer Vorgang. Je seltener, desto besser.

Endorphine
2003-04-03, 12:08:08
Originally posted by Unregistered
Passiert nicht genau das in "abgeschwächter" Form auf Konsolen??? Meines Wissens nach gibts dafür hochspezialisierte Entwicklungsumgebungen. Und dann hast du bei Konsolen den unschlagbaren Vorteil, dass es genau eine Konfiguration gibt, an der sich für den Entwickler nichts ändert. Das ganze System ist absolut deterministisch.

Selbst wenn du die Möglichkeiten hast, eine bestimmte Grafikkarte auf der untersten Ebene anzusprechen: was ist mit dem restlichen Rechner? Selbst wenn du es hinbekommst, auch über alle anderen relevanten Controller die Kontrolle zu übernehmen würdest du ein Programm schreiben, was nur auf einem einzigen Rechner läuft. Das kann doch nicht Sinn der Sache sein, oder?

Unregistered
2003-04-03, 12:12:27
Aber liegt diese "unterste" Ebene bei Konsolen nicht doch noch tiefer als bei dem PC aufgrund von Direct X???

bzw. die Entwicklungsumgebung (bzw. Schnittstelle) ist perfekt auf die entsprechende Hardware angepasst!!!


Es hiess mal: Die erste Generation der Spiele der X-Box wird DirectX nuten ... die spätere Generation wird nicht mehr DirectX nuten.



???

PS:

DirectX auf der Box soll (aus verständlichen Gründen) viel hardwarenaher sein als auf dem PC

Demirug
2003-04-03, 12:13:17
Die alte Frage die immer wieder auftaucht. Sie ist schon so alt wie es es Grafikkarten im PC gibt. Schon zu Anfang gab es sowas wie eine GrafikAPI (Funktionen des Video-BIOS) Allerdings mit nur ganz einfachen Funktionen (Modus wechsel, Pixel setzten, Pixel lesen, ...) alles was aufwendiger (Linie zeichnen) musste man selbst machen. Für was ordentliches war das Bios aber zu langsam. Glücklicherweise waren zu diesem Zeitpunkt aber alle Grafikkarten (gleichen Typs CGA, EGA, VGA) auch von der Hardwareansteuerung identisch. Deshalb bekamm man auch viele Informationen wie man das BIOS umgeht und Geschwindigkeit bekamm. Mit dem aufkommen der Super VGA Karten war das dann aber vorbei. Jeder Hersteller kochte da sein eigenes süpchen und weil es den Entwickler keinen Spass gemacht hat für jede Karte anpassungen zu schreiben und die SVGA Modies deshalb ignorierten wurde die erste richtige GrafikAPI ins Leben gerufen. Der sogenannte VESA-Standard. Und seit diesem Zeitpunkt läuft eigentlich alles nur noch über Treiber und APIs die Hardwareneutrale Kommandos in Hardwarespezifische umsetzten.

Demirug
2003-04-03, 12:39:57
Originally posted by zeckensack
Viel Low-Leveliger als OGL kann's garnicht mehr werden.
Wenn der Treiber sauber und 'gut' ist, dann kommt dort bereits das Optimum raus. OGL kann im 'User-Land' States und Draw-Commands batchen, was IMO einer der Gründe dafür sein dürfte daß es in Extremfällen bisserl näher ans theoretische Maximum kommt als D3D.

D3D hat zusätzlich noch den Runtime-Layer, und erst dahinter, im Kernel-Land, den Treiber.

Der Übergang von 'User-Land' nach 'Kernel-Land' ist übrigens ein Wechsel des OS-Privilegien-Levels. Apps/Spiele laufen im User-Land, Teile des OS und Treiber mit Kernelprivilegien. Dafür muß der Prozessor in einen anderen Betriebsmodus wechseln, wo andere Rechte gelten (vor allem direkter HW-Zugriff). Das muß man nicht wirklich im Detail verstehen, aber es ist ein relativ teurer Vorgang. Je seltener, desto besser.

Das batchen geht bei D3D inzwischen auch ganz gut. Das "Problem" bei D3D ist ebene das es zwei Übergänge gibt. Einmal von der API in die Treiber-API und dann noch mal in die Spezifischen Hardware kommandos.

mapel110
2003-04-03, 12:43:58
wenn ich an die anfangszeiten von win3.1 zurückdenke und welche games dafür rauskamen, dann waren da etliche games, in denen man förmlich gespürt hat, dass da ne menge performance verloren geht.
mit direkt3d hat sich das aber imo wesentlich gebessert.
heute gehts ja nicht mehr ohne.

Demirug
2003-04-03, 12:45:39
Originally posted by Endorphine
Meines Wissens nach gibts dafür hochspezialisierte Entwicklungsumgebungen. Und dann hast du bei Konsolen den unschlagbaren Vorteil, dass es genau eine Konfiguration gibt, an der sich für den Entwickler nichts ändert. Das ganze System ist absolut deterministisch.

Selbst wenn du die Möglichkeiten hast, eine bestimmte Grafikkarte auf der untersten Ebene anzusprechen: was ist mit dem restlichen Rechner? Selbst wenn du es hinbekommst, auch über alle anderen relevanten Controller die Kontrolle zu übernehmen würdest du ein Programm schreiben, was nur auf einem einzigen Rechner läuft. Das kann doch nicht Sinn der Sache sein, oder?

Die modernen Konsolen (X-Box, Gamecube) benutzten inzwischen auch APIs für die Grafikprogrammierung das was die PS2 macht kann man ja auch eigentlich keinem mehr zumuten.

Genau Endorphine wenn man schon anfängt dann muss man auch den AGP-Controller von Hand programmieren und so weiter und so weiter.

Demirug
2003-04-03, 12:53:07
Originally posted by Unregistered
Aber liegt diese "unterste" Ebene bei Konsolen nicht doch noch tiefer als bei dem PC aufgrund von Direct X???

bzw. die Entwicklungsumgebung (bzw. Schnittstelle) ist perfekt auf die entsprechende Hardware angepasst!!!

Genau, das DirectX auf der XBox sieht nur für den Entwickler so ähnlich aus wie das DirectX für den PC. Intern arbeit da alles ganz anders zudem entfallen auf der XBox die von zeckensack angesprochenen Wechsel des Betriebsmodus.

Es hiess mal: Die erste Generation der Spiele der X-Box wird DirectX nuten ... die spätere Generation wird nicht mehr DirectX nuten.

???

Es heist viel bis der Tag lang ist. Sagen wir mal so das DirectX der XBox hat noch einen speziellen Highperformances Modus. Der ist aber nur was für die ganz Wahnsinnigen.

PS:

DirectX auf der Box soll (aus verständlichen Gründen) viel hardwarenaher sein als auf dem PC

Ja alles was der NV2A nicht kann ist Rausgefolgen dafür gibt es dann noch ein paar NV2A Spezialitäten dazu. Zudem wurde alles entfernt was mit dem Caps System im Zusammenhang steht.

Unregistered
2003-04-03, 15:30:07
Originally posted by INTRU
Wieviel Performance geht aufgrund von Schnittstellen wie DirectX und OpenGl verloren??? Oder andersrum: Wieviel "Mehrperformance" wäre bei direkter Programmierung der Grafikchips zu erwarten???

bis zu 200%

roman
2003-04-04, 14:21:06
Originally posted by mapel110
wenn ich an die anfangszeiten von win3.1 zurückdenke und welche games dafür rauskamen, dann waren da etliche games, in denen man förmlich gespürt hat, dass da ne menge performance verloren geht.
mit direkt3d hat sich das aber imo wesentlich gebessert.
heute gehts ja nicht mehr ohne.

öhm, AFAIK gabs "richtige" windows3.1-games eh nur in der endphase, d.h. vor dem sprung auf windows95 - meist so 08/15-interaktive filmchen, bei denen man eine von drei antworten anklicken konnte, um dann staunend das nächste video am PC (!!!) zu begaffen. das meiste kam nach wie vor für DOS raus. selbst als win95 schon am markt war, wurde bei den games teilweise eine installation unter DOS und eine unter win95 angeboten.

StefanV
2003-04-04, 14:54:49
Naja, Civilisation gabs schon für Windows 3.1, das brauchte IIRC auch WinG, sozusagen ein Vorläufer von DirectX ;)

roman
2003-04-04, 15:16:18
jo, er schrieb aber "anfangszeiten". sorry für die wortklauberei ;)

GloomY
2003-04-04, 16:24:21
Originally posted by Endorphine
Meines Wissens nach gibts dafür hochspezialisierte Entwicklungsumgebungen. Und dann hast du bei Konsolen den unschlagbaren Vorteil, dass es genau eine Konfiguration gibt, an der sich für den Entwickler nichts ändert. Das ganze System ist absolut deterministisch.Ein PC ist genauso deterministisch. Da gibt es keinen Unterschied.

mapel110
2003-04-04, 16:35:02
Originally posted by Romanski
jo, er schrieb aber "anfangszeiten". sorry für die wortklauberei ;)

naja, als win3.1 nicht mehr wegzudenken war, weil word und excel nurnoch unter windows liefen usw usw usw.
naja, war bloed ausgedrückt von mir, geb ich zu. war halt schon spät :D

Unregistered
2003-04-11, 12:18:04
ich hab da immernoch so ein Test mit Descent3 vor Augen, Voodoo5 (Glide) gegen GF3 (DX).

Irgendwie war die V5 doppelt so schnell wie die GF. Krass.

Jog
2003-04-21, 20:32:18
Die Frage ist seehr theoretisch, da es keine Software (Spiele sowie andere Anwendungen) mehr ohne eine Vielzahl von APIs auskommt.
Konsolenspiele haben den "Vorteil", dass sie nur auf einer und genau einer hardware laufen, von daher benutzen sie keine APIs wie OGL oder D3D. Ein PC Spiel muss auf quasi jeder Grafikhardware laufen. Wenn man also nicht will das ein Spiel nur fuer z.B. GeForce4 Karten herauskommt, gibt es keine andere Moeglichkeit als auf standardisierte APIs zu setzen (oder theoretisch eine eigene Grafikengine fuer jede Grafikkarte entwickeln, dann wuerde BF1942 wahrscheinlich puenklich zum 4. Weltkrieg erscheinen)
Die Tatsache das es Standard-APIs gibt stellt sicher, dass die zukuenftige Hardware parallel zur evolution der APIs entwickelt werden kann. So ist es moeglich, dass 1-2 Monate nachdem ein neues Hardware-Feature das Licht der Welt erblickt, bereits Spiele dies auch ausnutzen koennen.
Eine kleine handvoll Grafik-APIs die untereinander konkurieren bringt das Optimum fuer jeden Gamer: schnell adaptierte Features und kompatibilitaet mit (fast)saemlticher Grafikhardware.

BTW: Im vergleich zu einer rein hypotetischen direkten Hardwareimplementierung liegt der "Verlust" bei 0-5%. In Frame/Sekunde umgerechnet waeren das im schlimmsten Fall 24 statt 25... egal ob schlimmster oder bester Fall.. das merkt kein Mensch!!!

Pussycat
2003-04-21, 21:09:27
woher kommen die prozente?

aths
2003-04-27, 14:08:49
Originally posted by GloomY
Ein PC ist genauso deterministisch. Da gibt es keinen Unterschied. Nee :) Die Reihenfolge, in der die Programme aus dem Autostart fertig geladen sind, kann durchaus mal variieren. Wenn Multitasking ins Spiel kommt, ist es mit dem Determinismus eh meist vorbei.