Linux-Grafik-Stack for Dummies? (Wine/Proton, nVidia-Legacy, Kepler)

floTTes

Lt. Commander
Registriert
Okt. 2006
Beiträge
1.404
Hey Leute,

Das letzte mal, dass ich Linux auf einem eigenen Client-System installiert hatte, ist ewig her. Vulkan, DXVK, OpenCL, Gallium3D usw. gab es damals noch nicht. Der nVidia-Treiber hatte damals seine eigene OpenGL-Implementierung und wurde imho nur durch X-Server/GLX angesprochen. Richtig?

Soweit ich das verstanden habe, kann ich den nVidia-legacy-driver (470.xx, Vulkan 1.1) für mein Kepler durch DKMS ja mit jedem aktuellem Kernel verbinden. Der Treiber unterstützt wohl auch den heißen Kernel-Scheiß (KMS, etc.).

Folgende Fragen:
  • Wie läuft das heutzutage mit Wayland? Wayland nutzt doch keine GLX-Schnittstelle? Wie kommuniziert Wayland mit OpenGL/Vulkan des nVidia-Treibers?
  • Wie läuft das mit Wine/Proton? Ohne DXVK müsste Wine/Proton doch ganz regulär OpenGL nutzen, richtig? Braucht das noch GLX oder ist Wayland nativ unterstützt?
  • Kann ich problemlos DXVK 1.xx (legacy) mit aktuellem Wine/Proton nutzen?

Gebt mir ruhig RTFM! Habe nur kurz gegoogled. Bei entsprechenden Links, schaue ich natürlich selber nach.

Danke für eure Antworten!
 
floTTes schrieb:
Wie läuft das heutzutage mit Wayland? Wayland nutzt doch keine GLX-Schnittstelle? Wie kommuniziert Wayland mit OpenGL/Vulkan des nVidia-Treibers?
Ich hab jetzt keinen Flowchart gefunden, der den Grafikstack mit Wayland und Nvidia-Treiber beschreibt, aber die Kurzform ist, das der Nvidia-Treiber Xwayland benutzt, also einen Xserver der unter Wayland läuft. Weil Nvidia Wayland immer noch nicht richtig unterstützt. Zur Interaktion mit Wayland nutzt Nvidia EGLstreams anstatt GBM wie alle anderen.
Nvidia bringt außerdem nach wie vor seine eigenen Implementierungen der OpenGL, Vulkan usw APIs mit, die die Funktionalität gegenüber den Programmen exponiert. Und das alles muss dann durchs feurige Auge von Xwayland.

Auf Phoronix gibts einige Artikel zu Nvidia und Wayland:
https://www.phoronix.com/news/XDC2016-Device-Memory-API
https://www.phoronix.com/news/NVIDIA-470-Wayland-Friendly
https://www.phoronix.com/news/NVIDIA-R515-Wayland-State
https://www.phoronix.com/review/wayland-nv-amd-2023

Tldr: Es ist besser geworden, aber Nvidia und Wayland ist immer noch ein Gebilde, was nur mit Panzertape zusammengehalten wird. Wenn du eine Nvidia-Karte hast, benutz lieber Xorg. Und kauf in Zukunft keine Nvidia-Karten mehr, wenn es sich irgendwie vermeiden lässt. Und da es hier um eine Kepler geht, vermute ich das GPU-Compute nicht zur Debatte steht.
floTTes schrieb:
Wie läuft das mit Wine/Proton? Ohne DXVK müsste Wine/Proton doch ganz regulär OpenGL nutzen, richtig? Braucht das noch GLX oder ist Wayland nativ unterstützt?
Wine/Proton übernehmen die Ausführung von Calls, die sich an eine Windowsumgebung richten und Linux nicht bereitstellt. OpenGL gehört nicht dazu. Wenn also eine Windowsanwendung über Wine mit OpenGL interagiert, wird dafür die native Implementierung unter Linux genutzt.
Sind Calls an die DX-API gerichtet, übernimmt das DXVK/VKD3D, die das in Vulkan-Calls übersetzen. Wenn Vulkan nicht da ist, Pech gehabt. Dann wird nicht OpenGL als Backup verwendet, dann funktioniert die Anwendung halt nicht. Ob und wie der Treiber für Kepler Vulkan liefert und in welcher Version, weiß ich aus dem Stehgreif nicht. Wenn man unter Linux Spielen will, sollten die verwendeten Grafikkarten nicht zu alt sein.
floTTes schrieb:
Kann ich problemlos DXVK 1.xx (legacy) mit aktuellem Wine/Proton nutzen?
Das weiß ich nicht. Ich weiß nur das das ganze recht modular ist, man kann DXVK unabhängig von Wine/Proton aktualisieren. Ob die Versionen dann miteinander wollen ist eine andere Sache.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: floTTes, AlphaKaninchen und fixedwater
ghecko schrieb:
Und kauf in Zukunft keine Nvidia-Karten mehr, wenn es sich irgendwie vermeiden lässt.
Hab ich gemacht und mir eine Radeon RX6700XT geholt.
FYI Ergebnis:
Die OpenSource Treiber unterstützen kein Video Transcoding, und die Proprietären werden nur schlecht ünterstüzt. Selbst wenn man Videotranscoding zum Laufen bekommt, so wird hevc mit Radeon unter Linux nicht unterstützt (im Gegensatz zu Windows). Mit den Nvidia Propietary Treiber, die praktisch überall unterstützt werden ist das kein Problem.
 
