CrossOver 23 prendra (difficilement) en charge DirectX 12 sur macOS

Anthony Nelzin-Santos |

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.

Image CodeWeavers.

« 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.

avatar joneskind | 

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 ?

avatar radeon | 

@joneskind

Si je ne dis pas de connerie ça permet justement de faire le lien entre directx et metal

avatar joneskind | 

@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…

avatar radeon | 

@joneskind

À vérifier, je ne suis vraiment pas sûr de mon coup.

avatar hawker | 

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.

avatar redchou | 

@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…

avatar joneskind | 

@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.

avatar redchou | 

@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 😉

avatar gasova | 

pour faire court,
DirectX12->MoltenVK->Metal ce qui n'est pas optimal,

il faudrait plutôt DirectX12->Metal...

avatar redchou | 

@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…

avatar joneskind | 

@gasova

Merci. C’est justement ce que je craignais

avatar hawker | 

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…

avatar joneskind | 

@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 ?

avatar v1nce29 | 

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é.

avatar radeon | 

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

avatar gasova | 

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.

avatar jujuhtst | 

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…

avatar joneskind | 

@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.

avatar Yoshi_1 | 

« porter des librairies en bloc »

Plutôt des bibliothèques (libraries en anglais, faux amis)

avatar Ghaleon111 | 

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

CONNEXION UTILISATEUR