Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
vulkan [2018/08/21 02:02] – Vulkan sous Linux avec Wine part 1 alex | vulkan [2019/05/26 11:58] (Version actuelle) – [Procédure] Typos + VKCUBE sous linux + précisions MESA alex | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | =====Vulkan sous Linux avec Wine===== | + | ======Vulkan sous Linux avec Wine avec une carte NVIDIA====== |
+ | \\ | ||
+ | \\ | ||
+ | Cela peut sembler complexe mais finalement cela se révèle assez simple une fois que l'on a saisi le fonctionnement et les impératifs. Il est bon d' | ||
+ | ====Procédure==== | ||
- | + | **1.** Installer | |
- | 1. Installer Vulkan : | + | |
< | < | ||
- | sudo apt install libvulkan1 libvulkan-dev vulkan-utils | + | sudo apt update |
+ | sudo apt install libvulkan1 libvulkan-dev vulkan-tools | ||
</ | </ | ||
+ | (25 oct 2018 : **vulkan-utils** a été remplacé par **vulkan-tools**) | ||
- | 2. Mesa récent | + | **2.** **Mesa** récent |
< | < | ||
sudo add-apt-repository ppa: | sudo add-apt-repository ppa: | ||
sudo apt update | sudo apt update | ||
sudo apt upgrade | sudo apt upgrade | ||
- | </ | ||
- | |||
- | 3. Pilotes Mesa Vulkan : | ||
- | < | ||
sudo apt install mesa-vulkan-drivers | sudo apt install mesa-vulkan-drivers | ||
</ | </ | ||
- | 4. Pilotes NVIDIA avec gestion de Vulkan : | + | |
+ | **3.** **Pilotes | ||
< | < | ||
Ligne 26: | Ligne 28: | ||
</ | </ | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | Si besoin installer les pilotes 396.51, les pilotes de la branche 390 et inférieures NE fonctionneront PAS avec Vulkan ! | + | Vérifier la version des pilotes et si besoin installer les pilotes |
</ | </ | ||
- | 5. Installer Play on Linux : | + | **4.** |
+ | C'est une bonne idée de tester tout de suite si Vulkan est fonctionnel sur la machine hôte linux en tapant dans la console | ||
+ | < | ||
+ | Une fenêtre devrait s' | ||
+ | |||
+ | |||
+ | |||
+ | **5.** Installer | ||
< | < | ||
wget https:// | wget https:// | ||
sudo dpkg -i PlayOnLinux_4.2.12.deb | sudo dpkg -i PlayOnLinux_4.2.12.deb | ||
+ | sudo apt install winetricks | ||
</ | </ | ||
+ | Une vieille version de Wine sera installée aussi en dépendance mais on ne s'en préoccupe pas. | ||
- | 6. Récupérer : | + | **6.** Récupérer |
< | < | ||
- | wget https:// | + | wget https:// |
- | unzip wine-esync-3.14-x86_64.tar.gz -d $HOME/ | + | unzip wine-esync-staging-pba-3.17-x86_64.tar.gz -d $HOME/ |
</ | </ | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | Si pas dispo vu l' | + | Le dépôt https:// |
</ | </ | ||
- | 7. Lancer PoL -> Tools -> manage Wine versions -> Wine version (amd64) et vérifier qu'il est listé puis fermer la fenêtre de gestion des versions.\\ | ||
- | 8. File -> install -> install a non-listed programm -> OS 64 bits, sélectionner PathOfExileInstaller.exe et suivre les instructions.\\ | ||
- | 9. Une fois terminée, pas plus d' | ||
- | 10. Dans PoL cliquer sur le **gros engrenage** avec dessous **CONFIGURE**, | ||
- | 11. Sélectionner Path of Exile, onglet **GENERAL** \\ | ||
+ | **7.** Lancer **PoL** -> Tools -> manage Wine versions -> Wine version (amd64) et vérifier qu' | ||
+ | |||
+ | **8.** Installer un jeu DirectX 11, par exemple **Path of Exile** que nous utiliserons par la suite : | ||
+ | < | ||
+ | wget https:// | ||
+ | </ | ||
+ | **9.** File -> install -> install a non-listed programm -> OS 64 bits, sélectionner // | ||
+ | \\ | ||
+ | **10.** Indiquer utiliser la version // | ||
+ | \\ | ||
+ | **11.** Dans **PoL** cliquer sur le **gros engrenage** avec dessous **CONFIGURE**, | ||
+ | \\ | ||
+ | **12.** Sélectionner // | ||
+ | \\ | ||
+ | **13.** Placer dans le champ **Arguments** : | ||
+ | < | ||
+ | --waitforpreload --nologo --garbage-generation 2 | ||
+ | </ | ||
+ | **14.** Onglet **Miscellaneous** -> dans le champs **Commands to exec before running the program** mettre : | ||
+ | < | ||
+ | export DXVK_HUD=devinfo, | ||
+ | export DXVK_USE_PIPECOMPILER=1 | ||
+ | export WINEESYNC=1 | ||
+ | export CSMT=enabled | ||
+ | export DXVK_ASYNC=1 | ||
+ | export __GL_YIELD=NOTHING | ||
+ | </ | ||
+ | L' | ||
+ | |||
+ | **15.** Onglet **Display** -> **GLSL support** désactivé, | ||
+ | \\ | ||
+ | **16.** Lancer PoE pour tester en mode DX9. Si tout se passe bien après une vingtaine de secondes du fait des arguments forçant le préchargement on arrivera à l' | ||
+ | \\ | ||
+ | **17.** Taper dans la console : | ||
+ | < | ||
+ | export $WINEPREFFIX=$HOME/ | ||
+ | </ | ||
+ | **18.** Charger les librairies de conversion **DXVK** 0.70 ou supérieures pour le PoE sous Wine et les installer avec Winetricks : | ||
+ | < | ||
+ | wget https:// | ||
+ | unzip dxvk-0.71.tar.gz | ||
+ | cd dxvk-0.71 | ||
+ | winetricks --force setup_dxvk.verb | ||
+ | </ | ||
+ | **L' | ||
+ | Il y aura des messages venant de **WINE**, refuser l' | ||
+ | <WRAP center round important 90%>Si il y a eu l' | ||
+ | // | ||
+ | </ | ||
+ | Si besoin pour installer les librairies DLL manuellement il faut prendre celles dans // | ||
+ | Note : l' | ||
+ | |||
+ | **19.** Sous **PoL** sélectionner **Path of Exile**, clic droit -> **Configure Wine**. Il peut y avoir de nouveau des fenêtres **Wine** et des propositions d' | ||
+ | Onglet **Librairies** vérifier que d3d10 (native), d3d10_1 (native), d3d10core (native), d3d11 (native), dxgi (native) soient présentes et uniquement celles-ci. Dans le cas contraire retour à l' | ||
+ | <WRAP center round tip 60%> | ||
+ | d3dcompiler_47 **pourrait** être nécessaire, | ||
+ | </ | ||
+ | **20.** Onglet **Graphics** tout décocher. Puis cliquer sur **OK**.\\ | ||
+ | \\ | ||
+ | **21.** Lancer **PoE** et aller dans les **OPTIONS**, | ||
+ | \\ | ||
+ | **22.** Si tout se passe bien PoE se lance en mode VULKAN et donc on voit en haut à gauche le nom de la carte graphique employée, la version du pilote vidéo (396.51 et au-delà), la version des librairies VULKAN, le nombre d' | ||
+ | <WRAP center round important 60%> | ||
+ | Si la version de **VULKAN** ne correspond pas à celle attendue, par exemple une mise à jour effectuée mais le système emploie toujours la version précédente, | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | **23.** Dans les **OPTIONS** mettre **ENGINE MULTITHREADING** sur **Disabled** (au début tout au moins, quelquefois cela stabilise les images par secondes lors des scenes chargées mais d' | ||
+ | |||
+ | <WRAP center round info 20%> | ||
+ | BON JEU ! | ||
+ | </ | ||
+ | \\ | ||
+ | <WRAP center round important 80%> | ||
+ | Si le jeu ne fonctionne pas il faut tester si Vulkan fonctionne déjà avec la version de Wine employée | ||
+ | </ | ||
+ | |||
+ | Pour cela charger le test VulkanCube : | ||
+ | < | ||
+ | wget https:// | ||
+ | unzip cube-vulkansdk1.0.65.tar.xz | ||
+ | cd cube-vulkansdk1.0.65/ | ||
+ | $HOME/ | ||
+ | </ | ||
+ | **NOTE** : il est important de lancer cube.exe depuis son répertoire avec ses ressources sinon il produit une erreur. | ||
+ | Si tout se passe bien une fenêtre s' | ||
+ | <WRAP center round alert 60%> | ||
+ | Si ce n'est pas le cas c'est que VULKAN n'est pas opérationnel et donc __**il FAUT reprendre toutes les étapes depuis le départ**__ | ||
+ | </ | ||
+ | |||
+ | Pour une compatibilité (très limitée) avec DX10 dans d' | ||
+ | < | ||
+ | export $WINEPREFFIX=$HOME/ | ||
+ | winetricks d3dcompiler_43 | ||
+ | </ | ||
+ | Voir [[https:// | ||
+ | ---- | ||
+ | |||
+ | |||
+ | ====Explications==== | ||
+ | |||
+ | |||
+ | * **Wine** est un émulateur de système Microsoft Windows permettant d' | ||
+ | * Les versions **Wine-staging** inclues des améliorations expérimentales et des correctifs que ne possèdent pas les versions classiques de **Wine**. | ||
+ | * **Wine-esync** est une variante basée sur **Wine-staging** incluant des optimisations plus poussées pouvant autant aider que freiner. Ici elles aident mais certains jeux demandent une version spécialisée pour fonctionner correctement. À partir de la version 3.12 Wine-staging est capable de faire transiter les instructions Vulkan à l' | ||
+ | * **Vulkan** est le petit frère d' | ||
+ | * La commande bash **export** permet d' | ||
+ | * **$WINEPREFFIX=** définie à Wine l' | ||
+ | * **DXVK** est un ensemble de librairies convertissant les commandes DirectX 11 en commandes Vulkan qui sont ici ensuite transportées par Wine jusqu' | ||
+ | * **VKD3D** est la partie de Vulkan sous Wine qui converti les instructions DIRECTX 12 en VULKAN.\\ | ||
+ | * **VK9** est la partie de Vulkan sous Wine qui converti les instructions DIRECTX 9 en VULKAN.\\ | ||
+ | [[https:// | ||
+ | **Gallium Nine** est un système **dédié aux pilotes graphiques libres** qui leur envoie les commandes **D3D9** sans conversion vers OpenGL, d'où un gain de performance les mettant plus ou moins au niveau des pilotes propriétaires. Incompatible avec VULKAN. | ||
+ | |||
+ | \\ | ||
+ | Les étapes 1, 2, 3 et 4 sont nécessaires parce que :\\ | ||
+ | 1. L' | ||
+ | 2. **Mesa** est une bibliothèque 3D gérant OpenGL & Vulkan et est employée par les serveurs d' | ||
+ | 3. **Mesa-vulkan-drivers** est la partie gérant spécifiquement Vulkan en envoyant les commandes Vulkan au pilote de la carte graphique.\\ | ||
+ | 4. Les Pilotes **NVIDIA 396.51** et au-delà prennent en charge les instructions Vulkan pour piloter la carte graphique.\\ | ||
+ | \\ | ||
+ | ====Détails des commandes à exécuter avant de lancer le programme (dans PoL)=== | ||
+ | * Pour ne plus avoir les informations dans les applications employant Vulkan quand à la carte graphique et les pilotes il suffit d' | ||
+ | * **DXVK_USE_PIPECOMPILER=1** active la compilation asynchrone des shaders et est nécessaire pour limiter les lags dans PoE du fait des compilations en temps réel des shaders au fur et à mesure que l'on arrive dans de nouveaux environnements. https:// | ||
+ | * **WINEESYNC=1** active un chemin alternatif des appels (excessifs) vers wineserver, réduisant de manière drastique l' | ||
+ | * ** __GL_YIELD=NOTHING__** (2 x _ avant le GL !!) désactive les fonctions de mise en attente des pilotes de la carte graphique lorsqu' | ||
+ | * Il est possible de rajouter **export LD_PRELOAD=" | ||
+ | |||
+ | ====Détails des arguments dans l' | ||
+ | |||
+ | **--waitforpreload --nologo -gc 2**\\ | ||
+ | Le plus simple est de lire ce qui est écrit dans la page dédiée :\\ | ||
+ | https:// | ||
+ | ---- | ||
+ | ====NOTES==== | ||
+ | Attention en spécifiant que l'OS est Windows 10 il est possible que certains jeux ( World of Tanks notamment ) se lancent EXCLUSIVEMENT en DIRECTX 11 et donc plantent dès l' | ||
+ | \\ | ||
+ | Il faut aussi pour permettre à la fonction **ESYNC** de fonctionner convenablement éditer (avec sudo) :\\ | ||
+ | **/ | ||
+ | **/ | ||
+ | Et rajouter dans chaque, à la fin :\\ | ||
+ | **DefaultLimitNOFILE=1048576**\\ | ||
+ | [[https:// | ||