DirectX, OpenGL, Vulkan - Wo geht die Reise hin und können sich daraus Vorteile für FreeBSD-User ergeben?

cabriofahrer

Well-Known Member
Die Fragestellung ist klar und dürfte hauptsächlich die Spieler unter uns ansprechen. Sicherlich hat der eine oder andere schon Erfahrungen damit gemacht und auch festgestellt, dass OpenGL-Spiele selbst unter wine wesentlich schneller laufen und auch besser aussehen, als unter d3d/wine, und mit Linuxulator in beiderlei Hinsicht sogar hervorragend. Viele Windows-Spiele kann man mit wine aber nicht zum Laufen bringen, insbesondere die neuesten. Opengl steht schon lange zur Verfügung, hat sich aber leider nie richtig durchgesetzt, weil Microsoft mit seinem DirectX regelrecht einen Strich durch die Rechnung gemacht hat und sämtliche Spieleentwickler damals an sich gezogen hatte, durch aktive Unterstützung, und weil DirectX angeblich leichter zu lernen war als OpenGL. John Carmack hat sogar mal gesagt, dass wenn Microsoft damals nicht mit DirectX angekommen wäre, wir in der Entwicklung der 3D-Grafik schon viel weiter wären. Nun kommt noch Vulkan hinzu, plattformunabhängig und mit angeblich besserer Performance als DirectX. Es ist manchmal auch die Rede davon, ältere Spiele auf Vulkan zu portieren.
Wie sieht das Szenario Eurer Meinung nach aus und wie wird es sich weiterentwickeln? Und am wichtigsten: Werden Linux und FreeBSD User davon profitieren können?
 
DXVK unter wine läuft bei mir aber nur auf Intel Basis, die Performance ist bescheiden.

Der NVIDIA Treiber liefert leider kein Vulkan mit.

Außer wine ist die einzige Vulkan-Anwendung die ich habe vkcube aus devel/vulkan-tools.
 
OpenGL ist tot. Da wird in Zukunft wenig bis nichts passieren. Langfristig wird man vermutlich OpenGL auf Vulkan abbilden, weil man nur noch wenig Energie in Legacy Software setzt. Entsprechende Projekte machen schon Fortschritte. Man siehe auch, wie schlecht mittlerweile selbst einige DX9 Spiele unter Windows laufen. Selbst dort braucht man teilweise Wrapper, die DX9 "emulieren", weil die Treiber schon zu buggy sind.

Vulkan wird aber leider auch nicht so rosig umgesetzt wie man sich das erhofft hatte. Letztendlich wird es auch hier eine ziemliche Wrapperei sein. Apple implementiert Vulkan nicht, also muss man auf ihre eigene Metal API wrappen. Microsoft implementiert Vulkan auch nicht selbst und auf Systemen wie WindowsOnARM und XBOX gibt es nur DX12. Also muss man hier Vulkan auf DX12 mappen. Aus diesem Grund hat man sich auch schon dazu entschieden ein Vulkan Subset zu definieren, bzw. eine Meta-API zu bauen, die man dann fröhlich hin und her wrappt. Das macht die Sache natürlich nicht übersichtlicher. Plattformunabhängig ist was anderes, aber man will man machen? Die Betriebssytem-Hersteller wollen nicht. Als native Vulkan-Plattform bleiben also nur Linux, Android, (die Nintendo Switch) und Windows x86 mit passenden Grafiktreibern.

Anders herum eröffnet Vulkan diverse Möglichkeiten. Aufgrund seiner recht hardwarenahen Arbeitsweise kann man eben gut andere APIs und Systeme nachbilden. So gibt es z.B. DXVK, welches DX9,10 und 11 auf Vulkan abbildet und dies schneller und korrekter erledigt als WINE über OpenGL.

tl;dr: Vulkan wird schlicht OpenGL und OpenGL ES ersetzen.
 
OpenGL ist tot. Da wird in Zukunft wenig bis nichts passieren.

Wusste ich nicht, das ist sehr traurig!

Man siehe auch, wie schlecht mittlerweile selbst einige DX9 Spiele unter Windows laufen. Selbst dort braucht man teilweise Wrapper, die DX9 "emulieren", weil die Treiber schon zu buggy sind.

