Journal Compiler wine-staging-wow64 pour une utilisation de dxvk avec Playonlinux

Posté par  (site web personnel) . Licence CC By‑SA.
20
21
mai
2018

Depuis la version 3 de Wine Playonlinux ne propose plus de version précompilée de wine-staging, or dxvk suppose l'utilisation de cette version patchée de wine pour fonctionner.

Qu'est-ce que dxvk ? C'est une implémentation Vulkan de directx11 particulièrement performante, elle permet, par exemple, de faire tourner un The Witcher 3 dans dans de très bonnes conditions d'utilisation là où sous une versions normale de Wine le logiciel est quasiment inutilisable.

Qu'est-ce que wow64 ? C'est le support des applis et des bibliothèques 32 bits pour la versioN 64 bits de wine.

Téléchargez :

Les sources et le patch correspondant :

Sources de Wine

Patch staging

Dépendances :

Voici les dépendances que j'ai installé pour réaliser une compilation quasi complète en terme de fonctionnalité de wine. Il est probable qu'il vous faille installer d'autres dépendances car mon installation de linux n'était pas neuve quand j'ai pris ces notes.

sudo apt install gcc-mulitlib build-essential libgtk-3-dev pkg-config-i686-linux-gnu libpulse-dev libpulse-dev:i386 libattr1-dev libattr1-dev:i386 libva-dev libva-dev:i386 libva-x11-2 libva-x11-2:i386 libva-drm2 libva-drm2:i386 flex bison libpcap0.8-dev libpcap0.8-dev:i386 libncurses5-dev libncurses5-dev:i386 libv4l-dev libv4l-dev:i386 liblcms2-dev liblcms2-dev:i386 libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libudev-dev libudev-dev:i386 libsdl2-dev libcapi20-dev libcapi20-dev:i386 libcups2-dev  libkrb5-dev libkrb5-dev:i386 libglobus-gssapi-gsi-dev libtiff5-dev libtiff5-dev:i386 libmpg123-dev libmpg123-dev:i386 libopenal-dev libopenal-dev:i386 libldap2-dev libldap2-dev:i386 libsane-dev libsane-dev:i386 libxml2-dev libxslt1-dev libgnutls28-dev libjpeg-dev libjpeg-dev:i386 libosmesa-dev libosmesa-dev:i386 libgsm1-dev libgsm1-dev:i386  libfreetype6-dev libfreetype6-dev:i386 libxcursor-dev:i386 libxi-dev:i386 libxshmfence-dev:i386 libxxf86vm-dev:i386 libxrandr-dev:i386 libxfixes-dev:i386 libxinerama-dev:i386 libxcomposite-dev:i386 libglu1-mesa-dev:i386 libdbus-1-dev:i386 libfontconfig1-dev:i386 libvulkan-dev:i386

Préparez vos dossiers de compilation :

ATTENTION : remplacez toutes les occurrences de X par votre version de wine !

Vous faites ici selon vos souhaits, pour ma part je créé un dossier par versions avec les dossier de compilation correspondants :

mkdir -p ~/WineBuilds/X/wine-X-32 ~/WineBuilds/X/wine-X-64

Appliquer le patch :

Il s'agit d'abord de décompresser les sources de wine et le patch staging :

cd ~/WineBuilds/X/
tar xvf wine-X.tar.xz && tar xvf wine-staging-X.tar.gz

Puis on déplace le contenu du dossier de patch dans le dossier des sources :

