lancement du projet , fournissant une implémentation de Direct3D 9, fonctionnant via la traduction des appels dans l'API graphique . Le projet est basé sur le code de projet , qui a été étendu avec le support de Direct3D 9. Par rapport à l'implémentation de Direct3D 9 basée sur WineD3D, D9VK permet d'obtenir de meilleures performances, car la traduction de Direct3D 9 via OpenGL est plus lente que celle via Vulkan.
D9VK peut être utilisé pour exécuter des applications et des jeux 3D sous Linux en utilisant Wine. La plupart des jeux basés sur Direct3D 9, utilisant la 2 ou 3 version de Shader Model, sont pris en charge. Le code du projet est sous la licence libre Zlib. Pour utiliser D9VK, des pilotes prenant en charge l'API Vulkan sont nécessaires, tels que AMD RADV 18.3+, NVIDIA 415.22+, Intel ANV 19.0+ et AMDVLK.
Améliorations principales :
- La possibilité d'utiliser plus de 4 Go de mémoire vidéo dans des applications 32 bits a été mise en œuvre, ce qui a résolu des problèmes lors de l'exécution des mods pour les jeux Skyrim et Oblivion ;
- Le traitement asynchrone de l'affichage du résultat de rendu à l'écran (étape de présentation) a été inclus. Pour réduire les latences dans le flux principal de rendu, le traitement de l'affichage est effectué dans le fil de soumission des commandes ;
- Des points de synchronisation superflus ont été éliminés dans le flux de commandes lors de l'extraction des données demandées ;
- Le code pour déterminer le temps interne a été traduit pour utiliser un minuteur spécifique à la plateforme, ce qui a aidé à résoudre les problèmes de comportement incorrect du high_resolution_clock de MinGW ;
- Le déchargement des tampons en attente MANAGED et SYSTEMMEM à l'étape avant l'exécution de PrepareDraw a été assuré, ce qui a résolu des problèmes de performance dans les jeux Risen et Legend of the Heroes: Trails of the Sky ;
- Ajout du support de , permettant un rendu correct dans les jeux SpinTyres et Mudrunner ;
- La compatibilité avec (D3D9Ex) a été améliorée. Les spécificités du traitement de ResetEx et Reset ont été prises en compte ;
- Un nettoyage et un refactoring du code ont été effectués ;
- Un mappage direct des tampons WRITEONLY a été assuré, ce qui peut avoir un effet positif sur les performances et contourner une erreur dans le jeu
Counter-Strike: Global Offensive, entraînant la poursuite de l'écriture dans le tampon après son déblocage ; - Une méthode a été mise en œuvre , permettant d'utiliser des boîtes de dialogue dans des applications en plein écran ;
- Le support est implémenté , y compris , nécessaire pour SWVP (SoftWare Vertex Processing) ;
- Le compteur d'échantillonneur affiché sur l'image actuelle (display heads-up, HUD) a été retravaillé ;
- Une option d3d9.dialogBoxMode a été ajoutée, que vous pouvez utiliser pour désactiver le mode plein écran.
- Des optimisations de performance ont été apportées et des problèmes ont été résolus lors du lancement des jeux GTA: San Andreas, The Masquerade Bloodlines, Max Payne 2, The Sims 2, Silent Hunter 3, Senran Kagura Shinovi, Dungeons and Dragons, Crysis, Metal Slug X, ANGLE, Need for Speed: Carbon et Risen 1.
Il convient également de noter développeur du projet (implémentation de DXGI, Direct3D 10 et Direct3D 11 sur l'API Vulkan) pour se concentrer temporairement uniquement sur la correction des bugs, en mettant en pause l'expansion des fonctionnalités. Ce désir par des inquiétudes concernant la qualité du code et la complexité de la maintenance à l'avenir. Chaque mise à jour de la branche 1.4.x entraîne des plaintes concernant des changements régressifs qui ne peuvent pas être reproduits, localisés et corrigés.
Ces problèmes nécessitent une analyse des causes de leur apparition, sinon les laisser non corrigés tout en continuant à développer des fonctionnalités pourrait aggraver la situation et rendre la maintenance cauchemardesque. Parmi les plans que le développeur DXVK envisage de mettre en œuvre avant de passer en mode correction de bugs uniquement, figure l'ajout de la prise en charge de certaines extensions utiles de Vulkan et la fusion avec les travaux du projet D9VK.
Complément : à chaud une version corrective de D9VK 0.40.1, dans laquelle la valeur par défaut pour COLOR0 dans les shaders de vertex est passée à vec4(1) et un bug a été corrigé où les bits des slots pour les sorties du shader étaient incorrectement appliqués par défaut et donc corrigés incorrectement par le backend, entraînant leur remplacement par vec4(0).
Source : opennet.ru