Wusste ich auch nicht, aber das spricht ja sehr gegen DirectX/Windows/Microsoft und wenn dann zusätzlich gilt

Das macht die Sache natürlich nicht übersichtlicher. Plattformunabhängig ist was anderes, aber man will man machen?

woran sollen sich Spielehersteller dann eigentlich im Moment und in Zukunft halten?

DXVK unter wine läuft bei mir aber nur auf Intel Basis, die Performance ist bescheiden.

Ich dachte, Vulkan liefe auch auf AMD?

Der NVIDIA Treiber liefert leider kein Vulkan mit.

Ist das nur eine momentane Realität und kann man davon ausgehen, dass NVIDIA irgendwann mitziehen wird?
 
Wusste ich nicht, das ist sehr traurig!
Vulkan wird vom gleichen Consortium Standardisiert und ist der De-Facto Nachfolger. Kein Grund 2 Pferde zu reiten.

Ich dachte, Vulkan liefe auch auf AMD?
Das erfordert aber AMD Hardware. Mein Laptop hat bloß Intel und NVIDIA Grafik.

Ist das nur eine momentane Realität und kann man davon ausgehen, dass NVIDIA irgendwann mitziehen wird?
Bei Linux ist es mit dabei. Ich denke um Vulkan zu aktivieren müsste erst mal Prime funktionieren, da bei Vulkan das Rendering vom Display getrennt ist. Das Vulkan Layer setzt auf das gleiche Backend wie OpenCL auf.
 
Vulkan wird vom gleichen Consortium Standardisiert und ist der De-Facto Nachfolger. Kein Grund 2 Pferde zu reiten.

Dazu kommt, dass die State Machine der neueren OpenGL-Versionen viel zu komplex ist, um handhabbar zu sein. Daher sind die Implementierungen ja so eine Katastrophe. Da wäre mit einem hypothetischen OpenGL 5 sowieso ein ganz großes Tabularasa kaum mehr zu umgehen gewesen sein. Also kann man es auch richtig machen. Das Pferd war daher schon tot und man muss nicht traurig drum sein, dass es geschlachtet wurde.
 
Bietet denn Vulkan Abwärtskompatibilität für ältere OpenGL-Spiele? Leider noch unbeantwortet die Frage, ob Linux oder FreeBSD indirekt von dieser Entwicklung profitieren können? Zeichnet sich vielleicht ein Trend bei Spieleentwicklern ab, künftig mehr auf Vulkan anstatt auf DirectX setzen zu wollen?
 
Die existierenden OpenGL Stacks verschwinden ja nicht. In der Zukunft werden die Hersteller dann wahrscheinlich OpenGL als Compat-Layer auf Vulkan implementieren.
 
woran sollen sich Spielehersteller dann eigentlich im Moment und in Zukunft halten?

Denen bleibt am Ende nichts anderes übrig als fast jede API separat zu implementieren. Man könnte zwar Vulkan-Wrapper nehmen, aber das geht vermutlich auch nicht überall (ich weiß nicht ob MS sowas auf der XBOX erlaubt). Aber das war im Grunde schon immer so.
 
Für High-End-Games? Ja vielleicht aber sicher nicht für 3D Anwendungen wie Blender, Maya oder CAD.
weil Microsoft mit seinem DirectX regelrecht einen Strich durch die Rechnung gemacht hat
Warum hat den das so gut geklappt? MS hatte bis Vista OpenGL immer an Board. Man vergisst leicht, dass DirectX eben nicht nur eine API für Grafik ist sondern zusätzlich auch noch: DirectSound, DirectMusic, DirectInput, DirectPlay etc bietet. OpenGL bildet nur den Grafik Teil ab. Wenn man dann noch 95% der Anwender mit diesen Schnittstellen abdecken kann, warum soll ich da noch etwas anderes verwenden? Und die liebe Khronos Group hat diese Entwicklung sehr lange verschlafen... Vulkan selber war in der ersten Version fast ein 1:1 Kopie von AMDs Mantle.
 
Für High-End-Games? Ja vielleicht aber sicher nicht für 3D Anwendungen wie Blender, Maya oder CAD.

Auch die werden langfristig wechseln müssen. Es werden natürlich nicht von heute auf morgen aus allen OpenGL Anwendungen Vulkan Anwendungen. Aber die API selbst wird sich nirgendwo mehr hin bewegen und die ganze Situation rund um Treiber-Support und deren Qualität wird (langfristig) auch eher schlechter.

