PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : @3D-Gurus: Kann man CPU und GPU mischen?


Gast
2009-02-04, 21:13:18
Hallo,

habe mal eine Frage.

Nehmen wir jetzt mal folgendes an:
Eine Anwendung erfordert OpenGL 2.1. Die Grafikkarte kann aber nur OpenGL 1.4.
Wäre es da technisch möglich, dass die Grafikkarte die Features die sie kann selbst berechnet, und der Rest (die zusätzlichen Features von OpenGL 2.1), den sie nicht kann von der CPU berechnet wird? Oder ist das "Mixen" beider Komponenten nicht möglich? Und falls das möglich wäre, wäre die Umsetzbarkeit schwer und wie wäre die Performance?

Und wäre es auch möglich, dass man die CPU als zusätzliche Recheneinheit zur Verstärkung der 3D-Leistung nutzt, neben der GPU, also quasi wie SLI/CF?

MfG

Gast
2009-02-04, 21:16:12
nein das ist nicht möglich, wenn dann wäre höchstens eine reine softwareemulation möglich, und das natürlich entsprechend langsam.

Gast
2009-02-04, 21:19:22
Und warum? Liegt das an der Unflexibilität der APIs (Direct3D und OpenGL) oder an der Unflexibilität der aktuellen GPUs?

Krishty
2009-02-04, 21:22:26
An der Unflexibilität der GPUs, die nur OpenGL 1.4 können …

Gruß, Ky

Gast
2009-02-04, 21:32:31
Mit einer GPGPU-fähigen GPU und OpenGL 3.0/DirectX10 wäre das aber möglich, oder?

Krishty
2009-02-04, 21:39:39
GPGPU gibt es ab D3D11 und dann gibt es keinen Grund mehr, sowas zu tun, weil die GPU dann so ziemlich alles kann.

Du darfst dir das nicht vorstellen, als würde die GPU nach und nach alle Operationen auf den Frame anwenden, und wenn mal eine käme die sie nicht unterstützt könnte man das einfach von der CPU machen lassen.

Das ist alles bunt gemischt, für alles brauchst du auch die Zwischenergebnisse die von den vorherigen Aktionen rumliegen und es gibt keinen Standard für die Übertragung der Daten oder der Zwischenergebnisse von oder zur Grafikkarte. Da ist man in der Tat besser dran, wenn mal direkt alles in Software macht.

Es gibt Software-Vertex-Processing, wo man den Vertex-Shader auf der CPU ausführt und damit alle Vertex-Features nutzen kann, die die Karte nicht unterstützt. Das gab es aber nur bis D3D10 und die Killer-Features stecken sowieso eher selten im Vertex-Shader.

Gast
2009-02-04, 21:43:40
Danke!

Aber bei Intel-Onboardchips werden doch die Vertex-Shader per CPU berechnet, wie machen die denn das?

Krishty
2009-02-04, 21:53:08
Ich würde sagen, da steckt die Emulation nicht in der API oder der Anwendung, sondern im Treiber … ist aber nur geraten.

Gast
2009-02-04, 22:11:55
Aber bei Intel-Onboardchips werden doch die Vertex-Shader per CPU berechnet, wie machen die denn das?

3D-rendering funktioniert im prinzip in einer pipeline.

mal grob vereinfacht gibt es da Vertexshader -> Geoshader (ab DX10) -> Rasterizer -> Pixelshader

und genau in der richtung läuft es auch, die richtung lässt sich nicht irgendwie umkehren.

es ließe sich beispielsweise der vertexshader auf der cpu berechnen und der rest hardwarebeschleunigt.

du kannst aber nicht beispielsweise im pixelshader plötzlich wieder zurück zur cpu weil die hardware irgendwelche dinge nicht kann.

Zool
2009-02-06, 14:27:31
[QUOTE=Krishty;7085017]GPGPU gibt es ab D3D11 und dann gibt es keinen Grund mehr, sowas zu tun, weil die GPU dann so ziemlich alles kann.

Auch eine GPU mit DX11 Hardware-Support wird vom Funktionsumfang immer weniger können als eine alte 386er CPU. Eine GPU kann im Vergleich zu einer CPU wenig Funktionen, die aber dafür deutlich schneller und gewöhnlich parallel arbeiten
Mit DX11 wird die Programmierung transparenter, so dass der Compiler das Programm optimal für die jeweils schnellste Hardware (CPU oder GPU) übersetzt.

ShadowXX
2009-02-06, 14:50:26
Ich würde sagen, da steckt die Emulation nicht in der API oder der Anwendung, sondern im Treiber … ist aber nur geraten.
Ist richtig geraten....die VS-Emulation steckt im Treiber.

Krishty
2009-02-06, 15:56:17
Auch eine GPU mit DX11 Hardware-Support wird vom Funktionsumfang immer weniger können als eine alte 386er CPU.Das meinte ich anders. Indem die Funktionspalette der GPUs breiter wird, wird es möglich sein, fehlende Hardware-Features auf der GPU zu emulieren statt auf der CPU. Statt die GPU aufrüsten zu müssen, kann dann ein Treiberupdate genügen – natürlich nur, wenn der Hersteller dazu bereit ist (siehe Far Cry 2, auch wenn der Vergleich hier nicht ganz passt). Es wird weiterhin heißen, reine CPU-Emulation oder garkeine – aber die Zahl der Fälle, in denen Software-Rendering nötig ist, weil der GPU ein Feature fehlt das sie nicht ausgleichen kann, wird rapide sinken … und keiner dieser Fälle wird kritisch relevant für Spiele sein.

Coda
2009-02-06, 16:21:59
Auch eine GPU mit DX11 Hardware-Support wird vom Funktionsumfang immer weniger können als eine alte 386er CPU. Eine GPU kann im Vergleich zu einer CPU wenig Funktionen, die aber dafür deutlich schneller und gewöhnlich parallel arbeiten
Mit DX11 wird die Programmierung transparenter, so dass der Compiler das Programm optimal für die jeweils schnellste Hardware (CPU oder GPU) übersetzt.
Das ist falsch. Schon eine D3D10-GPU kann beliebige Rechnungen im Shader ausführen.