mv wine-staging-X/* wine-X && rm -r wine-staging-X/

On applique le patch :

cd wine-X
./patches/patchinstall.sh DESTDIR="$(pwd)" --all

Compilation des sources :

On commence par compiler la version 64 bits en précisant le dossier d'installation des binaires pour un usage immédiat dans Playonlinux :

cd ~/WineBuilds/X/wine-X-64
../wine-X/configure --with-xattr --enable-win64 --prefix=$HOME/.PlayOnLinux/wine/linux-amd64/X-wow64-staging
make -j6

Une fois ceci fait on compile la version 32 bit en précisant le dossier de compilation de la version 64 bit ainsi que la version 32 bits de PKGCONFIG :

cd ~/WineBuilds/X/wine-X-32
PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/ ../wine-X/configure --with-xattr --with-wine64=../wine-X-64 --prefix=$HOME/.PlayOnLinux/wine/linux-amd64/X-wow64-staging

Installation :

D'abord dans le dossier 32bits puis 64 :

cd ~/WineBuilds/X/wine-X-32 &&  make install
cd ~/WineBuilds/X/wine-X-64 &&  make install

Normalement vous devriez avoir une version staging et supportant les applis 32 et 64 bits de wine directement utilisable dans Playonlinux !

Utilisation de dxvk

dxvk est une implémentation Vulkan de directx11 particulièrement performante. Elle fonctionne avec une version patchée de wine ( d'où le tuto qui précède ).

Pour l'utiliser c'est assez simple, tout d'abord vous téléchargez la dernière version :

[dxvk][https://github.com/doitsujin/dxvk/releases]

Vous pouvez créer un dossier spécifique dans votre WineBuilds par exemple.

cd ~/WineBuilds/dxvk/
tar xvf dxvk-X.tar.gz

Il suffit ensuite de lancer le script pour chaque PREFIX de wine dans lequel vous souhaitez l'utiliser.

Supposons que vous ayez installé un Witcher3 dans un PREFIX nommé TW3 :

cd ~/WineBuilds/dxvk/dxvk-X/
export WINEPREFIX=~/.PlayOnLinux/wineprefix/TW3/ ; x32/setup_dxvk.sh ; x64/setup_dxvk.sh

C'est tout !

  • # Instructions pas claires

    Posté par  . Évalué à 10.

    remplacez toutes les occurrences de X par votre version de wine !

    Je n'ai plus de serveur graphique qui se lance maintenant /o\

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

  • # Je ne connaissais pas dxvk

    Posté par  . Évalué à 1.

    Merci du partage! Je ne connaissais pas l'existence de dxvk, ca m'a l'air d'etre un outil particulièrement puissant, je vais essayer de compiler tout cela dans la semaine pour faire marcher Path of Exile! J'avais l'habitude avant de compiler avec un set de patches du nom de Wine-PBA qui optimise la gestion du buffer d'OpenGL utilisé par Wine. J'avais déjà des bons boost de performances, mais avec vulkan à la place il est possible que cela règle plusieurs soucis que j'ai encore.

    Encore merci jbbourgoin! ;)

    • [^] # Re: Je ne connaissais pas dxvk

      Posté par  (site web personnel) . Évalué à 7.

      Si tu ne veux pas t'agacer à tout compiler ( c'est un peu long et laborieux ), je viens tout juste de découvrir cette page qui propose des binaires prêt à l'emploi.

      https://lutris.net/files/runners/

      Tu télécharges wine-staging-3.8-x86_64.tar.gz et le décompresse dans ~/.PlayOnLinux/wine/linux-amd64.

      Ensuite tu suis la procédure d'installation de dxvk.

      A ce sujet je viens de me faire un petit script pour ce dernier afin de me faciliter la tâche :

      #!/bin/sh -
      
      WINEPREF=$1
      
      WINEPREFIX=$HOME/.PlayOnLinux/wineprefix/$WINEPREF/ x32/setup_dxvk.sh  ;
      WINEPREFIX=$HOME/.PlayOnLinux/wineprefix/$WINEPREF/ x64/setup_dxvk.sh
      

      Suffit de le lancer à la racine de ton dossier dxvk : ./install-dxvk NomDuPrefixWine

      Finalement mon tuto ne sert plus à grand chose, mais je me dis que c'est toujours utile à avoir sous la main si un jour Lutris arrête de proposer des builds tous prêts ;)

  • # Quelques tests

    Posté par  (site web personnel) . Évalué à 9.

    Je viens de réaliser quelques tests de dxvk avec une 3.8-staging :

    The Witcher 3

    Synchronisation verticale : Oui
    Plein écran ( 1680x1050 )
    Hairworks : non
    Personnages en arrière-plan : bas
    Ombrage : bas
    Terrain : Extrême
    Eau : Elevée
    Densité herbe : élevée
    Textures : Extrême
    Portée feuillage : Moyen
    Niveau de détail : Extrême

    Pour du 60 fps quasi constant à Velen.

    C'est vraiment bien !

    Les perfs chutent si on fait grimper la qualité des ombres.

    Si on augmente les personnages en arrière plan on a toujours du 60 fps mais avec des micro-freezes ( chutes rapides à 5fps ) plus ou moins fréquents en fonction des lieux.

    Sur Windows je pouvaient pousser les persos en arrière-plan et les ombres beaucoup plus, c'est vraiment sur ces points que les perfs sont vraiment moins bonnes.

    Grim Dawn

    Cela se vérifie sur Grim Dawn sur lequel j'ai du supprimer les ombres et réduire drastiquement les effets de lumière ( et au final passer en d3d9 pour de meilleures perfs ).

    Shadow Warrior 2

    En supprimant quasiment toutes les options graphiques, et en mettant presque tout très bas ( sauf les textures en moyen ), j'arrive à framerate correct en … 900p.

    Autre

    Okami tourne très bien à première vue, ainsi que Dark Souls. The Elder Scrolls Online tourne très correctement pour peu que l'on baisse un peu la qualité des ombres ainsi que la distance de vision des éléments détaillés.

    Le travail abattu sur dxvk ( et wine de manière globale ) est vraiment impressionnant.

    • [^] # Re: Quelques tests

      Posté par  . Évalué à 1.

      Avec quelle config pour avoir un ordre d'idée?
      Et avec les pilotes proprio ou libre?

    • [^] # Re: Quelques tests

      Posté par  . Évalué à 2. Dernière modification le 24 mai 2018 à 12:29.

      Sur Windows je pouvaient pousser les persos en arrière-plan et les ombres beaucoup plus, c'est vraiment sur ces points que les perfs sont vraiment moins bonnes.
      (…)
      et au final passer en d3d9 pour de meilleures perfs

      Du coup, on a l'impression que ce n'est pas aussi impressionnant que tu le dirais…

  • # Lutris

    Posté par  . Évalué à 5.

    De mon côté, j'utilse Lutris.
    Les version de wine, en particulier wine-staging, sont beaucoup mieux suivies, dxvk s'active en une coche (depuis aujourd'hui on peut choisir quelle version utiliser) et il me permet même de lancer mes jeux natifs Linux.

    • [^] # Re: Lutris

      Posté par  (site web personnel) . Évalué à 3.

      Oui, je viens de découvrir que lutris proposait directement en téléchargement ses builds de wine-staging, et c'est bien pratique !

      Par contre je reste sur PlayOnLinux, j'avais déjà essayé Lutris et je n'arrive pas à me faire à l'interface, mais c'est totalement personnel ;)

      • [^] # Re: Lutris

        Posté par  . Évalué à 2.

        J'ai eu un peu de mal aussi à m'habituer. Il ne fonctionne pas du tout comme PlayOnLinux.
        Au début, on se sent moins libre de faire ses bidouilles et, finalement, on découvre qu'il est bien complet.
        En face (PlayOnLinux), le développement semble bien mort ces derniers temps. À terme, j'ai peur que cette appli ne devienne un abandonware :(

        Aujourd'hui, selon si mon installation est plus ou moins ancienne, je bascule de l'un à l'autre.

        Astuces:
        - Tu peux partager tes installations Lutris dans PlayOnLinux en créant un lien symbolique de ton répertoire dans "PlayOnLinux's virtual drives". Tu crées ensuite tes raccourcis dans PlayOnLinux.
        - Tu peux utiliser les builds de Lutris dans PoL. Il suffit de copier la version de wine qui t'intéresse de ~/.local/share/lutris/runners à ~/.PlayOnLinux/wine/linux-[ARCH] .Tu renommes le répertoire au même format que PoL. Tu n'a plus qu'a sélectionner la version dans PlayOnLinux

        Il y a de quoi tester ;)

        • [^] # Re: Lutris

          Posté par  (site web personnel) . Évalué à 3.

          Tu m'as convaincu de lui redonner une chance ^

          D'autant plus, comme tu le note, que PlayOnLinux semble effectivement au point mort question développement :(

          • [^] # Re: Lutris

            Posté par  . Évalué à 1.

            Qu'est-ce que tu voudrais comme développement supplémentaire pour PoL ?

            Ça dépend bien évidemment des usages, mais je m'en sers pour gérer les versions de Wine et certains paramètres selon les jeux (je ne passe même plus par les scripts), donc ça fait le taf. Le logiciel me semble mature.

            • [^] # Re: Lutris

              Posté par  . Évalué à 3.

              Il manque, au minimum, le suivi des versions de Wine…

            • [^] # Re: Lutris

              Posté par  (site web personnel) . Évalué à 5.

              PoL est effectivement très fonctionnel en l'état, mais si les versions de Wine "normales" continuent à être proposées, il n'y a plus de "wine-staging" ( ni de versions spécifiques autres ), dxvk n'est pas proposé dans les installeurs automatiques de "composants", et j'ai l'impression que les installeurs de jeux ne sont plus mis à jour.

              Bref le logiciel donne fortement l'impression qu'il est un peu délaissé par sa communauté, et c'est dommage.

              Cela il continue de répondre à mes attentes en l'état donc c'est pas non plus catastrophique.

        • [^] # Re: Lutris

          Posté par  . Évalué à 4.

          Il est prévu de porter POL 5 en Java, d'améliorer l'UX et les perfs pour le moment.

          Je ne suis plus trop le développement en interne depuis quelques temps et je ne connais pas l'état actuel mais en théorie le développement n'est pas abandonné. Passablement ralenti probablement.

          La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.

          • [^] # Re: Lutris

            Posté par  (site web personnel) . Évalué à 4.

            Je viens de jeter un œils aux forums PoL et j'ai trouvé l'adresse du dépôt des sources de PoL5 :

            https://github.com/PhoenicisOrg/phoenicis

            Effectivement le développement et toujours bien actif. C'est dommage qu'il n'y ait aucunes communications à ce sujet sur la page principale de PoL qui donne le sentiment d'avoir à faire avec un projet un peu mort.

            • [^] # Re: Lutris

              Posté par  . Évalué à 1.

              Je vais voir avec Quentin Paris, quand j'aurai un peu de temps et lui aussi, s'il y a de nouvelles choses sur lesquelles on peut communiquer. Mais c'est vrai qu'on a dit le plus gros dans la dernière news concernant POL 5, qui commence à dater…

              Je sais qu'on manque de rédacteurs depuis plus ou moins toujours… Et de traducteurs également. Et comme je ne me tiens plus trop au courant de ce qui se passe en interne, je n'ai pas forcément matière à écrire bien que j'essaye de traduire de temps en temps les news anglaises "importantes" en français.

              Et puis s'il y a des personnes qui veulent assurer le rôle de rédacteur et/ou traducteur, manifestez-vous, vous serez accueilli à bras ouverts.

              La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.