Grimba
Commodore
- Registriert
- Dez. 2007
- Beiträge
- 4.179
Hallo zusammen,
ich besitze ein ThinkpadW530, das noch eine Kepler Grafikkarte (Quadro K2000M) besitzt. Damit kann man aktuell in Verbindung mit den höchstmöglichen NVIDIA Treiber 470 maximal dxvk 1.10.3 einsetzen bzw. vkd3d 2.6. Das liegt daran, dass spätere Versionen auf eine neuere Vulkan Version setzen, die von dem Treiber nicht mehr unterstützt wird.
Bisher fand ich es doof, dass man dann in Steam auf Proton 7 setzen musste, was langsam doch arg alt wird. In Lutris konnte man bei egal welcher Wine Version die Versionen von dxvk und vkd3d selber festlegen. Eben weil das einfach geht, war ich mir sicher, dass das doch auch mit Steam alleine ohne Lutris möglich sein muss, hier die Libraries auszutauschen. Und tatsächlich geht das. Es reicht, in der jeweiligen Proton Version, die neuer als 7 ist, einfach die älteren dlls an die enstsprechende Stelle zu kopieren und die neueren zu ersetzen.
Dass das funktioniert, habe ich mit Tomb Raider I-III Remaster testen können, das läuft nämlich nicht mit Proton 7, mit neueren Versionen aber schon, z.B. Experimental. Nachdem ich diesem also die älteren dlls untergeschoben habe, lief es danach einwandfrei und butterweich flüssig auf der alten Kiste.
Damit ich das nicht jedes mal per Hand machen muss, habe ich gerade ein kleines shell script geschrieben, dass das in Zukunft für mich erledigt. Das möchte ich euch nicht vorenthalten. Gleich vorweg, das ist maximal dahingerotzt, und wirklich nicht perfekt. Das weiß ich selber Bin etwas ungeübt in bash. Ich werde vermutlich in Zukunft noch etwas daran herumbasteln. Aber es funktioniert in der vorliegenden Fassung schonmal und ersetzt sowohl bei von Steam installierten Proton Versionen die Dateien und auch durch ProtonUp hinzugefügte GE Versionen. Es geht aber davon aus, dass nur das da ist, also kein Roberta etc., außerdem von einer Standardinstallation ohne, dass Proton auf einem anderen Speichermedium liegt. Wie gesagt, mal eben dahingerotztes Script. Wer will, kann das ja für sich anpassen, feel free.
Mit etwas Gück wird das alles in Zukunft gar nicht mehr nötig, wenn sich die Situation mit dem offenen Treiber weiter verbessert. Bis dahin ist es eine vielleicht auch eine Hilfe. Es müssen dazu von den entsprechenden github Repos von dxvk und vkd3d-proton die entsprechenden Versionen heruntergeladen werden und im gleichen Ordner, in dem das Skript liegt, entpackt werden.Vielleicht bau ich irgendwann auch einen automatischen Download ein, wer weiß. (done!)
So, aber nun genug gesabbelt, hier bitteschön:
ich besitze ein ThinkpadW530, das noch eine Kepler Grafikkarte (Quadro K2000M) besitzt. Damit kann man aktuell in Verbindung mit den höchstmöglichen NVIDIA Treiber 470 maximal dxvk 1.10.3 einsetzen bzw. vkd3d 2.6. Das liegt daran, dass spätere Versionen auf eine neuere Vulkan Version setzen, die von dem Treiber nicht mehr unterstützt wird.
Bisher fand ich es doof, dass man dann in Steam auf Proton 7 setzen musste, was langsam doch arg alt wird. In Lutris konnte man bei egal welcher Wine Version die Versionen von dxvk und vkd3d selber festlegen. Eben weil das einfach geht, war ich mir sicher, dass das doch auch mit Steam alleine ohne Lutris möglich sein muss, hier die Libraries auszutauschen. Und tatsächlich geht das. Es reicht, in der jeweiligen Proton Version, die neuer als 7 ist, einfach die älteren dlls an die enstsprechende Stelle zu kopieren und die neueren zu ersetzen.
Dass das funktioniert, habe ich mit Tomb Raider I-III Remaster testen können, das läuft nämlich nicht mit Proton 7, mit neueren Versionen aber schon, z.B. Experimental. Nachdem ich diesem also die älteren dlls untergeschoben habe, lief es danach einwandfrei und butterweich flüssig auf der alten Kiste.
Damit ich das nicht jedes mal per Hand machen muss, habe ich gerade ein kleines shell script geschrieben, dass das in Zukunft für mich erledigt. Das möchte ich euch nicht vorenthalten. Gleich vorweg, das ist maximal dahingerotzt, und wirklich nicht perfekt. Das weiß ich selber Bin etwas ungeübt in bash. Ich werde vermutlich in Zukunft noch etwas daran herumbasteln. Aber es funktioniert in der vorliegenden Fassung schonmal und ersetzt sowohl bei von Steam installierten Proton Versionen die Dateien und auch durch ProtonUp hinzugefügte GE Versionen. Es geht aber davon aus, dass nur das da ist, also kein Roberta etc., außerdem von einer Standardinstallation ohne, dass Proton auf einem anderen Speichermedium liegt. Wie gesagt, mal eben dahingerotztes Script. Wer will, kann das ja für sich anpassen, feel free.
Mit etwas Gück wird das alles in Zukunft gar nicht mehr nötig, wenn sich die Situation mit dem offenen Treiber weiter verbessert. Bis dahin ist es eine vielleicht auch eine Hilfe. Es müssen dazu von den entsprechenden github Repos von dxvk und vkd3d-proton die entsprechenden Versionen heruntergeladen werden und im gleichen Ordner, in dem das Skript liegt, entpackt werden.
So, aber nun genug gesabbelt, hier bitteschön:
Bash:
#!/bin/bash
my_steampath="/home/$USER/.steam"
echo "Using Steam path: $my_steampath"
if [[ ! -d "$my_steampath" ]]; then
echo "ERROR: Steam not found!"
exit 1
fi
if [[ ! -d "dxvk-1.10.3" ]]; then
echo "DXVK 1.10.3 not found! Starting download..."
wget -q -T 5 --show-progress https://github.com/doitsujin/dxvk/releases/download/v1.10.3/dxvk-1.10.3.tar.gz
if [ ! $? -eq 0 ]; then
echo "ERROR: Something went wrong during download!"
exit 1
fi
echo "Extracting archive..."
tar xzf dxvk-1.10.3.tar.gz
rm dxvk-1.10.3.tar.gz
echo "Done!"
fi
if [[ ! -d "vkd3d-proton-2.6" ]]; then
echo "VKD3D-Proton 2.6 not found! Starting download..."
wget -q -T 5 --show-progress https://github.com/HansKristian-Work/vkd3d-proton/releases/download/v2.6/vkd3d-proton-2.6.tar.zst
if [ ! $? -eq 0 ]; then
echo "ERROR: Something went wrong during download!"
exit 1
fi
echo "Extracting archive..."
tar --zstd -xf vkd3d-proton-2.6.tar.zst
rm vkd3d-proton-2.6.tar.zst
echo "Done!"
fi
echo "Patching Proton installations..."
for d in "$my_steampath/steam/steamapps/common/Proton"*
do
version=$(basename "$d")
inside_path="files"
echo $version
if [[ "$version" == "Proton 7.0" ]]; then
echo "Skipping $version, patching not necessary."
continue
fi
if [[ "$version" == "Proton 8.0" ]]; then
inside_path="dist"
fi
echo "Replacing DXVK with version 1.10.3 ..."
chmod u+w "$d/$inside_path/lib/wine/dxvk/"*
cp -f dxvk-1.10.3/x32/* "$d/$inside_path/lib/wine/dxvk"
chmod u-w "$d/$inside_path/lib/wine/dxvk/"*
chmod u+w "$d/$inside_path/lib64/wine/dxvk/"*
cp -f dxvk-1.10.3/x64/* "$d/$inside_path/lib64/wine/dxvk"
chmod u-w "$d/$inside_path/lib64/wine/dxvk/"*
echo "... done!"
echo "Replacing VKD3D-Proton with version 2.6 ..."
chmod u+w "$d/$inside_path/lib/wine/vkd3d-proton/"*
cp -f vkd3d-proton-2.6/x86/* "$d/$inside_path/lib/wine/vkd3d-proton"
chmod u-w "$d/$inside_path/lib/wine/vkd3d-proton/"*
chmod u+w "$d/$inside_path/lib64/wine/vkd3d-proton/"*
cp -f vkd3d-proton-2.6/x64/* "$d/$inside_path/lib64/wine/vkd3d-proton"
chmod u-w "$d/$inside_path/lib64/wine/vkd3d-proton/"*
echo "... done!"
done
if [[ -d "$my_steampath/steam/compatibilitytools.d" ]]; then
echo "Patching Proton-GE installations..."
for d in "$my_steampath/steam/compatibilitytools.d/GE-Proton"*
do
version=$(basename "$d")
echo $version
echo "Replacing DXVK with version 1.10.3 ..."
chmod u+w "$d/files/lib/wine/dxvk/"*
cp -f dxvk-1.10.3/x32/* "$d/files/lib/wine/dxvk"
chmod u-w "$d/files/lib/wine/dxvk/"*
chmod u+w "$d/files/lib64/wine/dxvk/"*
cp -f dxvk-1.10.3/x64/* "$d/files/lib64/wine/dxvk"
chmod u-w "$d/files/lib64/wine/dxvk/"*
echo "... done!"
echo "Replacing VKD3D-Proton with version 2.6 ..."
chmod u+w "$d/files/lib/wine/vkd3d-proton/"*
cp -f vkd3d-proton-2.6/x86/* "$d/files/lib/wine/vkd3d-proton"
chmod u-w "$d/files/lib/wine/vkd3d-proton/"*
chmod u+w "$d/files/lib64/wine/vkd3d-proton/"*
cp -f vkd3d-proton-2.6/x64/* "$d/files/lib64/wine/vkd3d-proton"
chmod u-w "$d/files/lib64/wine/vkd3d-proton/"*
echo "... done!"
done
fi
Zuletzt bearbeitet: