Wine, Proton, DXVK, vkd3d, vkd3d-proton, Runtime Container ... bitte was? Wir bringen etwas Licht ins Dunkel!

Bild des Benutzers NoXPhasma
Tags:

Wine, Proton, DXVK, vkd3d, vkd3d-proton, Runtime Container was bitte ist das alles? Diese Frage mögen sich einige von Euch stellen und ich werde in diesem Artikel versuchen, etwas Licht ins Dunkel zu bringen. Denn diese Begriffe werden wir in der Zukunft noch viel häufiger zu sehen bekommen.

Wine

Wine dürfte den meisten unter uns ein Begriff sein. Es ist ein Kompatibilitätslayer, welcher es ermöglicht Windows Software (z.B. Spiele) unter Linux lauffähig zu machen. Damit dies gelingt, werden alle API calls die Windows Programme machen so übersetzt, dass Linux sie verstehen und ausführen kann. Viel mehr Details dazu findet ihr in unserem Wiki Artikel.

WineD3D

WineD3D ist in Wine enthalten und übersetzt DirectX Api Aufrufe zu OpenGL. Es unterstützt dabei sehr alte DirectX Versionen bis zu DirectX 11 und ermöglicht es somit, dass man Spiele spielen kann.

DXVK

DXVK übernimmt die selbe Aufgabe wie WineD3D, übersetzt allerdings nicht zu OpenGL sondern Vulkan. Ausserdem unterstützt es nur DirectX 9 bis 11. Der Vorteil von DXVK liegt hier darin, dass es beinahe in allen Fällen eine deutlich bessere Performance bietet als WineD3D. Ebenfalls ist die Kompatibilität mit DirectX meistens besser.

Im Gegensatz zu WineD3D ist DXVK nicht in Wine enthalten und muss nachträglich installiert werden. Mehr dazu im Wiki Artikel.

vkd3d

vkd3d hat die Aufgabe, explizit DIrectX 12 nach Vulkan zu übersetzen. Im Gegensatz zu WineD3D und DXVK ist es allerdings noch nicht vollständig kompatibel zur API. Entwickelt wird vkd3d von Codeweavers und ist Teil von Wine.

vkd3d-proton

vkd3d-proton ist eine Abspaltung vom offiziellen vkd3d, welches von Valve vorrangetrieben wird. Dieses ist, wie der Name schon preisgibt, direkt für die Integration in Proton gedacht und ist auch in Proton integriert. Im Gegensatz zum offiziellen Ableger ist vkd3d-proton deutlich weiter entwickelt und unterstützt bereits viel mehr Features (z.B. Raytracing).

vkd3d-proton lässt sich ebenfalls auch in einem Wineprefix installieren und ist nicht nur auf Proton limitiert.

Runtime Container

Den meisten von euch wird die Steam Runtime ein Begriff sein. Es ist eine Ansammlung von Linux Bibliotheken, welche in Steam integriert sind. Diese dienen dazu Spiele auf möglichst vielen Linux Distributionen lauffähig zu machen, ohne dass die Nutzer gleich all diese Bibliotheken installieren müssen.

Hier setzten die Runtime Container (Intern auch als Pressure Vessel bereichnet) an, welche ebenfalls Teil von Steam sind. Im Gegensatz zur normalen Runtime kommen diese aber als Container daher (inspiriert durch Flatpak Container). Der Vorteil dabei ist, dass Valve verschiedene Versionen anbieten kann, welche unterschiedliche Bibliotheksversionen enthalten. Collabora hatten hierzu einen Talk auf der FOSDEM 2020, den ihr euch auf Youtube anschauen könnt.
Das Thema des Talks behandelt die zukünftigen Möglichkeiten für eine Containerintegration der Spiele von Steam.

Proton

Proton wird von Valve entwickelt und kombiniert all die Software, die ich oben beschrieben habe und ist bereits fertig in Steam integriert. Dazu kommen allerhand spezielle Patches - die im eigentlichen Wine nicht enthalten sind - und einige Dinge werden entfernt. Denn während Wine neben Spielen auch viel Software unterstützen soll, ist dies bei Proton nicht der Fall. Dies ermöglicht es, dass ihr (sehr viele) Windows Spiele in Steam mit nur einem Klick starten und spielen könnt. Proton gibt es in verschiedenen Versionen, die Versionsnummer zeigt an auf welcher Wine Version es basiert.