0x7c9aa894 schrieb:
Die OpenSource Treiber unterstützen kein Video Transcoding,
Das ist seltsam, denn ich benutze auch eine RDNA2 und mache das.
0x7c9aa894 schrieb:
und die Proprietären werden nur schlecht ünterstüzt.
Die proprietären Treiber sind was für Workstation, bei denen mit ROCM Jongliert wird. Das ist ein recht statisches Gebilde und NIRGENDS wird empfohlen, das ding auf einem Desktop-PC zu verwenden.

Bei dir war wohl einfach ffmpeg und die Transcoding-Software nicht auf Stand oder libva-mesa nicht vorhanden, bzw das Encoding beim Build nicht aktiviert.
0x7c9aa894 schrieb:
Mit den Nvidia Propietary Treiber, die praktisch überall unterstützt werden ist das kein Problem.
Ja, und OpenCL läuft auch so gar nicht mit AMD. Es gibt Fälle, da greift man zu Nvidia. In 95% der Fälle ist das aber unter Linux die schlechtere Entscheidung.
 
Zuletzt bearbeitet:
ghecko schrieb:
Ich hab jetzt keinen Flowchart gefunden, der den Grafikstack mit Wayland und Nvidia-Treiber beschreibt, aber die Kurzform ist, das der Nvidia-Treiber Xwayland benutzt, also einen Xserver der unter Wayland läuft. Weil Nvidia Wayland immer noch nicht richtig unterstützt. Zur Interaktion mit Wayland nutzt Nvidia EGLstreams anstatt GBM wie alle anderen.
Jut, dann fliegt Wayland halt raus. Schade. Gerade Wayland finde ich faszinierend. Aber siehe auch nächsten Absatz.

ghecko schrieb:
Danke für die Links. Sehr interessant und hilfreich. Schaut so aus also sollte man mit nVidia eh (noch) die Finger von Wayland lassen - selbst mit aktuellen Treibern.

ghecko schrieb:
Sind Calls an die DX-API gerichtet, übernimmt das DXVK/VKD3D, die das in Vulkan-Calls übersetzen. Wenn Vulkan nicht da ist, Pech gehabt. Dann wird nicht OpenGL als Backup verwendet, dann funktioniert die Anwendung halt nicht. Ob und wie der Treiber für Kepler Vulkan liefert und in welcher Version, weiß ich aus dem Stehgreif nicht. Wenn man unter Linux Spielen will, sollten die verwendeten Grafikkarten nicht zu alt sein.
Hier kannst du vielleicht von mir was lernen! :evillol:
Wine und auch Proton unterstützen mit WineD3D auch D3D-to-OpenGL. Default und für DX12 geht es zu Vulkan. Für DX9/10/11 kann man aber noch OpenGL nutzen. Extra nochmal gegoogled!

Der nVidia-legacy-driver 470.xx unterstützt nur Vulkan 1.1 - zumindest auf Kepler. Damit fällt er auch für DXVK 2.x flach, das mindestens Vulkan 1.3 voraussetzt - ebenso wie Wine 8.x und das kommende Proton, die eben dann mit DXVK 2.x arbeiten.

Neue GraKas ... nee, lass mal. Da müsste ich ständig alles updaten. Dann geht wieder was nicht. Nö, lass mal. Mit AMD/Intel mussu auch noch ständig den Kernel up-to-date halten ...
Während der nVidia-legacy-driver für Linux schon bei 470.xx ist, liegt mein installierter Windows-Treiber noch bei 425.xx. :freak:

ghecko schrieb:
Das weiß ich nicht. Ich weiß nur das das ganze recht modular ist, man kann DXVK unabhängig von Wine/Proton aktualisieren. Ob die Versionen dann miteinander wollen ist eine andere Sache.
Aktualisieren? Ich müsste es downgraden. :evillol:
Proton 7.0.6 (aktuell) nutzt noch DXVK 1.x. Proton 8.x wird DXVK 2.x nutzen. Also muss ich es da irgendwie reintinkern.

Also noch paar Fragen:
  • Wenn ich z.b. in Steam eine Proton-Version auswähle, wo liegt die dann? Wird die für jedes Spiel gemirrored? Will fragen, eine Grundlage getinkert = alle Instanzen getinkert?
  • Muss ich mit nv-prop. dann Mesa eigentlich überhaupt installiert haben?
 
Zurück
Oben