Und die liebe Khronos Group hat diese Entwicklung sehr lange verschlafen... Vulkan selber war in der ersten Version fast ein 1:1 Kopie von AMDs Mantle.

Das halte ich mal eher für ein Gerücht. Es ist an Mantle angelehnt gewesen, aber 1:1 Kopie ist nochmal was ganz anderes.
 
Das halte ich mal eher für ein Gerücht. Es ist an Mantle angelehnt gewesen, aber 1:1 Kopie ist nochmal was ganz anderes.
Beispiel gefällig? Natürlich wurde Vulkan erweitert und auch Nvidia konnte seinen Senf dazu geben. Mantle wollte Nvidia nie so richtig, weil deren GPUs von der Architektur nicht gut damit performten verglichen mit DX11. Bei AMD war Mantle/Vulkan der grosse Wurf.
pZyUn2c.jpg
 
Natürlich wurde Vulkan erweitert und auch Nvidia konnte seinen Senf dazu geben.

Ja eben. 1:1 Kopie ist eben was anderes, auch wenn du noch ein "fast" davor geschrieben hast. Und das grundlegende Funktionen wie "BeginCommandBuffer" oder "GetObjectInfo" nicht sinnlos umbenannt wurden ist auch logisch. Auch die ganze Spezifikation von SPIR-V sollte nicht einfach so vom Tisch gewischt werden. Dazu noch das ganze Tooling, die Validation Layer, offizielle Shader-Compiler...
 
Damit ich bzgl. Grafikkartenansteuerung nicht ganz dumm bleib und nicht alles was ich mir aus Dokumentne im Internet zusammenreime muß richtig sein -

Vulkan ist (heute hauptsächlich bei AMD) (annähernd) die Schnittstelle der GraKa. Sprich, wenn eine Schnittstelle OpenGL -> Vulkan existiert oder die GraKa Schicht direkt mit Vulkan angesprochen wird, dann wird vorauss. jede Vulkan kompatible GraKa aus X11 / Wayland / ... angesteuert werden können (evtl.nicht optimal, aber es sollte funktionieren). Habe ich das richtig verstanden?
 
Nein. Vulkan ist eine Grafik-API, so wie OpenGL auch eine ist. Vulkan ist nur wesentlich näher an der Arbeitsweise moderner Hardware angepasst (mehrere CPUs, GPUs sind wesentlich flexibler als damals) und arbeitet somit effizienter. Vulkan liegt nicht unter irgend einer anderen API und es ist auch keine "Schicht", Vulkan ist die API. Und heutige Grafiktreiber implementieren Vulkan zusätzlich zu OpenGL.

Es ist halt die moderne Alternative zu OpenGL.

Vor Vulkan gab es auch seitens NVidia einen Versuch eine bestimmte, recht effiziente Benutzungsweise von OpenGL zu verbreiten: AZDO -> "Approaching Zero Driver Overhead". Entsprechende OpenGL Extensions haben es aber bisher in keinen OpenGL Standard geschafft und eigentlich hat sich auch niemand mehr großartig für den überaus komplexen Haufen namens OpenGL interessiert. Es gab mittlerweile viel zu viele Bestrebungen mit einer neuen API mehr richtig zu machen.

Mit X11 und Wayland hat das nicht viel zu tun, da beide weiterhin sowohl OpenGL als auch Vulkan an die Applikation durchreichen können. Was du meinen könntest wäre GLX, EGL und WSI, was die Schnittstelle zwischen dem Fenstermanager und der Grafik-API spezifiziert.
 
Danke für diese super Erklärung! Hardwarenahe API's fand ich schon immer gut, da der Performancevorteil enorm ist. Das beste Beispiel war damals S3-Metal von S3 Graphics. Unreal, Rune und UT liefen damit unglaublich schnell, bei deutlich besserer Qualität und den hochauflösenden komprimierten Texturen. Eine TNT2 mit Direct3d konnte da nicht mithalten. Leider hat sich S3-Metal damals nicht durchgesetzt und verschwand letztendlich, wahrscheinlich auch durch den Aufkauf von S3 Graphics durch VIA.
 
Zurück
Oben