VKD3D-Proton pakken inneholder DLL filer som konverterer Direct3D 12-kall til Vulkan. Som standard i Wine, Direct3D 12 kall konverteres også til Vulkan; denne pakken gjør imidlertid mer aggressive optimaliseringer rettet mot spilling og erstatter standardimplementeringen som tilbys av Wine, VKD3D.
dxgi og konfigurasjonsdelen),
MinGW-w64-GCC-15.2.0 (kompilert med
POSIX trådstøtte), Vulkan-SDK-1.4.328.1, og Wine-10.20
Denne pakken er avhengig av undermoduler, og flere av dem må lastes ned. Lag en liste over nødvendige tarballene som skal lastes ned.:
cat > vkd3d-proton-3.0-list << "EOF"
HansKristian-Work/vkd3d-proton/archive/v3.0/vkd3d-proton-3.0.tar.gz
KhronosGroup/SPIRV-Headers/archive/3b9447dc98371e96b59a6225bd062a9867e1d203.tar.gz
KhronosGroup/Vulkan-Headers/archive/b39ab380a44b6c8df462c34e976ea9ce2d2c336b.tar.gz
HansKristian-Work/dxil-spirv/archive/4e36bab794afdb7d78f56b866971009ca894fe9c.tar.gz
KhronosGroup/SPIRV-Cross/archive/4b7bcb7e5cf71015b3299088d22004bfe4e13a5e.tar.gz
KhronosGroup/SPIRV-Tools/archive/e9a8ceeddbf7e3aaadac2ab6f8a6ab6437872e88.tar.gz
doitsujin/dxbc-spirv/archive/a38b5d78ed29f5fe44c2a2e157d5f7c2516df6e5.tar.gz
KhronosGroup/SPIRV-Headers/archive/c8ad050fcb29e42a2f57d9f59e97488f465c436d.tar.gz
EOF
Last ned tarballene ved bruk av Wget-1.25.0:
mkdir vkd3d-proton &&
cd vkd3d-proton &&
grep -v '^#' ../vkd3d-proton-3.0-list | wget -i- -c \
-B https://github.com/
Pakk ut alle tarballene:
for i in *.tar.?z*; do echo "Extracting $i..." tar -xf $i done
Nå som tarballene er pakket ut, må undermodulene flyttes på plass. Gjør det nå:
cp -RT SPIRV-Headers-3b9447dc98371e96b59a6225bd062a9867e1d203 \
vkd3d-proton-3.0/khronos/SPIRV-Headers &&
mv -T Vulkan-Headers-* \
vkd3d-proton-3.0/khronos/Vulkan-Headers &&
mv -T dxil-spirv-* \
vkd3d-proton-3.0/subprojects/dxil-spirv &&
mv -T SPIRV-Cross-* \
vkd3d-proton-3.0/subprojects/dxil-spirv/third_party/SPIRV-Cross &&
mv -T SPIRV-Headers-3b9447dc98371e96b59a6225bd062a9867e1d203 \
vkd3d-proton-3.0/subprojects/dxil-spirv/third_party/spirv-headers &&
mv -T SPIRV-Tools-* \
vkd3d-proton-3.0/subprojects/dxil-spirv/third_party/SPIRV-Tools &&
mv -T dxbc-spirv-* \
vkd3d-proton-3.0/subprojects/dxil-spirv/subprojects/dxbc-spirv &&
mv -T SPIRV-Headers-c8ad050fcb29e42a2f57d9f59e97488f465c436d \
vkd3d-proton-3.0/subprojects/dxil-spirv/subprojects/dxbc-spirv/submodules/spirv_headers
Gå inn i vkd3d-proton-3.0 mappen:
cd vkd3d-proton-3.0
Hvis du bruker multilib, er det opp til deg om du vil installere 32-biters DLL filer fra denne pakken. Direct3D 12 ble utgitt i midten av 2015, så det er færre 32-biters D3D12 applikasjoner enn 64-biters. Hvis du ønsker å være på den sikre siden, vil det være lurt å installere 32-biters DLL filer også.
Installer 64-bit VKD3D-Proton ved å kjøre følgende kommandoer:
mkdir build-win64 &&
cd build-win64 &&
meson setup .. --cross-file=../build-win64.txt \
--buildtype=release \
--prefix=$PWD/DESTDIR &&
ninja
Nå som root bruker:
ninja install &&
cd .. &&
mkdir -pv /usr/lib/vkd3d-proton/win64 &&
install -vDm755 build-win64/DESTDIR/bin/*.dll \
-t /usr/lib/vkd3d-proton/win64/
Installer 32-bit VKD3D-Proton ved å kjøre følgende kommandoer:
mkdir build-win32 &&
cd build-win32 &&
meson setup .. --cross-file ../build-win32.txt \
--buildtype=release \
--prefix=$PWD/DESTDIR &&
ninja
Nå som root bruker:
ninja install &&
cd .. &&
mkdir -pv /usr/lib/vkd3d-proton/win32 &&
install -vDm755 build-win32/DESTDIR/bin/*.dll \
-t /usr/lib/vkd3d-proton/win32/
Selv om VKD3D-Proton DLL filene er installert, er de ennå ikke i Wine prefikset. Lag symbolske lenker slik at de kan finnes av Wine, samtidig som det er mulig å oppdatere denne pakken uten å måtte kopiere alt på nytt. I tillegg til dette må registeret oppdateres for å bruke de nye DLL-ene. Gjør dette for hver arkitektur du har installert.
For 64-bit:
for DLL_FILE in /usr/lib/vkd3d-proton/win64/*.dll; do
ln -sfv $DLL_FILE ~/.wine/drive_c/windows/system32/$(basename $DLL_FILE) &&
DLL_FILE=$(basename $DLL_FILE | sed s/.dll//g) &&
wine reg add \
'HKEY_CURRENT_USER\Software\Wine\DllOverrides' \
/v "$DLL_FILE" /d native /f
done
For 32-bit:
for DLL_FILE in /usr/lib/vkd3d-proton/win32/*.dll; do
if [ ! -d ~/.wine/drive_c/windows/syswow64 ]; then
ln -sfv $DLL_FILE ~/.wine/drive_c/windows/system32/$(basename $DLL_FILE)
else
ln -sfv $DLL_FILE ~/.wine/drive_c/windows/syswow64/$(basename $DLL_FILE)
fi
DLL_FILE=$(basename $DLL_FILE | sed s/.dll//g) &&
wine reg add \
'HKEY_CURRENT_USER\Software\Wine\DllOverrides' \
/v "$DLL_FILE" /d native /f
done
Undersøk meson_options.txt eller
meson.options for en fullstendig
liste over alternativer.
--cross-file=../build-win{32,64}.txt:
Denne parameteren endrer hvilken Win arkitektur det skal bygges
for.
--buildtype=release:
Spesifiser en byggetype som er egnet for stabile utgivelser av
pakken, da standardtypen kan produsere uoptimaliserte binærfiler.
wine reg add ...: Denne kommandoen overstyrer registeret slik at Wine vil bruke de nye DLL filene i stedet for de gamle.