CrossOver 23 prendra (difficilement) en charge DirectX 12 sur macOS
Depuis novembre 2021, CodeWeavers s’est donné pour mission d’apporter DirectX 12 à macOS par l’entremise de CrossOver. Dix-huit mois plus tard, l’entreprise américaine se félicite d’être capable « de faire tourner Diablo II: Resurrected sur des versions pre-alpha de CrossOver 23 », qui doit être commercialisé dans le courant de l’été. Un immense progrès qui ne doit pas faire oublier les défis encore plus immenses qui s’annoncent.

« Il reste encore des bugs », explique la product manager Meredith Johnson, « mais le simple fait que cela tourne est déjà une grande victoire ». CodeWeavers n’a pas trouvé de « clé magique » qui ouvrirait grand la porte de DirectX 12 sur macOS, mais a dû corriger « une multitude de bugs concernant MoltenVK et SPIRV-Cross » avant de pouvoir faire tourner Diablo II: Resurrected.
Pour faire tourner les applications Windows sur macOS et Linux avec CrossOver, CodeWeavers préfère trouver des solutions génériques et porter des librairies en bloc. Les choses ont toujours été plus complexes avec les jeux : « nous devrons prend en charge titre après titre », explique Johnson, « et chaque jeu impliquera probablement plusieurs bugs ». À quelle vitesse l’équipe peut-elle progresser ? Réponse cet été avec la commercialisation de la version finale de CrossOver 23.
Pardonnez moi si j’ai raté un épisode, mais quel est le lien entre DirectX12 et MoltenVK ? Dans mon souvenir MoltenVK est un framework qui traduit Vulkan en Metal, non ?
@joneskind
Si je ne dis pas de connerie ça permet justement de faire le lien entre directx et metal
@radeon
Donc CrossOver utiliserait MoltenVK pour faire tourner DirectX ? On aurait donc une première traduction DirectX => Vulkan puis une seconde Vulkan => Metal (via MoltenVK) ?
C’est pas fou comme solution…
@joneskind
À vérifier, je ne suis vraiment pas sûr de mon coup.
Je pense que en effet, c’est VKD3D qui est utilisé dans ce cas pour convertir dx12 call en Vulkan call et apres moltenVK. C’est pas ouff, merci Apple d’avoir bloque Vulkan… comme d’hab cette boite la joue perso et tout le monde galere a cause d’eux.
@joneskind
Leur solution tourne sous macOS et Linux, je pense donc qu’elle utilise Vulkan, d’où la nécessité de pouvoir faire tourner du « code Vulkan » sur macOS…
@redchou
Oui, je comprends bien l’intérêt de MoltenVK et la problématique pour CrossOver.
Ce que je ne comprends pas c’est le lien avec le titre de l’article.
On parle de DirectX, pas de Vulkan.
Mon inquiétude c’est que CrossOver utilise MoltenVK après avoir d’abord traduit DirectX12 en Vulkan.
On aurait alors 2 couches d’abstraction supplémentaires pour faire tourner DirectX sur CrossOver, ce qui serait alors catastrophique pour les performances.
D’où ma question.
@joneskind
En fait, CrossOver permet de faire tourner du code DirectX 12. Leur code est en Vulkan et pour faire tourner crossover il faut faire tourner le code Vulkan sous macOS…
MoltenVK ne traduit pas du code DirectX en Vulkan, il permet juste de traduire le code Vulkan en Metal.
Il n’y a pas vraiment 2 couches d’abstraction, c’est juste des étapes, le code reste « natif », mais après, les performances seront forcément impactées dans le sens où pas forcément optimisé spécifiquement en Metal.
Je poste, j’ai bien compris que tu as compris au fur à mesure des autres commentaires et des édits 😉
pour faire court,
DirectX12->MoltenVK->Metal ce qui n'est pas optimal,
il faudrait plutôt DirectX12->Metal...
@gasova
Leur solution tourne sous Vulkan, ça permet de partager le code entre Linux et macOS. C’est déjà bcps de boulot, vu le temps passé, alors faire une solution en Vulkan et une autre en Metal…
@gasova
Merci. C’est justement ce que je craignais
Bah, paye le dev de cette api pour les 2000 mac gamers. Ou plutot contact Apple pour qu’ils arrêtent leur sectarisme et ouvre la voie au drivers Vulkan…
@hawker
"Bah, paye le dev de cette api pour les 2000 Mac gamers"
L'autre jour j'échangeais sur Reddit au sujet des gamers sur Mac, en regardant les stats de Steam. Du coup je me permets de communiquer les infos qu'on a remonté:
SteamOS (Steam Deck) c'est 3 millions d'utilisateurs
Steam sur Linux c'est 13M d'utilisateurs SteamOS compris
Steam sur Mac c'est 26M d'utilisateurs
Steam sur Windows c'est 960M d'utilisateurs
Je t'invite à prendre le temps de comparer les performances des (rares) jeux AAA à avoir été optimisés pour macOS/Metal avec leur équivalent Windows, comparativement à la puissance brute des GPU (en TFLops). Metal est une pure folie.
Donc non. Vulkan ça facilite le développement cross-platform, mais ça reste très moyen en comparaison.
Et si on devait suivre ton raisonnement jusqu'au bout, pourquoi se faire chier avec 40M d'utilisateurs quand t'en as près d'un milliard sur Windows/DirectX ?
Parce que wine sert à faire tourner des programmes windows (généralement) sur des plateformes non windows ?
Parce que Linux est plus proche de leur philosophie pro opensource et que le Mac n'est qu'un à-côté.
D’ailleurs il y a un patcher assez connu pour molten dans crossover qui permet d’accéder à certains titres qui sinon ne fonctionnent pas avec crossover.
C’est grâce à ça que je fais tourner stray sur mon mac, sans ça le jeu se lance mais avec un écran noir.
https://github.com/italomandara/CXPatcher
clair, mais ce n'est pas une solution optimale, il faut pas chercher des miracles en faisant comme ça. Il devraient mettre en place 2 équipes une pour linux avec le support de Vulcan une pour macOS pour le support de Metal.
Bon, il faudrait surtout que les applis sortent en natif sur mac et linux, ça éviterait de devoir utiliser wine (crossover / proton)
Et dans un sens, avoir Wine qui fonctionne bien est un problème, car que ça ne pousse pas à proposer du natif…
@jujuhtst
Bah en fait c'est pas compliqué.
- Soit tu vises le multiplateforme et tu choisis Unity3D ou Unreal Engine, avec un truc un peu moins sur mesure.
- Soit tu décides de faire ton propre moteur et dans ce cas tu choisis la meilleure techno pour ta plateforme.
« porter des librairies en bloc »
Plutôt des bibliothèques (libraries en anglais, faux amis)
Le jeu sur linux prend beaucoup d’ampleur grâce a steam qui est a fond dans l’open source et donc vulkan et contribue au gaming sur linux en améliorant proton depuis qu’il vend le steamdeck.
Linux qui en général, les distrib sont hyper optimisés et tourne sur des vieux coucou même avec les nouvelles belles interfaces et maintenant le gaming est de haut niveau ! Décidément il ne manque que la suite office sur linux (quoique only office multiplateforme fait le taff en étant parfaitement compatible avec les fichiers de la suite Microsoft) et deux ou trois logiciels pro
C’est fou pour un os gratuit