
Si vous jouez sous Linux et que vous vous intéressez à l'archéologie des jeux vidéo, le nom Le D7VK 1.4 vous semblera probablement de plus en plus familier.Cette petite mais puissante couche de traduction est devenue un élément essentiel pour profiter des titres classiques Direct3D 5, 6 et 7 via Vulkan, généralement avec Wine ou Proton comme plateforme. De plus, elle arrive à un moment où DXVK a également évolué vers sa version 1.4, renforçant ainsi l'écosystème de traduction DirectX → Vulkan.
Dans les lignes qui suivent, nous allons examiner Les principales nouveautés de D7VK 1.4 et sa place au sein de l'écosystème DXVK/WineNous aborderons ses avantages en termes de compatibilité et de performances avec les jeux plus anciens, ses limitations, et comment l'utiliser sur votre système Linux (et même sur Windows, mais de façon secondaire). Nous évoquerons également brièvement les principales caractéristiques de DXVK 1.4, car nombre de ses idées et concepts sont communs et complémentaires.
Qu'est-ce que le D7VK exactement et quel problème résout-il ?
D7VK est un Couche de traduction basée sur Vulkan conçue pour exécuter des applications et des jeux 3D existants qui utilisent Direct3D 7, 6 et 5 sous Linux via Wine. Au lieu de réimplémenter l'intégralité de la pile Direct3D et DirectDraw, D7VK s'appuie sur le backend D3D9 de DXVK et l'implémentation DDraw de Wine (ou même celle native de Windows) comme intermédiaire minimaliste entre les deux.
En termes simplifiés, on pourrait dire que D7VK fait office d'« interprète » entre les anciens jeux Direct3D 5/6/7 et DXVK.qui, à son tour, traduit tout en Vulkan. De cette façon, de nombreux jeux classiques peuvent profiter des avantages de Vulkan (moins de surcharge, meilleure utilisation du processeur, meilleure gestion des ressources) sans que leurs développeurs aient à modifier une seule ligne de code.
Il est important de comprendre que L'objectif principal du D7VK est d'offrir une compatibilité satisfaisante avec le D3D7.Ajout d'une prise en charge « expérimentale » de D3D6 et D3D5, précisément parce que plus on remonte dans l'histoire de DirectX, plus les API deviennent « maudites » et plus leurs interactions avec DDraw et GDI sont rares.
Architecture et étendue du D7VK
L'architecture du D7VK repose sur une approche très pragmatique : Il repose sur DXVK (en particulier le backend D3D9) et sur DDraw de Wine. Il s'agit de créer une couche mince qui implémente uniquement les fonctionnalités nécessaires de D3D7/6/5. Au lieu de réécrire DirectDraw et toutes les API antérieures à D3D8, elle intègre le strict minimum pour que les jeux puissent communiquer correctement avec DXVK.
Ceci signifie que Ce document n'a pas pour but de couvrir tous les aspects les plus obscurs de DDraw.Cela est particulièrement vrai pour les applications qui mélangent sans vergogne D3D avec GDI ou différentes versions de DirectX. Dans ce cas, l'auteur de D7VK lui-même recommande vivement l'utilisation de WineD3D qui, bien que légèrement moins performant, implémente la quasi-totalité des fonctionnalités et gère bien mieux ces interactions problématiques.
En s'appuyant sur DXVK pour D3D9, Toutes les options de configuration DXVK pour D3D9 sont applicables à D7VK.Le D7VK hérite ainsi d'une grande partie de la maturité et des performances acquises par le DXVK au fil des ans, notamment grâce à des paramètres tels que la limite d'images par seconde, le contrôle de la synchronisation verticale, un affichage tête haute avec des statistiques de performance et des ajustements de comportement internes.
Principales nouveautés de D7VK 1.4
La version 1.4 de D7VK introduit Une série d'améliorations clés visant à assurer la compatibilité avec des jeux spécifiques et à peaufiner de petits détails du comportement graphique.Il n'y a pas de changement radical d'architecture, mais un ensemble d'améliorations qui, cumulées, rendent parfaitement jouables un certain nombre de titres « problématiques ».
Prise en charge des couleurs de transparence clés
L'un des principaux atouts de D7VK 1.4 est la mise en œuvre de prise en charge de la transparence des clés de couleur, une technique largement utilisée aux débuts de Direct3D Comme alternative économique aux tests alpha, une couleur spécifique était utilisée pour marquer les pixels transparents au lieu des canaux alpha. Cependant, des conversions incomplètes entraînaient la création de blocs de couleur opaques là où la transparence était attendue.
Grâce au travail de la communauté, et en particulier de @CkNoSFeRaTU, D7VK gère désormais correctement ce type de transparence des couleurs clésCela corrige les artefacts de couleur unie qui apparaissaient dans des titres comme Arx Fatalis, Messiah, Darkstone, Divine Divinity, Mortal Kombat 4 et un bon nombre d'autres jeux qui utilisaient cette astuce graphique à l'époque.
Interopérabilité améliorée avec DDraw et les jeux « à grosses têtes ».
Un autre domaine où des progrès significatifs ont été réalisés est celui des Consolidation de l'interopérabilité entre DDraw et les différentes versions prises en charge de D3DLes anciennes API DirectDraw et Direct3D étaient mélangées de manière très peu orthodoxe, et souvent les jeux faisaient des choses qui, du point de vue actuel, n'ont aucun sens.
Dans D7VK 1.4, un travail considérable a été consacré à unifier et renforcer la manière dont ces interactions entre DDraw et D3D7/6/5 sont géréesCela signifie que des jeux comme Plants vs Zombies et d'autres titres PopCap de la même époque sont passés d'un état instable ou injouable à un fonctionnement correct.
Grâce aux contributions de la communauté, ces problèmes ont également été corrigés. bugs liés à l'instanciation de DDraw via IClassFactoryCe défaut empêchait des jeux comme Re-Volt et Sea Dogs de fonctionner. Désormais, ces titres sont jouables, enrichissant ainsi le catalogue de jeux classiques compatibles avec la D7VK.
Améliorations de la profondeur, nettoyage et corrections pour certains jeux
En tirant parti des indices fournis par des collaborateurs tels que @Trass3r, dans D7VK 1.4, la prise en charge des effacements de profondeur initiés depuis DDraw a été ajoutée.Cette fonctionnalité, qui peut paraître assez spécifique, est essentielle pour que certains jeux gèrent correctement leur tampon de profondeur et n'affichent pas de problèmes de z-fighting ou d'éléments mal dessinés.
En outre, il a été incorporé Prise en charge préliminaire de la réécriture en profondeur, actuellement axée sur le format D16Cette amélioration a permis de corriger les problèmes d'occlusion des sources lumineuses dans des jeux comme Star Wars Episode I : Racer, où auparavant les lumières se comportaient de manière irréaliste ou ne se cachaient tout simplement pas lorsqu'elles auraient dû.
Le journal des modifications de D7VK 1.4 comprend également : Correction d'un plantage au démarrage de V-Rally 2 Expert EditionCette mise à jour inclut également des correctifs pour des cas particuliers susceptibles de provoquer des plantages, des blocages ou d'autres comportements anormaux dans les anciens jeux utilisant D3D ou DDraw. Parmi les titres concernés figurent Revenant, Powerslide et Slave Zero, ainsi qu'une solution de contournement spécifique pour un plantage potentiel lors du retour au menu principal de GTA 2.
Installation et utilisation de base du D7VK
Configurer et exécuter D7VK dans un préfixe Wine est relativement simple : copiez simplement le fichier ddraw.dll à côté du fichier exécutable du jeu ou de l'application puis configurez les paramètres de remplacement appropriés dans Wine pour utiliser cette DLL comme commande principale.
Plus précisément, dans winecfg doit ajouter une surcharge « native, intégrée » pour la bibliothèque ddraw Dans l'onglet Bibliothèques, veillez à bien préciser cet ordre exact. L'architecture n'a pas d'importance, car DDraw et ses anciens homologues D3D ont toujours été exclusivement en 32 bits.
Il y a aussi un Un chemin de déploiement alternatif est requis pour certains jeux spécifiques tels que GTA 2, StarLancer ou Midtown Madness 2.Dans ce cas, le nom doit être changé. ddraw.dll du système Wine à ddraw_.dll et copiez le ddraw.dll de D7VK au répertoire system32 o syswow64 au sein du préfixe, en fonction de son architecture (bits/s). D7VK tentera d'abord de charger ddraw_.dll à partir du chemin actuel avant de recourir à ddraw.dll du système, permettant ainsi aux deux parties de coexister.
D7VK peut également être utilisé sous Windows, bien que Ce n'est pas la plateforme principale pour laquelle il est développé ou testé.Dans ce cas, il suffit de copier. ddraw.dll Il est possible de le placer à côté du fichier exécutable du jeu, mais il est fortement déconseillé de le placer dans les répertoires système de Windows, car une véritable implémentation de DDraw est nécessaire et cela pourrait gravement endommager l'installation.
DXVK 1.4 : contexte et synergies avec D7VK
L'histoire du D7VK est étroitement liée à l'évolution du projet DXVK lui-même, qui constitue l'épine dorsale principale de la conversion Direct3D → Vulkan Pour les jeux plus modernes (notamment Direct3D 10 et 11), la version 1.4 de DXVK a représenté une avancée significative, influençant également l'intégration des couches telles que D7VK ou D8VK.
Mise à jour de DXVK 1.4 l'interface Direct3D 11 jusqu'à la version 11.4 incluse dans Windows 10 (build 1903)Cela a permis de résoudre des problèmes spécifiques à des jeux comme Plants vs. Zombies : La Bataille de Neighborville. Les nouvelles API introduites dans D3D 11.4 ne sont que partiellement implémentées, l’accent étant mis sur les fonctionnalités pertinentes au sein de l’architecture Vulkan existante.
Le Interface DXGI mise à jour vers la version 1.5, avec notamment la possibilité de vérifier la prise en charge HDR. (Bien que toujours sans sortie HDR native). De plus, des méthodes d'interaction DXGI-GDI ont été ajoutées qui, entre autres, facilitent le lancement de clients comme le Rockstar Game Launcher, à condition qu'ils soient accompagnés de correctifs Direct2D spécifiques dans Wine.
Améliorations des performances et des composants internes de DXVK 1.4
En termes de performances, DXVK 1.4 a apporté plusieurs optimisations intéressantes qui Elles affectent de nombreux jeux Direct3D 11, améliorant la fluidité et réduisant la charge du processeur.L'une des plus notables est l'activation par défaut de l'option d3d11.allowMapFlagNoWait, ce qui améliore les performances de certains titres en permettant une gestion plus efficace de certaines ressources mappées.
Ils ont également été résolus les problèmes qui ont empêché le lancement correct de The Witcher 3Le comportement de la synchronisation a été ajusté pour se rapprocher davantage de celui de la manette D3D11 d'origine. De plus, les éventuels goulots d'étranglement dans les jeux utilisant intensivement les contextes différés, tels que Dark Souls III et Sekiro: Shadows Die Twice, ont été corrigés.
DXVK 1.4 a considérablement amélioré Suivi des ressources internes, réduisant légèrement la consommation du processeur en gérant les tampons, les textures et autres éléments graphiques. Tout ce travail interne, bien que pas toujours visible pour l'utilisateur, prépare le terrain pour une intégration encore plus fluide avec des couches comme D7VK, qui nécessitent un moteur D3D9/D3D11 aussi robuste que possible.
Installation pratique de DXVK 1.4 sur Wine
Pour ceux qui souhaitent utiliser DXVK directement sur Wine, le flux de travail typique consiste en : Téléchargez le package DXVK stable, extrayez-le et exécutez son script d'installation sur le préfixe Wine souhaité.Par exemple, avec la version 1.4, vous pouvez faire quelque chose comme ceci :
Tout d'abord, le fichier est téléchargé à l'aide d'un outil comme wget à partir du lien GitHub officiel:
wget https://github.com/doitsujin/dxvk/releases/download/v1.4/dxvk-1.4.tar.gz
Le paquet est ensuite décompressé avec tar et accédez au dossier décompressé:
tar -xzvf dxvk-1.4.tar.gz
cd dxvk-1.4
Enfin, le script d'installation est exécuté sur le préfixe Wine actif en utilisant un simple sh setup-dxvk.sh install avec les privilèges appropriés:
sudo sh setup-dxvk.sh install
Le script permet également Utilisez l'implémentation DXGI de Wine au lieu de celle de DXVK. Si vous souhaitez utiliser vkd3d pour les jeux Direct3D 12 et DXVK pour Direct3D 11, vous pouvez le faire en exécutant :
setup-dxvk.sh install --without-dxgi
Une autre option pratique proposée par le scénario est installer les DLL en tant que liens symboliques (en utilisant l'option --symlink), ce qui simplifie grandement la mise à jour simultanée de plusieurs préfixes Wine : il suffit de mettre à jour une seule copie centrale de DXVK.
Si l'on considère l'ensemble, D7VK 1.4 et DXVK 1.4 Ils renforcent un écosystème dans laquelle Linux et Wine s'imposent comme une plateforme très sérieuse pour jouer aussi bien aux classiques Direct3D 5/6/7 qu'aux titres modernes D3D 10/11.Offrant des performances souvent étonnamment proches de celles de Windows et, surtout, une compatibilité de plus en plus étendue avec des API historiques que l'on croyait vouées à l'oubli.