Wishbringer
Captain
- Registriert
- Juli 2002
- Beiträge
- 3.616
sanders schrieb:@Wishbringer
Also bis auf wenige für DX11 interessante ausnahmen unterstützen alle bedeutsamen CPUs die selben instruction sets und featrues.
Und das sind meist die Befehlssets wie SSE4.x etc.
Aber ist Dir schon zu Ohren gekommen, dass gewisse instruction sets bei verschiedenen Prozessoren unterschiedlich schnell abgearbeitet werden?
Dass die optimale Lösung für einen Core2 (alte Serie 65nm) nicht gleich der optimalen Lösung für einen Core2 (45nm) oder eines i7 oder eines Athlon X2 bzw. eines Phenomen (ebenfalls verschiedene Revisionen) ist?
Hier kann die benötigte Zeit für genau die gleiche Codefolge massig variieren.
Und man kann andere Lowlevel-Befehle nutzen, die zwar den gleichen Zweck erfüllen, aber evtl. weniger Taktzyklen brauchen.
Abseits von DX11 sei Dir mal der Sourcecode von x264 ans Herz gelegt.sanders schrieb:Aber auf eine bestimmte CPU kannst du DX11 nicht optimieren. Bzw. nur dann wenn du die kompatibilität zu anderen verlieren möchtest.
Ich rede hier von Optimierungen von Code, die nicht unbedingt zu Inkompatiblitäten führen! Und damit meine ich auch nicht die Compiler-Optionen.
Man kann Prozessorgenerationen/Arten/Architekturen abfragen und dann dafür sorgen, dass entsprechende Routinen genutzt werden, die auf diese CPUs abgestimmt sind.
Siehste, wieder was dazu gelernt!sanders schrieb:Und das heute noch in assembler programmiert wird ist mir neu.
Weil halt die API (Schnittstelle) von DX in dieser Form da ist.sanders schrieb:Also ich kenne nur leute die per C++ an die DX11 gehen.
Mit entsprechenden Includes kannst Du sogar in Modula2, Pascal, Oberon und was weiss ich für DX programmieren.
Schau Dir mal die 4k oder 64k Grafikdemos der Szene an. Die nutzen alle DX und sind durchgehend in Assembler geschrieben!
bu.llet schrieb:"Bester" Post in diesem noch so jungen Jahr. Wird aber schwer das noch zu unterbieten. DX in Assembler programmiert...
Gewisse zeitkritische Teile der dlls sind in Assembler programmiert!
Viele Programme bestehen aus einem mehrteiligen Aufbau: eine Grundprogrammierung in Form einer Hochsprache. Dann wird ein Profiling durchgeführt, die zeitkritischen Elemente analysiert und geschwindigkeitsoptimiert. Gewisse Teile dann eben auch in Assembler.
Und nochmal allgemein:
DX wird NICHT auf der GPU ausgeführt! Es wird darüber die GPU angesprochen. DX ist auch keine Grafikengine, es ist ein Verwaltungsprogramm!
Ein himmelweiter Unterschied!
Das was auf der GPU ausgeführt wird, sind u.a. die Shader. Und diese werden meist zur Laufzeit auf die entsprechende GPU angepasst, compiliert und dann "hochgeladen"
Zuletzt bearbeitet: