Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
vulkan [2018/08/21 02:47] – Vulkan sous Linux avec Wine part 2 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 & Winetricks : | + | **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 | ||
< | < | ||
Ligne 36: | Ligne 45: | ||
sudo apt install winetricks | sudo apt install winetricks | ||
</ | </ | ||
- | Une vieille version de Wine sera installée aussi en dépendances | + | Une vieille version de Wine sera installée aussi en dépendance |
- | 6. Récupérer une version de WINE compatible Vulkan : | + | **6.** Récupérer une version de **WINE** compatible Vulkan : |
< | < | ||
- | 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é | + | |
- | 8. Installer un jeu DirectX 11, par exemple Path of Exile : | + | **7.** Lancer |
+ | |||
+ | **8.** Installer un jeu DirectX 11, par exemple | ||
< | < | ||
wget https:// | wget https:// | ||
</ | </ | ||
- | 9. File -> install -> install a non-listed programm -> OS 64 bits, sélectionner // | + | **9.** File -> install -> install a non-listed programm -> OS 64 bits, sélectionner // |
- | 10. Indiquer utiliser la version //wine-esync-3.14-x86_64// | + | \\ |
- | 11. Dans PoL cliquer sur le **gros engrenage** avec dessous **CONFIGURE**, | + | **10.** Indiquer utiliser la version // |
- | 12. Sélectionner //Path of Exile// dans la liste, onglet **GENERAL** -> **Wine version**, vérifier que // | + | \\ |
- | 13. Placer dans le champ **Arguments** : | + | **11.** Dans **PoL** cliquer sur le **gros engrenage** avec dessous **CONFIGURE**, |
+ | \\ | ||
+ | **12.** Sélectionner //Path_of_Exile// dans la liste, onglet **GENERAL** -> **Wine version**, vérifier que // | ||
+ | \\ | ||
+ | **13.** Placer dans le champ **Arguments** : | ||
< | < | ||
- | --waitforpreload --nologo | + | --waitforpreload --nologo --garbage-generation 2 |
</ | </ | ||
- | 14. Onglet **Miscellaneous** -> dans le champs **Commands to exec before running the program** mettre : | + | **14.** Onglet **Miscellaneous** -> dans le champs **Commands to exec before running the program** mettre : |
< | < | ||
- | export DXVK_HUD=devinfo, | + | export DXVK_HUD=devinfo, |
+ | export DXVK_USE_PIPECOMPILER=1 | ||
+ | export WINEESYNC=1 | ||
+ | export CSMT=enabled | ||
+ | export DXVK_ASYNC=1 | ||
+ | export __GL_YIELD=NOTHING | ||
</ | </ | ||
- | 15. Onglet **Display** -> **GLSL support** désactivé, | + | L' |
- | 16. Lancer PoE pour tester en mode DX9. Si tout se passe bien on arrivera à l' | + | |
- | 17. Taper dans la console : | + | **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 | ||
+ | \\ | ||
+ | **17.** Taper dans la console : | ||
< | < | ||
export $WINEPREFFIX=$HOME/ | export $WINEPREFFIX=$HOME/ | ||
</ | </ | ||
- | 18. Charger les librairies de conversion **DXVK** 0.70 ou supérieures pour le PoE sous Wine : | + | **18.** Charger les librairies de conversion **DXVK** 0.70 ou supérieures pour le PoE sous Wine et les installer avec Winetricks |
< | < | ||
- | wget https:// | + | wget https:// |
- | unzip dxvk-0.70.tar.gz | + | unzip dxvk-0.71.tar.gz |
- | cd dxvk-0.70 | + | cd dxvk-0.71 |
- | winetricks setup_dxvk.verb | + | winetricks |
</ | </ | ||
+ | **L' | ||
Il y aura des messages venant de **WINE**, refuser l' | Il y aura des messages venant de **WINE**, refuser l' | ||
- | <WRAP center round important 90%>Si il y a eu l' | + | <WRAP center round important 90%>Si il y a eu l' |
- | $HOME/ | + | //$HOME/ |
</ | </ | ||
- | Si besoin pour installer les librairies DLL manuellement il faut prendre celles dans //dxvk-0.70/x64// (ou toutes version ultérieure) et les placer dans // | + | Si besoin pour installer les librairies DLL manuellement il faut prendre celles dans //dxvk-0.71/x64// (ou toutes version ultérieure) et les placer 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' | + | **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%> | <WRAP center round tip 60%> | ||
- | d3dcompiler_47 **pourrait** être nécessaire, | + | d3dcompiler_47 **pourrait** être nécessaire, |
</ | </ | ||
- | 20. Onglet **Graphics** tout décocher. Puis cliquer sur **OK**. | + | **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:// | ||