Doch Valve nimmt sich nicht nur einfach die Open Source Software und erstellt daraus Proton, sondern unterstützt all die oben genannten Projekte mit ihren eigenen Entwicklern und auch finanziell.

Proton wird auch ein wichtiger Aspekt für den Handheld Steam Deck werden, den Valve später dieses Jahres veröffentlichen wird (wir berichteten).

Neben den offiziellen Proton Versionen gibt es auch noch die sogenannten Custom Versionen. Diese werden zusätzlich zur offiziellen Version erstellt und enthalten meist sehr viele experimentelle Features, die schlussendlich in Proton landen oder eben auch nicht. Häufig lassen sich mit diesen Proton Versionen Spiele starten, welche mit der offiziellen Version den Dienst verweigern. Die 2 bekanntesten Custom Proton Versionen sind von GloriousEggroll und TKG.

Ich hoffe ich konnte etwas Licht ins Dunkel werfen und ihr seid nun etwas schlauer als vorher. Gibt es noch weitere Aspekte an Proton/Wine, die ihr gerne etwas besser beleuchtet haben möchtet?

Multimedia
DangerousBeans
Bild des Benutzers DangerousBeans
Offline
Beigetreten: 07.04.2013
Beiträge: 74

Schöne Übersicht, danke! Weiß jemand, wie es rechtlich um GloriousEggroll und Co. bestellt ist?

Die Reports auf ProtonDB empfehlen für viele Spiele, die Videos beinhalten (z.B. Borderlands 3), die Nachinstallation von Microsofts Media Foundation-DLLs. Das scheint aber lizenztechnisch eher Grauzone zu sein.

Alternativ soll GE oft ebenso gut funktionieren. Sind da irgendwelche proprietären DLLs enthalten oder haben die die fehlende Funktionalität nachimplementiert?

NoXPhasma
Bild des Benutzers NoXPhasma
Offline
Beigetreten: 06.11.2013
Beiträge: 389

GloriousEggroll nutzt keine Media Foundation Libraries, sondern eine Implementierung die von Derek Lesho (Guy1524) geschrieben wurde. Deswegen ist die Anzahl an Spielen wo die Videos funktionieren auch limitiert.

Das war mal anders, aber das fanden die Valve Entwickler nicht so toll (auch weil Nutzer dieses auf dem Proton Issue Tracker immer wieder thematisierten) und haben GE gebeten die zu entfernen. Deswegen hat GloriousEggroll das wieder raus genommen. Wobei die Libraries nie wirklich mit seiner Proton Version ausgliefert wurden, sondern mittels Protonfixes nachgeladen wurden.

Valve hat sich aber dafür entschieden nicht den Weg zu gehen die Media Foundation Implementierung nachzubauen, sondern die Videos zu re-encodieren und - ähnlich wie die Shader Caches - den Nutzern automatisch herunter zu laden und im Spiel live zu ersetzen. Denn nicht alle Videos die Probleme machen, werden auch mit Media Foundation ausgeliefert. Einige Spiele benutzen diesen Weg bereits, wie in den Proton 6.3-5 Changelogs erwähnt.

DangerousBeans
Bild des Benutzers DangerousBeans
Offline
Beigetreten: 07.04.2013
Beiträge: 74

Danke für die Info, das klingt ja prima! Ist zwar ein wenig überraschend, dass Valve keine Nachimplementierung von MF plant, aber da haben sie sicherlich ihre Gründe. Im Zweifelsfall irgendwas mit Codecs und Patenten.

Ob die DLLs in Proton-GE enthalten waren oder mittels Protonfixes nachgeladen wurden, macht für mich als Nutzer keinen Unterschied. Eine Lizenzverletzung begehe ich in beiden Fällen. Von daher gut zu wissen, dass das nicht mehr der Fall ist.

Mastodon