DXVK-3.0

Introduksjon til DXVK

DXVK pakken inneholder DLL filer som konverterer Direct3D 8-11 kall til Vulkan. Som standard i Wine, Direct3D 8-11 kall konverteres til OpenGL kall på en dårlig måte, noe som fører til dårlig ytelse. Derfor installerer mange denne pakken.

Notat

Dette kan ta litt tid å bygge. Gjør gjerne noe annet mens dette bygges.

DXVK Avhengigheter

Required
MinGW-w64-GCC-16.1.0 (kompilert med POSIX trådstøtte), Vulkan-SDK-1.4.350.1, og Wine-11.11

Laste ned DXVK

Denne pakken er avhengig av undermoduler, og flere av dem må lastes ned. Lag en liste over nødvendige tar filer som skal lastes ned:

cat > dxvk-3.0-list << "EOF"
doitsujin/dxvk/archive/v3.0/dxvk-3.0.tar.gz
doitsujin/libdisplay-info/archive/275e6459c7ab1ddd4b125f28d0440716e4888078.tar.gz
KhronosGroup/SPIRV-Headers/archive/04f10f650d514df88b76d25e83db360142c7b174.tar.gz
KhronosGroup/Vulkan-Headers/archive/8864cdc896bbc2a9b6eb36b3218fc9ef57908d77.tar.gz
doitsujin/dxbc-spirv/archive/29ed92269d6c9ac5471ca8084e4e5668c964610c.tar.gz
EOF

Last ned tarballene ved å bruke Wget-1.25.0:

mkdir dxvk &&
cd    dxvk &&
grep -v '^#' ../dxvk-3.0-list | wget -i- -c \
    -B https://github.com/

Installasjon av DXVK

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å:

mv -T  libdisplay-info-*                                      \
       dxvk-3.0/subprojects/libdisplay-info                  &&
cp -RT SPIRV-Headers-04f10f650d514df88b76d25e83db360142c7b174 \
       dxvk-3.0/include/spirv                                &&
mv -T  Vulkan-Headers-*                                       \
       dxvk-3.0/include/vulkan                               &&
mv -T  dxbc-spirv-*                                           \
       dxvk-3.0/subprojects/dxbc-spirv                       &&
mv -T  SPIRV-Headers-*                                        \
       dxvk-3.0/subprojects/dxbc-spirv/submodules/spirv_headers

Gå inn i dxvk-3.0 mappen:

cd dxvk-3.0

Notat

Hvis du bruker multilib, anbefales det å installere 32-bit sammen med 64-bit DXVK siden det finnes mange 32-biters Direct3D applikasjoner.

64-bit Installasjon

Installer 64-bit DXVK 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/dxvk/win64 &&
install -vDm755 build-win64/DESTDIR/bin/*.dll \
             -t /usr/lib/dxvk/win64/

32-bit Installasjon

Installer 32-bit DXVK 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/dxvk/win32 &&
install -vDm755 build-win32/DESTDIR/bin/*.dll \
             -t /usr/lib/dxvk/win32/

Sette opp DXVK

Notat

Denne delen krever et kjørende grafisk miljø. Hvis du ikke er klar ennå, kan du hoppe over denne delen og gå tilbake når du er i et grafisk miljø.

Først, opprett Wine prefiks hvis det ikke allerede er opprettet:

WINEPREFIX=~/.wine wineboot -u

Notat

wineboot kan rapportere en feil i utdataene, men dette er normalt og hyppig. Vanligvis er disse feilene ikke fatale, og du trenger vanligvis ikke å bekymre deg for dem. Wine er veldig detaljert.

Selv om DXVK DLL filene er installert, er de ennå ikke i Wine prefiks. 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.

64-bit Oppsett

For 64-bit:

for DLL_FILE in /usr/lib/dxvk/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

32-bit Oppsett

For 32-bit:

for DLL_FILE in /usr/lib/dxvk/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

Parameterforklaringer

Notat

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.

WINEPREFIX=~/.wine wineboot -u: Denne kommandoen oppretter en Wine prefiks og kopierer eventuelle manglende filer til det. Det vil ikke tilbakestille et eksisterende prefiks.

wine reg add ...: Denne kommandoen overstyrer registeret slik at Wine vil bruke de nye DLL filene i stedet for de gamle.

Innhold

Installerte Programmer: Ingen
Installerte Biblioteker: d3d10core, d3d11, d3d8, d3d9, and dxgi (alle DLL-er)
Installerte Mapper: /usr/lib/dxvk/{win32,win64}

Korte Beskrivelser

d3d10core

konverterer Direct3D 10 kall til Vulkan

d3d11

konverterer Direct3D 11 kall til Vulkan

d3d8

konverterer Direct3D 8 kall til Vulkan

d3d9

konverterer Direct3D 9 kall til Vulkan

dxgi

håndterer Direct3D grafikkinfrastrukturen